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:2181admin.root.user.name=root
admin.root.user.password=root
#group
admin.registry.group=dubbo
admin.config-center.group=dubbo
admin.metadata-report.group=dubboadmin.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
设置node仓库
npm config set registry https://registry.npm.taobao.org
- 启动前端首先要安装nodejs
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