springboot對接dubbo遇到的巨坑

xzlnuli發表於2024-09-26

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

相關文章