Springboot整合dubbo2.7.7
- pom.xml文件中添加依赖
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.7</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.10</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.9</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
- 写application.properties配置文件
spring.application.name=dubbo-test-provider
dubbo.application.id=dubbo-test-provider
dubbo.application.name=dubbo-test-provider
dubbo.registry.address=zookeeper://192.168.1.140:2181
dubbo.server=true
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
server.port=8090
- 启动类代码,记得加上@EnableDubbo,这个注解是配置dubbo扫描的包路径,没有注解的话记得在配置文件中加上dubbo的扫描路径
@SpringBootApplication
@EnableDubbo
@Slf4j
public class ProducerApplication {
public static void main(String[] args) {
SpringApplication.run(ProducerApplication.class, args);
}
}
- provider代码,在dubbo2.7.7版本中原来的@Service注解变成了@DubboService注解了
@Component
@DubboService(interfaceClass = IUserService.class)
public class UserService implements IUserService {
@Override
public String sayHello(String name) {
return "hello: " + name;
}
}
启动dubbo-admin监控中心
最新版的dubbo-admin已经使用了前后端分类,后端用了springboot。
- 下载路径
https://github.com/apache/dubbo-admin.git - 把工程导入idea,修改dubbo-admin-server的配置文件就可以启动后台项目
# centers in dubbo2.7
#admin.registry.address=zookeeper://192.168.1.140:2181
admin.config-center=zookeeper://192.168.1.140:2182
#admin.metadata-report.address=zookeeper://192.168.1.140:2181
admin.root.user.name=root
admin.root.user.password=root
#group
admin.registry.group=dubbo
admin.config-center.group=dubbo
admin.metadata-report.group=dubbo
admin.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
admin.apollo.appId=test
admin.apollo.env=dev
admin.apollo.cluster=default
admin.apollo.namespace=dubbo
#compress
server.compression.enabled=true
server.compression.mime-types=text/css,text/javascript,application/javascript
server.compression.min-response-size=10240
- dubbo-admin-ui 前端的启动
- 启动前端首先要安装nodejs
https://nodejs.org/en/ 下载安装即可 - 启动: npm run dev
- 启动前端首先要安装nodejs
# 设置node仓库
npm config set registry https://registry.npm.taobao.org
dubbo-admin上看不到服务提供者如何定位问题
使用nacos注册中心
nacos上能看到provider但是dubbo-admin上看不到是怎么一回事呢?
在dubbo-admin上调试发现它请求nacos获取provider信息的时候有传递一个参数group,值是dubbo,再看nacos上面的provider的group是DEFAULT_DUBBO,这两个group不匹配导致获取不到provider。
解决方法,修改dubbo-admin-server配置文件中的group。
admin.registry.group=DEFAULT_DUBBO
使用zookeeper作为注册中心
- 首先查看zookeeper上是否已经有服务提供者的信息
# 使用以下命令登录zookeeper客服端
bin/zkCli.sh
# 使用ls /查看节点,有dubbo或者default-dubbo类似的,再查看下层目录,我这里是有dubbo
# 可以看到provider的相关信息,说明provider已经注册上去
[zk: localhost:2181(CONNECTED) 5] ls /dubbo
[com.libin.dubbo.IUserService, config, metadata]
- 检查dubbo-admin的group与zookeeper中的首节点是否一样,不一样的话改成一样
- zkCli设置value时不能有换行,那如何把换行设置到value中去呢
bin/zkCli.sh set /dubbo/config/dubbo/dubbo.properties "dubbo.registry.address=zookeeper://192.168.1.140:2181
dubbo.metadata-report.address=zookeeper://192.168.1.140:2181"
- 为了避免group不一样的问题,我们可以在服务提供者的配置文件中设置group名
dubbo.registry.group=ccc