Dubbo
简介
一款高性能Java RPC框架。
特性:面向接口RPC调用、智能负载均衡、服务注册与发现、高度可扩展、灰度发布等。
Dubbo架构
分为注册中心、服务提供者、服务消费者、监控中心。
- 服务提供者向注册中心注册自己,使得注册中心能够感知服务提供者的存在。
- 服务消费者向注册中心进行订阅,告知注册中心自己需要哪些服务,注册中心会通知服务消费者哪些服务上线/下线。
- 服务消费者能够直接通过RPC调用(invoke)服务。
- 监控中心会定期的收集统计服务的运行状态。
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/
负载均衡
服务降级
服务器流量较大时,可以牺牲少部分应用直接返回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/
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!