分布式架構(gòu)項目離不開負(fù)載均衡,負(fù)載均衡的機(jī)制解決了服務(wù)集群的性能和穩(wěn)定性钻心。Netflix 項目中的另一個項目 Ribbon 框架就是一個負(fù)載均衡的程序凄硼。
1. Ribbon 框架特征:
- 插拔式的負(fù)載均衡規(guī)則
- 支持 HTTP 、TCP捷沸、UDP 協(xié)議
- 集成了負(fù)載均衡功能的客戶端
2.Ribbon 核心模塊分類
- ribbon-core : 該模塊提供了 負(fù)載均衡器以及 客戶端定義的接口并且 內(nèi)置了一些列的負(fù)載均衡實現(xiàn)的 API
- ribbon-eureka : 為 eureka 服務(wù)發(fā)現(xiàn)治理框架 提供了 負(fù)載均衡的實現(xiàn)
- ribbon-httpclient : 對象 apache httpClint 進(jìn)行了封裝摊沉,提供了具有負(fù)載均衡的 Rest 功能的 客戶端
3. Ribbon 負(fù)載均衡器提供的主要基礎(chǔ)功能接口
- Rule : 該接口定義了將會從服務(wù)器列表中返回具體的服務(wù)器實例
- Ping : 該接口定義了確保服務(wù)器網(wǎng)絡(luò)可以連接
- ServerList : 該接口提供靜態(tài)或者動態(tài)服務(wù)實例列表,如果是動態(tài)服務(wù)實例會開啟一個后臺線程來刷新該服務(wù)列表
4.Ribbon 例子
4.1 創(chuàng)建 eureka 服務(wù)端 痒给、 服務(wù)提供者 说墨、服務(wù)調(diào)用者相關(guān)程序 (以下地址下載)
- eureka 服務(wù)端:
[https://github.com/cqzhangjian/eureka.git](https://github.com/cqzhangjian/eureka.git)
- eureka 服務(wù)提供者
[https://github.com/cqzhangjian/eureka.git](https://github.com/cqzhangjian/eureka.git)
- eureka 服務(wù)調(diào)用者
[https://github.com/cqzhangjian/eureka.git](https://github.com/cqzhangjian/eureka.git)
4.2 Ribbon 的使用
在 Eureka 中使用 Ribbon 非常的簡單,因為在 服務(wù)調(diào)用者服務(wù)應(yīng)用中導(dǎo)入 Spring-cloud-starer-eureka 依賴的時候已經(jīng)集成了 Ribbon苍柏。 Ribbon 通過讀取 eureka 服務(wù)中心注冊列表信息以及本身提供的負(fù)載均衡算法進(jìn)行負(fù)載調(diào)用服務(wù)實例尼斧。
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate ();
}
@LoadBalanced 作用于在 RestTemplate 組件后, RestTemplate 就具有根據(jù)負(fù)載均衡算法來進(jìn)行負(fù)載調(diào)用了试吁。