dubbo实战之三:使用Zookeeper注册中心

欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

dubbo实战》系列导航

准备和初体验

与SpringBoot集成

使用Zookeeper注册中心

管理控制台dubbo-admin

本篇概览

本文是《dubbo实战》系列的第三篇,主要内容是使用Zookeeper作为注册中心的实战;

前面两篇的实战都是使用了广播模式,整个环境由服务提供者和服务消费者组成,这种简单形态只是为了方便学习,实际上多数情况都会部署注册中心,服务提供者在上面注册,服务消费者再从注册中心得到具体的服务信息;

下面是个典型的提供者、消费者、注册中心的典型架构图:

在这里插入图片描述

如下图所示,dubbo官方推荐的注册中心是Zookeeper:

在这里插入图片描述

关于Zookeeper

本次使用了单节点Zookeeper,版本3.4.13,IP192.168.50.43,端口2181

关于Zookeeper的部署,我这边是通过docker快速部署的,参考文章《群晖DS218+部署kafka》

如果您部署好了Zookeeper,接下来开始编写服务提供者和消费者的代码;

源码下载

如果您不想编码,可以在GitHub下载所有源码,地址和链接信息如下表所示:

名称 链接 备注
项目主页   https://github.com/zq2599/blog_demos   该项目在GitHub上的主页  
git仓库地址(https)   https://github.com/zq2599/blog_demos.git   该项目源码的仓库地址,https协议  
git仓库地址(ssh)   git@github.com:zq2599/blog_demos.git   该项目源码的仓库地址,ssh协议  

这个git项目中有多个文件夹,本章的应用在dubbopractice文件夹下,如下图红框所示:

在这里插入图片描述


3. dubbopractice是父子结构的工程,本篇的代码在springbootzkprovider和springbootzkconsumer这两个子工程中,如下图:

在这里插入图片描述

编码(服务提供方)

先创建提供服务的工程springbootmulticastprovider,一共要创建4个文件,创建顺序和功能如下表:

创建顺序 文件名 作用
1   pom.xml   工程的pom文件  
2   src/main/resources/application.yml   配置文件  
3   DemoServiceImpl.java   提供具体的服务  
4   SpringBootZKProviderApplication.java   启动类  

完整的文件位置如下图:

在这里插入图片描述

接下来逐个创建上述内容;

创建名为springbootmulticastprovider的子工程,pom.xml内容如下,要重点关注的是新增依赖dubbo-spring-boot-starter,这就是dubbo在SpringBoot环境的starter依赖,还有Zookeeper的依赖dubbo-dependencies-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 "> <parent> <artifactId>dubbopractice</artifactId> <groupId>com.bolingcavalry</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>com.bolingcavalry</groupId> <artifactId>springbootzkprovider</artifactId> <version>1.0-SNAPSHOT</version> <name>springbootzkprovider</name> <description>Demo project for dubbo service provider from Spring Boot</description> <!--不用spring-boot-starter-parent作为parent时的配置--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.3.3.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.bolingcavalry</groupId> <artifactId>practiceinterface</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-dependencies-zookeeper</artifactId> <type>pom</type> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${springboot.version}</version> </plugin> </plugins> </build> </project>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssgwz.html