Dubbo 學習筆記(五) 開發環境常用技巧

liudashuang2017發表於2018-04-14

直連提供者

在開發及測試環境下,經常需要繞過註冊中心,只測試指定服務提供者,這時候可能需要點對點直連,點對點直聯方式,將以服務介面為單位,忽略註冊中心的提供者列表,A 介面配置點對點,不影響 B 介面從註冊中心獲取列表。

1. 通過 XML 配置

如果是線上需求需要點對點,呼叫方配置 url 指向提供者,將繞過註冊中心,多個地址用分號隔開,配置如下 :
生產中正常的配置是不會有URL的

<dubbo:reference id="xxxService" interface="com.alibaba.xxx.XxxService" url="dubbo://localhost:20890" />

2.通過 -D 引數指定

在 JVM 啟動引數中加入-D引數對映服務地址 ,如:

java -Dcom.alibaba.xxx.XxxService=dubbo://localhost:20890

等號 前是服務介面, 後是直連的地址.

3.通過檔案對映

如果服務比較多,也可以用檔案對映,用 -Ddubbo.resolve.file 指定對映檔案路徑,此配置優先順序高於 xml 中的配置 ,如:
啟動引數制定對映檔案

java -Ddubbo.resolve.file=xxx.properties

然後在對映檔案 xxx.properties 中加入配置,其中 key 為服務名,value 為服務提供者 URL,檔案內容為:

com.alibaba.xxx.XxxService=dubbo://localhost:20890

只訂閱

為方便開發測試,經常會線上下共用一個所有服務可用的註冊中心,這時,如果一個正在開發中的服務提供者註冊,可能會影響消費者不能正常執行。

可以讓服務提供者開發方,只訂閱服務(開發的服務可能依賴其它服務),而不註冊正在開發的服務,通過直連測試正在開發的服務。

<dubbo:registry address="10.20.153.10:9090" register="false" />

這樣就只是訂閱註冊中心的服務,但是不會去註冊中心註冊服務,避免了服務修改在未完成時,修改了註冊中心的服務, 引起其他呼叫方不正常.

只註冊

如果有兩個映象環境,兩個註冊中心,有一個服務只在其中一個註冊中心有部署,另一個註冊中心還沒來得及部署,而兩個註冊中心的其它應用都需要依賴此服務。這個時候,可以讓服務提供者方只註冊服務到另一註冊中心,而不從另一註冊中心訂閱服務。

禁用訂閱配置

<dubbo:registry id="hzRegistry" address="10.20.153.10:9090" />
<dubbo:registry id="qdRegistry" address="10.20.141.150:9090" subscribe="false" />

或者

<dubbo:registry id="hzRegistry" address="10.20.153.10:9090" />
<dubbo:registry id="qdRegistry" address="10.20.141.150:9090?subscribe=false" />

靜態服務

有時候希望人工管理服務提供者的上線和下線,此時需將註冊中心標識為非動態管理模式。

<dubbo:registry address="10.20.141.150:9090" dynamic="false" />

或者

<dubbo:registry address="10.20.141.150:9090?dynamic=false" />

服務提供者初次註冊時為禁用狀態,需人工啟用。斷線時,將不會被自動刪除,需人工禁用。

相關文章