直連提供者
在開發及測試環境下,經常需要繞過註冊中心,只測試指定服務提供者,這時候可能需要點對點直連,
點對點直聯方式,將以服務接口爲單位,忽略註冊中心的提供者列表,
A接口配置點對點,不影響B接口從註冊中心獲取列表。
(1) 如果是線上需求需要點對點,可在<dubbo:reference>中配置url指向提供者,將繞過註冊中心,多個地址用分號隔開,配置如下:(1.0.6及以上版本支持)
<dubbo:reference
id= "xxxService" interface = "com.alibaba.xxx.XxxService" url= "dubbo://localhost:20890" /> |
(2) 在JVM啓動參數中加入-D參數映射服務地址,如:
(key爲服務名,value爲服務提供者url,此配置優先級最高,1.0.15及以上版本支持)
java
-Dcom.alibaba.xxx.XxxService=dubbo: //localhost:20890 |
注意 爲了避免複雜化線上環境,不要在線上使用這個功能,只應在測試階段使用。 |
(3) 如果服務比較多,也可以用文件映射,如:
(用-Ddubbo.resolve.file指定映射文件路徑,此配置優先級高於<dubbo:reference>中的配置,1.0.15及以上版本支持)
(2.0以上版本自動加載${user.home}/dubbo-resolve.properties文件,不需要配置)
java
-Ddubbo.resolve.file=xxx.properties |
然後在映射文件xxx.properties中加入:
(key爲服務名,value爲服務提供者url)
com.alibaba.xxx.XxxService=dubbo: //localhost:20890 |
注意 爲了避免複雜化線上環境,不要在線上使用這個功能,只應在測試階段使用。 |
在生產環境使用情況是,服務消費端只消費指定Provider提供者的服務
開發調試
我們啓動遠程服務提供者
我啓動web-boss,這裏調用是遠程提供者服務
查看user-service,provider方的配置
配置consumer方調用本地dubbo服務,進行直連調試
<dubbo:reference interface="edu.facade.user.service.PmsUserFacade" id="pmsUserFacade" timeout="2000" check="false"url="dubbo://localhost:20880"/>
我們啓動本地 dubbo服務,以debug模式啓動
在dubbo管理控制檯查看dubbo服務
啓動消費端,web-boss我們進行直連調試
consumer控制檯信息
我們再訪問登錄,會發現已調用本地dubbo模式,進入debug調試模式
我們在Dubbo管理控制檯把provider禁用,發現也是調用本地dubbo服務,繞過了註冊中心,這就是直連提供者
我們在${user.home}下配置直接提供者屬性也是可以的(推薦使用)
dubbo-resolve.properties
內容 :
edu.facade.user.service.PmsUserFacade=dubbo://localhost:20880
注意點:
1、 直連提供者只需要在消費端設置
2、 ${user.home}指的是當前操作系統用戶目錄,如 Win7系統 Administrator的用戶目錄就是 C:\Users\Administrator