【Dubbo笔记整理七】SpringBoot整合Dubbo(Zookeeper) 绝地灬酷狼 2022-09-13 04:03 143阅读 0赞 > 版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢! > 本文网址:[https://sunkuan.blog.csdn.net/article/details/120502052][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)》][Dubbo_SpringBoot_Dubbo_Multicast] 我介绍过如何使用 **SpringBoot 整合 Dubbo**,只是那篇博客中使用的是 **Multicast 注册中心**,而本篇博客我们换成 **Zookeeper 注册中心**,改动的地方不大,我只将改动的地方演示,其他代码请去上篇博客中查看。 -------------------- # 一、dubbo-demo # ## 1、增加 Zookeeper 依赖 ## <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <packaging>pom</packaging> <modules> <module>dubbo-provider</module> <module>dubbo-consumer</module> <module>dubbo-api</module> </modules> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.demo</groupId> <artifactId>dubbo-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>dubbo-demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <dubbo.version>2.7.3</dubbo.version> </properties> <dependencyManagement> <dependencies> <!-- dubbo依赖 --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>${dubbo.version}</version> </dependency> <!--zookeeper 注册中心客户端引入 curator客户端 --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-dependencies-zookeeper</artifactId> <version>${dubbo.version}</version> <type>pom</type> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> ## 2、Maven依赖 ## ![07Maven依赖][07Maven] -------------------- # 二、dubbo-api # ## 1、pom.xml ## <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.demo</groupId> <artifactId>dubbo-demo</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.demo</groupId> <artifactId>dubbo-api</artifactId> <version>0.0.1-SNAPSHOT</version> <name>dubbo-api</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- dubbo依赖 --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> </dependency> <!--zookeeper 注册中心客户端引入 curator客户端 --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-dependencies-zookeeper</artifactId> <type>pom</type> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> -------------------- # 三、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** *( 服务消费者程序)*,执行效果如下: ![07测试][07] ![07测试2][07_2] > 通过上面的执行结果可以看到, 服务提供者 将服务注册到了 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][https_download.csdn.net_download_sun8112133_24821073] *博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!* [https_sunkuan.blog.csdn.net_article_details_120502052]: https://sunkuan.blog.csdn.net/article/details/120502052 [Dubbo_SpringBoot_Dubbo_Multicast]: https://sunkuan.blog.csdn.net/article/details/120501599 [07Maven]: /images/20220828/02dc46df30b14c36bb4c7c0e76a7ad64.png [07]: /images/20220828/147fddeb825b4c44bc7f58187fae60da.png [07_2]: /images/20220828/f8bae18596634943aef2801282b2e421.png [https_download.csdn.net_download_sun8112133_24821073]: https://download.csdn.net/download/sun8112133/24821073
还没有评论,来说两句吧...