欢迎访问我的GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
《dubbo实战》系列导航准备和初体验
与SpringBoot集成
管理控制台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>