Springboot+dubbo+zookeeper环境搭建
文章目录
最近折腾了一下这个,网上搜索了一些资料,发现很多比较旧,发现集成时出现各种问题。经过我亲自试验,使用maven集成时,pom文件引入大概有2种方式。
我的版本配置如下:
springboot版本:2.1.8.RELEASE
dubbo版本:2.7.5
zookeeper版本:3.4.8
第一步,创建项目,引入依赖包
1、创建项目
zookeeper的安装,这里我就不再详细介绍了。
zookeeper下载地址
我这里安装的是windows版本的,然后,打开安装文件的bin目录,点击zkServer.cmd启动zookeeper
然后再idea中创建根项目,然后再创建3个sprngboot项目module,api接口的module名为common,服务提供的module为provide-user,消费者module为consumer-user.其它的忽略,那是我测试的。
2、pom文件引入dubbo和zookeeper相关依赖
这里依赖有2种方式,也是我踩坑的地方。
在provide-user模块中的pom文件加入如下代码;
2.1 方式一
<!--dubbo相关依赖 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.5</version>
</dependency>
<!--zookeeper相关依赖 -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.11</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>
遇到的问题一: 在网上看的很多都说只引入dubbo-spring-boot-starter和zkclient,发现报错,找不到相关的class文件,需要引入curator-recipes包。
遇到问题二: 还有在引入zkclient时,最好把日志的依赖排除掉(exclusion),我测试时,发现日志容易冲突。
2.2 方式二
直接引入如下2个依赖就好
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.5</version>
</dependency>
<!-- Zookeeper dependencies -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>2.7.5</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
dubbo-dependencies-zookeeper中其实已经包含了curator-recipes包
consumer-user也添加同样的依赖。
第二步,配置application.properties或者application.yml文件
在provide-user中添加如下配置
dubbo.application.name=provider-user
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.scan.base-packages=com.fm.todo.service
dubbo.application.name为应用名
dubbo.registry.address为注册中心地址
dubbo.scan.base-packages为服务暴露的包
这里配置详解可查看dubbo的官网,dubbo官方中文地址
在consumer-user中添加如下配置,和provide-user类似
dubbo.application.name=consumer-user
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.scan.base-packages=com.fm.todo.service
第三步,添加服务提供者代码
打开common模块,添加服务接口代码
public interface ITodoUserService{
String hello();
}
在provide-user中依赖common模块,然后添加实现类
@Service
public class TodoUserServiceImpl implements ITodoUserService{
@Override
public String hello() {
return "hello";
}
}
注意,这个@Service是dubbo的注解,全包路径为org.apache.dubbo.config.annotation.Service
然后,启动服务提供者模块项目,springboot默认配置端口为8080,注意不要端口冲突。
第四步,添加消费者代码
在consumer-user中依赖common模块,然后添加一个controller接口调用服务service
@RestController
@RequestMapping("/todoUser")
public class TodoUserController {
@Reference
ITodoUserService todoUserService;
@RequestMapping("/hello")
public String hello(){
String hello=todoUserService.hello();
return hello;
}
}
注意:这里使用@Reference,注入todoUserService,如果有新旧版本,可带上版本号,这个可在dubbo官网上看到。
然后启动消费者代码。
第五步,打开dubbo-admin查看服务是否注册成功
dubbo-admin的下载地址
下载配置好后,启动dubbo-admin,打开浏览器输入http://127.0.0.1:7001/,端口号自己配置的。
这里就可以看到我们的服务已经注册成功了。
我们打开浏览器输入接口地址测试一下
这里可以看到接口已经调用成功了。
好了,到这里,就结束了。
最后的最后,疫情期间,武汉加油!全国加油!