首页 > 其他分享 >springboot对接dubbo遇到的巨坑

springboot对接dubbo遇到的巨坑

时间:2024-09-26 15:25:09浏览次数:9  
标签:dubbo zookeeper 服务 springboot 巨坑 地址 org 内网

1、添加配置jar包

 <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-actuator</artifactId>
            <version>2.7.4.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.8.0</version>
        </dependency>

说明:不同的springboot版本对应的dubbo版本以及 dubbo-spring-boot-starter 版本是不一样的,需要上GitHub上去查找对应的关系

2、添加dubbo配置

dubbo:
  protocol:
    name: dubbo
    port: 20888 协议端口号,消费者的协议端口号可随意配置
  registry:
    address: zookeeper:2181?timeout=60000
    protocol: zookeeper
  application:
    name: diagnosis_gas
    id: diagnosis_gas
  scan:
    base-packages: cc.eslink  服务提供方所在的包位置

 

3、巨坑-服务消费者获取不到服务提供者提供的服务

3.1 如图,dubbo-admin可以查找的服务

说明:机器显示的IP 和端口,是服务提供者实际的IP地址和暴露的服务,并非是注册中心Zookeeper的地址,这个地址就是服务提供方注册到

zookeeper上的地址,zookeeper会通过该地址寻找服务。

3.2 注册的地址是内网地址还是外网地址

说明:注册的地址是内网地址,dubbo注册服务默认都是内网地址,若要让注册的服务是外网地址,需要修改hosts映射的地址,一般服务器映射的都是

内网地址,这里可以改成外网地址,这样注册的就是外网地址

3.3 为什么服务访问不到

说明:当消费者去消费服务的时候,通过外网地址连接到zookeeper上,zookeeper去查找提供的服务,但是提供的服务是内网地址,没法和消费者

建立连接,服务是不通的,所以没法提供服务

3.4 怎么解决消费不到的情况

1、把hosts内网地址,改成外网地址,这样暴露的服务就是外网地址,我们通过外网就可以访问了

2、服务提供者和消费者都在同一台服务器上,这样内网之间的网络是通的,也是可以进行访问的

 参考博客:https://blog.51cto.com/u_12270378/2809505


4、巨坑-zk明明可以ping通,但是就是连接不上

说明:zookeeper的外网地址,是可以ping通的,且端口也是可以通信的,但是就是连接不上

原因:zookeeper的默认超时时间是5毫秒,时间太短了,还没连接上就端口了

方法:配置zookeeper连接的时候,带上超时时间

如下:address="zookeeper://106.75.177.44:2181?timeout=600000"

参考博客:https://zhuanlan.zhihu.com/p/343204228

 

标签:dubbo,zookeeper,服务,springboot,巨坑,地址,org,内网
From: https://www.cnblogs.com/xzlnuli/p/18433508

相关文章