赞
踩
虽然微服务已经流行起来了,但是由于公司很多架构仍然是采用dubbo+zookeeper搭配组合实现分布式项目架构,所以这里还是象征性写个笔记,以后可以用来回味,博客基于当时最新稳定版而写的,后续版本有变化,请自行留意.(springboot2.3.4+dubbo2.7+zookeeper3.6.2)
在下面的环境部署成功后,由于示例代码太多,所以直接放在了码云上 :https://gitee.com/zhang-xiao-xiang/zxx-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端口也可以修改一下,看自己选择)
先到官网下载 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。