Springboot整合dubbo2.7.7

Springboot整合dubbo2.7.7

  • pom.xml文件中添加依赖
        <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubbo-spring-boot-starterartifactId>
            <version>2.7.7version>
        dependency>
        
        <dependency>
            <groupId>org.apache.curatorgroupId>
            <artifactId>curator-frameworkartifactId>
            <version>4.0.1version>
        dependency>

        <dependency>
            <groupId>org.apache.curatorgroupId>
            <artifactId>curator-recipesartifactId>
            <version>2.8.0version>
        dependency>
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>1.18.10version>
        dependency>

        <dependency>
            <groupId>org.apache.zookeepergroupId>
            <artifactId>zookeeperartifactId>
            <version>3.4.10version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4jgroupId>
                    <artifactId>slf4j-log4j12artifactId>
                exclusion>
                <exclusion>
                    <groupId>log4jgroupId>
                    <artifactId>log4jartifactId>
                exclusion>
            exclusions>
        dependency>

        <dependency>
            <groupId>com.101tecgroupId>
            <artifactId>zkclientartifactId>
            <version>0.9version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4jgroupId>
                    <artifactId>slf4j-log4j12artifactId>
                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
  # 设置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

你可能感兴趣的:(技术博客,zookeeper,spring,boot)