文章目录版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://sunkuan.blog.csdn.net/article/details/120502052
- 一、dubbo-demo
- 1、增加 Zookeeper 依赖
- 2、Maven依赖
- 二、dubbo-api
- 1、pom.xml
- 三、dubbo-provider
- 1、application.yml(单机)
- 2、application.yml(集群)
- 四、dubbo-consumer
- 1、application.yml
- 2、application.yml(集群)
- 五、测试程序
- 六、程序代码
之前 《【Dubbo笔记整理五】SpringBoot整合Dubbo(Multicast)》 我介绍过如何使用 SpringBoot 整合 Dubbo,只是那篇博客中使用的是 Multicast 注册中心,而本篇博客我们换成 Zookeeper 注册中心,改动的地方不大,我只将改动的地方演示,其他代码请去上篇博客中查看。
一、dubbo-demo 1、增加 Zookeeper 依赖
4.0.0 pom dubbo-provider dubbo-consumer dubbo-api org.springframework.boot spring-boot-starter-parent 2.5.4 com.demo dubbo-demo 0.0.1-SNAPSHOT dubbo-demo Demo project for Spring Boot 1.8 2.7.3 org.apache.dubbo dubbo-spring-boot-starter ${dubbo.version} org.apache.dubbo dubbo-dependencies-zookeeper ${dubbo.version} pom org.springframework.boot spring-boot-maven-plugin
2、Maven依赖
二、dubbo-api 1、pom.xml
4.0.0 com.demo dubbo-demo 0.0.1-SNAPSHOT com.demo dubbo-api 0.0.1-SNAPSHOT dubbo-api Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-web org.apache.dubbo dubbo-spring-boot-starter org.apache.dubbo dubbo-dependencies-zookeeper pom org.springframework.boot spring-boot-maven-plugin
三、dubbo-provider 1、application.yml(单机)
#防止端口冲突
server:
port: 8001
dubbo:
application:
# 应用名称
name: provider
registry:
# 注册中心地址
address: zookeeper://127.0.0.1:2181
# 超时时间,单位毫秒
timeout: 6000
# 元中心地址
metadata-report:
address: zookeeper://127.0.0.1:2181
protocol:
#协议名称
name: dubbo
#协议端口
port: 20880
scan:
#扫描包的位置
base-packages: com.demo.service
2、application.yml(集群)
#防止端口冲突
server:
port: 8001
dubbo:
application:
# 应用名称
name: provider
registry:
# 注册中心地址
address: zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183
# 超时时间,单位毫秒
timeout: 6000
# 元中心地址
metadata-report:
address: zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183
protocol:
#协议名称
name: dubbo
#协议端口
port: 20880
scan:
#扫描包的位置
base-packages: com.demo.service
四、dubbo-consumer 1、application.yml
#防止端口冲突
server:
port: 8002
dubbo:
application:
# 应用名称
name: consumer
registry:
# 注册中心地址
address: zookeeper://127.0.0.1:2181
2、application.yml(集群)
#防止端口冲突
server:
port: 8002
dubbo:
application:
# 应用名称
name: consumer
registry:
# 注册中心地址
address: zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183
五、测试程序
先执行 DubboProviderApplication ( 服务提供者程序),再执行 DubboConsumerApplication ( 服务消费者程序),执行效果如下:
通过上面的执行结果可以看到, 服务提供者 将服务注册到了 2183 服务器上,而 服务消费者 从 2182 服务器上拿到服务。
关于注册到哪个服务器上是随机分配的,有可能这次是 2183,下次可能就是 2182 或 2181 了;服务消费者也是一样,有可能这次是 2182,下次可能会是 2181 或者 2183。
不管服务提供者将服务注册到哪个服务器上,其他服务器不轮主从都会进行同步,这就是 Zookeeper 中的主从节点同步状态。给大家补充一个小知识,Zookeeper 怎么保证主从节点的状态同步?
Zookeeper 的核心是原子广播,这个机制保证了各个 Server 之间的同步。实现这个机制的协议叫做 zab 协议。zab 协议有两种模式,分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,zab 就进入了恢复模式,当领导者被选举出来,且大多数 server 完成了和 leader 的状态同步后,恢复模式就结束了。状态同步保证了 leader 和 server 具有相同的系统状态。
六、程序代码
本文代码的下载链接:https://download.csdn.net/download/sun8112133/24821073



