本篇是對微服務架構中實現負載均衡的乙個通用思路的闡述
負載均衡方**
同構環境下,重點在於「均勻」異構環境下,重點在於「負載與能力匹配」
同構環境下的負載均衡
在同構環境下,負載均衡的實現基本上不需要額外的支援,在實現高併發、高可用的基礎設施中:客戶端到反向**由dns輪詢完成;反向**到站點由nginx來完成;站點到服務由連線池完成;服務到資料層也是由資料層框架的客戶端提供的連線池來完成。
因為是同構的,所以均衡策略是簡單,輪詢,隨機的方式都可以實現。
本篇的重點是異構環境下的負載均衡。
靜態權重
靜態權重和同構環境下的「均衡方式」幾乎是一樣的,若按照 1:1:1配置下游的權重,那麼就是均衡,可以說均衡是靜態權重的乙個特殊例子
靜態權重乙個最大的問題它是靜態的,它是無法實時變化的,過載保護等也無法進行實施,但它是最快的也是成本最低的。
動態權重
動態權重有兩個要點:
如何標識服務的處理能力
如何設計動態權重
服務的處理能力由呼叫方說了算,如果服務能夠正常返回那麼說明能力可以,如果超時了說明服務不能承受當前的流量壓力
設計動態權重的原則就是:成功加小分,失敗減大分
舉個例子,先規定分值區間為【0,100】假設三個集群的下游服務service-1、service-2、service-3,三個服務的初始分值都是60,也就是說,在最初負載是均勻的。
隨著時間的推移:
最後動態權重的增減,變化為:service1-100分,service2-60分,service3-40分
那麼這三個service負載比就是:5:3:2,service1會處理一半的請求,符合按照能力進行負載均衡。
過載保護
什麼是過載保護:當服務過載的時候很有可能造成我們說的「雪崩」,服務的流量到達處理能力的峰值,隨之再增加流量,處理成功的請求直線下降,服務進入不可用的狀態。
過載保護也有兩種方式,一種是靜態的,一種是動態的。
靜態的過載就是設定乙個流量閾值,超過這個閾值就不會再有多的請求了。
動態的過載保護和動態的負載均衡策略是相似的:
連線代表服務,分值代表服務(連線)的處理能力
處理成功加小分,處理失敗減大分
臨界邊界喘口小氣(減少流量、短時)
死亡狀態喘口大氣(沒有流量、可能時間較長)
過載保護的核心是為了不掉底,過載保護是實施在集群中的某乙個節點的,本來應該由該節點處理的流量轉由其它節點處理。
如果整個集群達到過載狀態,那麼只能依靠丟棄請求來實現自我保護,集群的過載保護策略和某一節點的策略是不同的。
小白聊架構師 怎麼成為架構師
還有人說 我早就掌握了物件導向設計,也看了 企業應用架構模式 架構之美 大型 技術架構 等等架構的書,為啥還當不了架構師?是啊,這高階,大氣,上檔次的架構師是怎麼煉成的?這裡講乙個小王的故事吧。又到了畢業季,一批應屆生進了乙個軟體公司,小王也在其中。新人進入公司,基本上都是從最底層做起,做那些最髒最...
如何成為架構師系列 前言
很多it新人都對架構感興趣,我的團隊裡打算往架構方向發展的同事也不少 我在乙個二十人左右的軟體團隊裡任部門經理 他們會問我要往哪個方向去努力,看什麼書啊,積累什麼技能啊,但怎麼說呢,或許是我的見識有限,我覺得很難用幾句話說清這件事情。上網搜尋 如何成為架構師 大部分人都說得靠經驗 得積累等等。去買架...
誰能成為測試架構師
軟體測試架構師不是一種頭銜,而是一種角色,更重要的是一種能力 對團隊的影響力。軟體測試工程師不是在某一天突然成為乙個軟體架構師的,雖然他可能會在某一天被某某經理宣布為測試架構師。任何乙個人成為軟體架構師,都是乙個漸進的過程,不斷積累經驗,不斷提高自己的技術水平和業務能力,才能逐漸勝任測試架構師的角色...