1.開篇

Ribbon是什么?
Spring Cloud Ribbon是基于Netflix Ribbon實作的一套客戶端負載均衡的工具,
簡單的說,Ribbon是Netflix發布的開源專案,主要功能是提供客戶端的軟體負載均衡演算法和服務呼叫,Ribbon客戶端組件提供一系列完善的配置項如連接超時,重試等,簡單的說,就是在組態檔中列出Load Balancer(簡稱LB)后面所有的機器,Ribbon會自動的幫助你基于某種規則(如簡單輪詢,隨機連接等)去連接這些機器,我們很容易使用Ribbon實作自定義的負載均衡演算法,
Ribbon能干嘛?(負載均衡 + RestTemplate呼叫)
LB負載均衡(Load Balance)是什么?簡單的說就是將用戶的請求平攤的分配到多個服務上,從而達到系統的HA(高可用),常見的負載均衡有軟體Nginx,LVS,硬體 F5等,
Ribbon本地負載均衡客戶端 VS Nginx服務端負載均衡區別
Nginx是服務器負載均衡,客戶端所有請求都會交給nginx,然后由nginx實作轉發請求,即負載均衡是由服務端實作的,Nginx就屬于集中式LB:即在服務的消費方和提供方之間使用獨立的LB設施(可以是硬體,如F5, 也可以是軟體,如nginx), 由該設施負責把訪問請求通過某種策略轉發至服務的提供方;
Ribbon本地負載均衡,在呼叫微服務介面時候,會在注冊中心上獲取注冊資訊服務串列之后快取到JVM本地,從而在本地實作RPC遠程服務呼叫技術,Ribbon就屬于行程內LB:它只是一個類別庫,集成于消費方行程,消費方通過它來獲取到服務提供方的地址,行程內LB:將LB邏輯集成到消費方,消費方從服務注冊中心獲知有哪些地址可用,然后自己再從這些地址中選擇出一個合適的服務器,

Ribbon在作業時分成兩步
- 第一步先選擇 EurekaServer ,它優先選擇在同一個區域內負載較少的server.
- 第二步再根據用戶指定的策略,在從server取到的服務注冊串列中選擇一個地址,
- 其中Ribbon提供了多種策略:比如輪詢、隨機和根據回應時間加權,
Ribbon核心組件IRule:根據特定演算法從服務串列中選取一個要訪問的服務,
其中最常見的兩種演算法是:com.netflix.loadbalancer.RandomRule 隨機訪問;com.netflix.loadbalancer.RoundRobinRule 輪詢訪問,

2.專案原始碼
其他相關解釋都放在了github、gitee上,
github原始碼地址:https://github.com/2656307671/SpringCloud-Hoxton-Ribbon
gitee原始碼地址:https://gitee.com/szh-forever-young/SpringCloud-Hoxton-Ribbon
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291596.html
標籤:其他
上一篇:企業運維實戰之k8s(Volumes卷)初學者必看,點贊關注后期不迷路
下一篇:Docker-compose
