Dubbo

2023-12-26 15:54:59

简介

一款高性能Java RPC框架。
特性:面向接口RPC调用、智能负载均衡、服务注册与发现、高度可扩展、灰度发布等。

Dubbo架构

分为注册中心、服务提供者、服务消费者、监控中心。

  1. 服务提供者向注册中心注册自己,使得注册中心能够感知服务提供者的存在。
  2. 服务消费者向注册中心进行订阅,告知注册中心自己需要哪些服务,注册中心会通知服务消费者哪些服务上线/下线。
  3. 服务消费者能够直接通过RPC调用(invoke)服务。
  4. 监控中心会定期的收集统计服务的运行状态。
    在这里插入图片描述

Zookeeper安装(docker)

Dubbo可以选用Zookeeper作为注册中心,这里选用docker进行安装。

docker pull zookeeper #拉取镜像
docker run -d -e TZ="Asia/Shanghai" -p 2181:2181 -v /root/docker/zookeeper:/data --name zookeeper --restart always zookeeper #启动zookeeper服务

相关参数解释:

-e TZ=“Asia/Shanghai” # 指定上海时区
-d # 表示在一直在后台运行容器
-p 2181:2181 # 对端口进行映射,将本地2181端口映射到容器内部的2181端口
–name # 设置创建的容器名称
-v # 将本地目录(文件)挂载到容器指定目录;
–restart always #始终重新启动zookeeper

测试是否成功:
docker ps 看看是否成功运行。

 docker exec -it zookeeper bash      //只登录容器,不登录 zkCli
./bin/zkCli.sh    //执行脚本新建一个Client,即进入容器
ls /     //查询根目录下的节点,如果查询到zookeeper节点就成功了

dubbo-admin安装

dubbo-admin可以作为dubbo的监控器,web界面实时查看dubbo应用情况。

docker pull chenchuxin/dubbo-admin
docker run -d \
    --name dubbo-admin \
    -v /root/docker/dubbo-admin:/data \
    -p 8180:8080 \
    -e dubbo.registry.address=zookeeper://172.17.0.2:2181 \
    -e DUBBO_ROOT_PASSWORD=root \
    -e DUBBO_GUEST_PASSWORD=guest \
    --restart=always \
    chenchuxin/dubbo-admin

注意:这里的zookeeper IP需要根据实际来配置,因为zookeeper是使用的docker配置,可用下面命令来查询所有docker容器ip

docker inspect -f='{{.Name}} {{.NetworkSettings.IPAddress}} {{.HostConfig.PortBindings}}' $(docker ps -aq)
# 注意 -e DUBBO_REGISTRY=zookeeper://ip:port  填写自己的zookeeper ip和端口号
# -e DUBBO_ROOT_PASSWORD 配置控制台root账号 密码
# -e DUBBO_GUEST_PASSWORD 配置控制台guest账号 密码
#-v 是宿主机与容器的挂载目录
#-p 是访问的端口号

配置成功后即可通过浏览器访问管理界面:
http://localhost:8180/
在这里插入图片描述

简单dubbo rpc测试程序

spring的程序可以参考官网的快速入门。
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/quick-start/spring-xml/
springboot:https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/quick-start/spring-boot/
最后得到输出即成功。
在这里插入图片描述

启动时检查

Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check=“true”。
添加链接描述

本地存根

远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑。
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-stub/

直连提供者

绕过zookeeper注册中心,dubbo提供者消费者之间直接通信。
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/explicit-target/

负载均衡

https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/loadbalance/

服务降级

服务器流量较大时,可以牺牲少部分应用直接返回null,来保证核心应用的正常运行。
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/service-downgrade/

集群容错

在服务调用失败后的处理方式
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/fault-tolerent-strategy/

文章来源:https://blog.csdn.net/weixin_44866921/article/details/135133312
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。