在微服務架構中,客戶端負載均衡是指負載均衡器做爲客戶端軟件的一部分,客戶端獲得可用的服務實例列表而後按照特定的負載均衡策略,分發請求到不一樣的服務。html
ServiceComb內置了客戶端負載均衡組件,開發者能夠很是簡單的使用。具體可參考:java
https://docs.servicecomb.io/java-chassis/zh_CN/references-handlers/loadbalance.html git
本文將介紹ServiceComb與SpringCloud的Ribbon負載均衡組件協同工做,以構建微服務應用。ServiceComb已適配對應的接口和配置,用戶用極簡單的方法配置後便可使微服務應用具有負載均衡的能力。github
示例spring
如下經過一個服務提供者provider-service和消費者consumer-service做爲demo演示。apache
provider-service會啓動3個微服務實例,消費者端consumer-service使用Ribbon負載均衡調用proveder-service服務的接口。其中consumer-service在調用provider-service提供的接口時會打印出真實調用的URL ↓↓↓瀏覽器
完整示例地址:微信
https://github.com/lisenwork/servicecomb-demo/tree/master/servicecomb-ribbon 架構
預置條件: 示例應先安裝啓動服務與註冊中心ServiceCenter,詳細步驟請參考官網↓↓↓負載均衡
http://servicecomb.apache.org/cn/users/setup-environment/#%E8%BF%90%E8%A1%8Cservice-center
一 |
開發服務消費者comsumer-service |
只需三步便可開發擁有負載均衡能力的微服務
步驟以下:↓↓↓
01添加依賴
新建pom文件,引入以下依賴。
完整pom文件內容請參考↓↓↓
https://github.com/lisenwork/servicecomb-demo/blob/master/servicecomb-ribbon/consumer-service/pom.xml
02配置
在resources目錄下新建ServiceComb配置文件microservice.yaml。配置微服務信息↓↓↓
03項目入口
新建啓動類ConsumerApplication.java。以下圖,啓動類裏同時實例化一個RestTemplate對象。該對象用於後面的服務間接口調用。
新建ConsumerController.java。在該類的consumer方法裏使用Ribbon的API動態獲取服務實例,並打印出被選中的實例的真實IP地址和端口。最後調用服務實例的接口,獲取結果並返回。
04啓動
項目根目錄下執行命令 mvn spring-boot:run
二 |
開發服務提供者provider-service |
01添加依賴
新建pom文件,引入以下依賴。
完整pom文件內容請參考↓↓↓
https://github.com/lisenwork/servicecomb-demo/blob/master/servicecomb-ribbon/provider-service/pom.xml
02配置
在src/main/resources目錄下新建microservice.yaml
03項目入口
新建啓動類ProviderApplication.java
新建ProviderController.java。只向外提供/provider接口
04啓動
服務提供者要啓動3個微服務實例。
打開microservice.yaml文件,分別修改微服務監聽端口爲8888,8889,8890,在項目根目錄下執行3次命令 mvn spring-boot:run
演示
瀏覽器訪問http://localhost:7777/consumer,重複刷新必定次數,觀察控制檯,會發現服務消費者會輪詢調用服務提供者的三個實例。
本文向社區讀者從讀者角度闡述了ServiceComb是如何支持SpringCloud Ribbon的。
咱們也很是歡迎愛好者們向社區提問和貢獻代碼。
下章咱們將介紹ServiceComb+SpringCloud Ribbon源碼篇。
若是在閱讀代碼時有任何疑問想交流,歡迎掃碼加入進微信羣。
期待志同道合的朋友們加入
ServiceComb的大門爲大家敞開~
用心作開源,不忘初衷
瞭解更多信息請訪問
官方網站http://servicecomb.apache.org/
Github代碼倉庫https://github.com/apache?q=ServiceComb