讀Apache Dubbo官網有感:使用建議事項
1、在 Provider
端儘量多配置 Consumer
端屬性
原因如下:
- 作服務的提供方,比服務消費方更清楚服務的效能引數,如呼叫的超時時間、合理的重試次數等
- 在
Provider
端配置後,Consumer
端不配置則會使用Provider
端的配置,即Provider
端的配置可以作為Consumer
的預設值 1。否則,Consumer
會使用Consumer
端的全域性設定,這對於Provider
是不可控的,並且往往是不合理的
Provider
端儘量多配置Consumer
端的屬性,讓 Provider
的實現者一開始就思考Provider
端的服務特點和服務質量等問題。
示例:
<dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService"
timeout="300" retries="2" loadbalance="random" actives="0" />
<dubbo:service interface="com.alibaba.hello.api.WorldService" version="1.0.0" ref="helloService"
timeout="300" retries="2" loadbalance="random" actives="0" >
<dubbo:method name="findAllPerson" timeout="10000" retries="9" loadbalance="leastactive" actives="5" />
<dubbo:service/>
建議在 Provider
端配置的 Consumer
端屬性有:
timeout
:方法呼叫的超時時間retries
:失敗重試次數,預設是 2loadbalance
:負載均衡演算法 3,預設是隨機random
。還可以配置輪詢roundrobin
、最不活躍優先 4leastactive
和一致性雜湊consistenthash
等actives
:消費者端的最大併發呼叫限制,即當 Consumer 對一個服務的併發呼叫到上限後,新呼叫會阻塞直到超時,在方法上配置dubbo:method
則針對該方法進行併發限制,在介面上配置dubbo:service
,則針對該服務進行併發限制
詳細配置說明請參考:Dubbo配置參考手冊
2、在 Provider
端配置合理的Provider
端屬性
<dubbo:protocol threads="200" />
<dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService"
executes="200" >
<dubbo:method name="findAllPerson" executes="50" />
</dubbo:service>
建議在 Provider
端配置的Provider
端屬性有:
threads
:服務執行緒池大小executes
:一個服務提供者並行執行請求上限,即當Provider
對一個服務的併發呼叫達到上限後,新呼叫會阻塞,此時 Consumer 可能會超時。在方法上配置dubbo:method
則針對該方法進行併發限制,在介面上配置dubbo:service
,則針對該服務進行併發限制
3、配置管理資訊
目前有負責人資訊和組織資訊用於區分站點。以便於在發現問題時找到服務對應負責人,建議至少配置兩個人以便備份。負責人和組織資訊可以在運維平臺 (Dubbo Ops
) 上看到。
在應用層面配置負責人、組織資訊:
<dubbo:application owner=”ding.lid,william.liangf” organization=”intl” />
在服務層面(服務端)配置負責人:
<dubbo:service owner=”ding.lid,william.liangf” />
在服務層面(消費端)配置負責人:
<dubbo:reference owner=”ding.lid,william.liangf” />
若沒有配置服務層面的負責人,則預設使用 dubbo:application
設定的負責人。
4、配置 Dubbo
快取檔案
提供者列表快取檔案:
<dubbo:registry file=”${user.home}/output/dubbo.cache” />
注意:
- 可以根據需要調整快取檔案的路徑,保證這個檔案不會在釋出過程中被清除;
- 如果有多個應用程式,請注意不要使用同一個檔案,避免內容被覆蓋;
該檔案會快取註冊中心列表和服務提供者列表。配置快取檔案後,應用重啟過程中,若註冊中心不可用,應用會從該快取檔案讀取服務提供者列表,進一步保證應用可靠性。
5、監控配置
-
使用固定埠暴露服務,而不要使用隨機埠
這樣在註冊中心推送有延遲的情況下,消費者通過快取列表也能呼叫到原地址,保證呼叫成功。
-
使用
Dubbo Admin
監控註冊中心上的服務提供方使用 Dubbo Admin 監控服務在註冊中心上的狀態,確保註冊中心上有該服務的存在。
-
服務提供方可使用
Dubbo Qos
的telnet
或shell
監控項監控服務提供者埠狀態:
echo status | nc -i 1 20880 | grep OK | wc -l
,其中的 20880 為服務埠 -
服務消費方可通過將服務強制轉型為
EchoService
,並呼叫$echo()
測試該服務的提供者是可用如
assertEqauls(“OK”, ((EchoService)memberService).$echo(“OK”));
6、不要使用 dubbo.properties
檔案配置,推薦使用對應 XML
配置
Dubbo
中所有的配置項都可以配置在Spring
配置檔案中,並且可以針對單個服務配置。
如完全不配置則使用 Dubbo
預設值,詳情請參考 Dubbo配置參考手冊 中的說明。
dubbo.properties
中屬性名與 XML
的對應關係:
-
應用名
dubbo.application.name
<dubbo:application name="myalibaba" >
-
註冊中心地址
dubbo.registry.address
<dubbo:registry address="11.22.33.44:9090" >
-
呼叫超時
dubbo.service.*.timeout
可以在多個配置項設定超時
timeout
,由上至下覆蓋(即上面的優先)5,其它的引數(retries
、loadbalance
、actives
等)的覆蓋策略與timeout
相同。示例如下:提供者端特定方法的配置
<dubbo:service interface="com.alibaba.xxx.XxxService" > <dubbo:method name="findPerson" timeout="1000" /> </dubbo:service>
提供者端特定介面的配置
<dubbo:service interface="com.alibaba.xxx.XxxService" timeout="200" />
-
服務提供者協議
dubbo.service.protocol
、服務的監聽埠dubbo.service.server.port
<dubbo:protocol name="dubbo" port="20880" />
-
服務執行緒池大小
dubbo.service.max.thread.threads.size
<dubbo:protocol threads="100" />
-
消費者啟動時,沒有提供者是否拋異常
alibaba.intl.commons.dubbo.service.allow.no.provider
<dubbo:reference interface="com.alibaba.xxx.XxxService" check="false" />
①配置的覆蓋規則:1) 方法級別配置優於介面級別,即小
Scope
優先 2)Consumer
端配置優於Provider
端配置,優於全域性配置,最後是Dubbo
硬編碼的配置值(Dubbo 配置參考手冊) ↩②表示加上第一次呼叫,會呼叫 3↩次
③有多個
Provider
時,如何挑選Provider
呼叫 ↩④指從
Consumer
端併發呼叫最好的Provider
,可以減少對響應慢的Provider
的呼叫,因為響應慢更容易累積併發呼叫 ↩⑤
timeout
可以在多處設定,配置項及覆蓋規則請參考: Dubbo 配置參考手冊 ↩
相關文章
- Dubbo官網實戰使用技巧
- 部落格園升級有感一點建議
- JavaScript的程式碼編寫注意事項,建議收藏!JavaScript
- 萬兆網路卡使用注意事項
- Apache Dubbo 原始碼搭建與解讀(八)—— Dubbo 註冊中心之ZooKeeperApache原始碼
- Apache Dubbo 正式釋出 HTTP/3 版本 RPC 協議,弱網效率提升 6 倍ApacheHTTPRPC協議
- 【立項建議書】蘇科大校園app立項建議書APP
- 營銷型網站建設的注意事項網站
- apache-淺析apache優化的幾點建議Apache優化
- Dubbo 3 易用性升級之 Dubbo 官網大改版
- 讀書日有感
- 使用Apache Hudi構建大規模、事務性資料湖Apache
- Spring Boot 整合 Apache DubboSpring BootApache
- 讀《程式碼大全》有感
- 讀《大道至簡》有感
- 讀 《CSharp Coding Guidelines》有感CSharpGUIIDE
- Perforce 使用建議
- 深入理解Apache Dubbo(Dubbo總體大圖)Apache
- 二手房購買流程及注意事項,建議收藏!避免踩坑!
- 讀具體數學有感
- 【讀程式碼重構有感】
- Spring官方都推薦使用的@Transactional事務,為啥我不建議使用!Spring
- Dubbo系列之 (七)網路層那些事(2)
- 事業單位官網記錄
- 異常高效使用小竅門 — 讀Scala原始碼有感原始碼
- 網站建設時的注意事項你一定得知道網站
- 西安新城黨建官網
- Oracle使用*的注意事項Oracle
- 使用Google Fonts注意事項Go
- 【建議】通知,全部設定已讀
- 使用Apache Spark和Apache Hudi構建分析資料湖ApacheSpark
- 關鍵基礎設施網路安全建議—使用視訊會議
- 讀 《HTML5 揭祕》有感HTML
- 聊聊dubbo協議2協議
- 協議:SpringCloud VS Dubbo協議SpringGCCloud
- 機械硬碟,使用注意事項硬碟
- Guava HashMultimap使用及注意事項Guava
- MySQL半同步使用注意事項MySql