springboot2整合dubbo,以zookeeper为注册中心

虽然微服务已经流行起来了,但是由于公司很多架构仍然是采用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

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值