負載均衡演算法可以分為兩類:靜態負載均衡演算法和動態負載均衡演算法,另外還可以自定義負載均衡演算法,
靜態負載均衡演算法
- 輪詢(Round Robin):服務器按照順序回圈接受請求,
- 隨機(Random):隨機選擇一臺服務器接受請求,
- 權重(Weight):給每個服務器分配一個權重值,根據權重來分發請求到不同的機器中,
- IP哈希(IP Hash):根據客戶端IP計算Hash值取模訪問對應服務器,
- URL哈希(URL Hash):根據請求的URL地址計算Hash值取模訪問對應服務器,
- 一致性哈希(Consistent Hash ):采用一致性Hash演算法,相同IP或URL請求總是發送到同一服務器,
動態負載均衡演算法
- 最少連接數(Least Connection):將請求分配給最少連接處理的服務器,
- 最快回應(Fastest Response):將請求分配給回應時間最快的服務器,
- 觀察(Observed):以連接數和回應時間的平衡為依據請求服務器,
- 預測(Predictive):收集分析當前服務器性能指標,預測下個時間段內性能最佳服務器,
- 動態性能分配(Dynamic Ratio-APM):收集服務器各項性能引數,動態調整流量分配,
- 服務質量(QoS):根據服務質量選擇服務器,
- 服務型別(ToS): 根據服務型別選擇服務器,
自定義負載均衡演算法
- 灰度發布:平滑過渡的發布方式,可以降低發布失敗風險,減少影響范圍,發布出現故障時可以快速回滾,不影響用戶,
- 版本隔離:為了兼容或者過度,某些應用會有多個版本,保證1.0版本不會調到1.1版本服務,
- 故障隔離:生產出故障后將出問題的實體隔離,不影響其他用戶,同時也保留故障資訊便于分析,
- 定制策略:根據業務情況定制跟業務場景最匹配的策略,
PS:上面的演算法還能組合成新演算法,如:
- 輪詢+權重=加權輪詢,
- 最快回應+權重,可以根據回應時間動態調整服務器的權重,達到負載均衡,
中間件使用的負載均衡演算法
- Nginx
- RoundRobin:輪詢,
- WeightedRoundRobin:加權輪詢,
- IPHash:按訪問IP的Hash選擇服務器,
- URLHash:按請求URL的Hash選擇服務器,
- Fair:根據后端服務器的回應時間判斷負載情況,從中選出負載最輕的機器進行分流,
- Dubbo
- RandomLoadBalance:加權隨機,
- RoundRobinLoadBalance:加權輪詢,
- LeastActionLoadBalance:最少鏈接數,
- ShortestResponseLoadBalance:最短回應時間,
- ConsistentHashLoadBalance:一致性Hash,
- Ribbon
- RoundRobinRule:輪詢,
- RandomRule:隨機,
- WeightedResponseTimeRule:根據回應時間來分配權重的方式,回應的越快,分配的值越大,
- BestAvailableRule:會先過濾掉由于多次訪問故障而處于斷路器跳閘狀態的服務,然后選擇一個并發量最小的服務,
- RetryRule:先按照輪詢策略獲取服務,如果獲取服務失敗則在指定時間內進行重試,獲取可用的服務,
- ZoneAvoidanceRule:根據性能和可用性選擇服務,
- AvailabilityFilteringRule:會先過濾掉由于多次訪問故障而處于斷路器狀態的服務,還有并發的連接數量超過閾值的服務,然后對剩余的服務串列按照輪詢策略進行訪問,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/281308.html
標籤:其他
