在上兩篇 [微服務]ServiceComb + SpringCloud Ribbon:使用篇 和 [微服務]ServiceComb + SpringCloud Ribbon:源碼解讀篇 中介紹了負載均衡的概念和ServiceComb結合SpringCloud Ribbon的使用, 本篇將介紹ServiceComb內置的負載均衡組件handler-loadbalancehtml
本文參考於官方手冊:java
https://docs.servicecomb.io/java-chassis/zh_CN/references-handlers/loadbalance.htmlgit
簡介github
ServiceComb提供了很是強大的負載均衡能力。它的核心包括兩部分,第一部分是DiscoveryTree,經過將微服務實例根據接口兼容性、數據中心、實例狀態等分組,DiscoveryFilter是其主要組成部分;第二部分是基於Ribbon的負載均衡方案,支持隨機、順序、基於響應時間的權值等多種負載均衡路由策略IRule,以及能夠支持Invocation狀態的ServerListFilterExt。spring
代碼示例apache
如下代碼請參考官方示例:微信
https://github.com/apache/servicecomb-java-chassis/tree/master/samples/springmvc-samplemvc
注意該示例中並未添加劇試策略,讀者可自行添加驗證。負載均衡
1. 啓動負載均衡微服務
在配置文件microservice.yaml中加入如下配置
注意Consumer是首字母大寫
在項目的pom文件中加入如下依賴提供負載均衡支持
2. 配置負載均衡策略
開發者還能夠針對不一樣的微服務配置不同的策略,只須要給配置項增長服務名,例如:
其中myservice爲微服務名
3. 設置重試策略
負載均衡模塊還支持配置失敗重試的策略。默認未啓用重試。開啓只需加以下配置↓↓↓
•retryOnNext : 表示失敗之後,根據負載均衡策略,從新選擇一個實例重試(可能選擇到同一個實例)。
•retryOnSame : 表示仍然使用上次失敗的實例進行重試。
4. 代碼調用
支持Restful和Rpc調用
對於Restful調用的url形式以下:
cse://微服務名/資源路徑?參數
自定義
ServiceComb的負載均衡模塊提供了強大的擴展能力,包括DiscoveryFilter、ServerListFilterExt、ExtensionsFactory(擴展IRule,RetryHandler等)。loadbalance模塊自己包含了每個擴展的實現,這裏不詳細描述如何擴展。
開發者可參考官方手冊:
https://docs.servicecomb.io/java-chassis/zh_CN/references-handlers/loadbalance.html
文末小結
本文向社區讀者從使用角度闡述了ServiceComb的內置負載均衡模塊。
咱們也很是歡迎愛好者們向社區提問和貢獻代碼。
下章咱們將介紹服務中心SeviceCenter的使用。
若是在閱讀代碼時有任何疑問想交流,歡迎掃碼加入進微信羣。
期待志同道合的朋友們加入
ServiceComb的大門爲大家敞開~
用心作開源,不忘初衷