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