虽然微服务已经流行起来了,但是由于公司很多架构仍然是采用dubbo+zookeeper搭配组合实现分布式项目架构,所以这里还是象征性写个笔记,以后可以用来回味,博客基于当时最新稳定版而写的,后续版本有变化,请自行留意.(springboot2.3.4+dubbo2.7+zookeeper3.6.2)
在下面的环境部署成功后,由于示例代码太多,所以直接放在了码云上 :https://gitee.com/zhang-xiao-xiang/zxx-dubbo
搭建zookeeper服务注册中心,为接收dubbo的服务注册作准备
找到官网选择下载,这个Windows版本和Linux版本是混合在一个压缩包的,所以一箭双雕哈.我的zookeeper版本是3.6.2
下载地址: https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
新建文件夹data和文件夹log,并在配置文件zoo.cfg(默认是zoo_sample.cfg,需要改名字为zoo.cfg)的13行左右,配置数据路径和日志路径(这里以Windows版本为例,所以改了一下)

#配置文件数据和日志路径(注意在文件根目录下创建这两个文件夹)
dataDir=../data
dataLogDir=../log
启动方式

启动成功如图

客户端连接成功如图(注意,客户端连接会占用8080端口,所有注意一下,要么测试客户端可以连接,然后就关掉CMD窗口,因为dubbo默认端口也是8080,当然后面的8080端口也可以修改一下,看自己选择)

安装dubbo监控台,监控自身服务情况
先到官网下载 https://github.com/apache/dubbo-admin ,推荐使用idea的git方式下载,初识化过程如图(之所以要打包是因为需要把前端项目也打包上去),这里版本是dubbo-admin 2.7.7

然后启动 DubboAdminApplication 即可(本来zookeeper也有控制台,但是不好用,阿里已经提供了监控自己的服务,已将足够完善了,和nacos注册中心,eureka注册中心的控制台风格基本上一致的),测试访问监控台 http://localhost:8081/#/

编写项目代码(只看流程就行了,不然会觉得有点乱)
由于项目拆分或者结构可能不完全一样,所以仅参考,要是弄得太复杂了反而不利于入门,我的项目结构大致如下

一:公共模块(写一些公共类模块即可)

二:服务接口模块(提出来的一个模块,基本上不需要怎么配置)
1:添加依赖
<!-- 添加dubbo依赖 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.7</version>
</dependency>
<!--添加公共模块-->
<dependency>
<groupId>com.zhang</groupId>
<artifactId>zxx-dubbo-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
2:写几个接口即可

三:服务停过模块(就是服务接口实现类模块)
1:添加主要依赖
<!-- 添加dubbo依赖 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.7</version>
</dependency>
<!--zookeeper 注册中心客户端引入 使用的是curator客户端 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>2.7.4.1</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--添加公共依赖-->
<dependency>
<groupId>com.zhang</groupId>
<artifactId>zxx-dubbo-interface</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
2:编写配置文件
# Spring boot 引用名称和端口号
spring.application.name=zxx-dubbo-provider
server.port=7001
# dubbo扫描包,扫描服务实现类
dubbo.scan.base-packages=com.zhang.zxx.dubbo.provider.serviceimpl
# Dubbo应用名称,默认和Spring boot名称一样
dubbo.application.name=${spring.application.name}
# Dubbo协议和端口
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
##新版本2.7说明 https://github.com/apache/dubbo-admin/wiki/Dubbo-Admin%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E
admin.config-center="zookeeper://127.0.0.1:2181
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.metadata-report.address=zookeeper://127.0.0.1:2181
3:添加相关注解(注意新版本有的注解也更新了,例如@Service更新成@DubboService,终于不会和spring提供的@Service搞混淆了)服务实现类接口加@DubboService和启动类加上@EnableDubbo

三:服务消费模块
1:添加主要依赖
<!-- 添加dubbo依赖 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.7</version>
</dependency>
<!--zookeeper 注册中心客户端引入 使用的是curator客户端 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>2.7.4.1</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--添加公共依赖-->
<dependency>
<groupId>com.zhang</groupId>
<artifactId>zxx-dubbo-interface</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
2:编写配置文件
# Spring boot application 应用名称
spring.application.name=zxx-dubbo-consumer
server.port=7002
# Dubbo Application dubbo应用名称,默认和Spring boot application 应用名称一样
dubbo.application.name=${spring.application.name}
##新版本说明 https://github.com/apache/dubbo-admin/wiki/Dubbo-Admin%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E
admin.config-center="zookeeper://127.0.0.1:2181
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.metadata-report.address=zookeeper://127.0.0.1:2181
3:添加注解(启动类@EnableDubbo和控制层调用的@DubboReference,这个注解可以调用暴露的服务)

以上步骤基本完成了项目的搭建,启动zookeeper注册中心和dubbo admin控制台项目,再启动服务提供模块和访问调用模块即可测试

测试示例

以上就是全过程,当然可以继续优化,处于入门目的,就为了简单,就这么搭建出来的,如果感觉代码有点乱,可以下载码云的项目对着测试 https://gitee.com/zhang-xiao-xiang/zxx-dubbo
1406

被折叠的 条评论
为什么被折叠?



