做網站特別注意什么軟文廣告平臺
負載均衡可以單獨使用,也常常與注冊中心結合起來使用,其需要解決的問題是流量分發(fā),這是就需要定義分發(fā)策略,當然也包括了故障切換的能力。
故障切換
故障切換是負載均衡的基本能力,和注冊中心結合時比較簡單,直接獲取注冊中心中可用的健康服務列表,根據(jù)負載均衡策略進行數(shù)據(jù)分發(fā),因為注冊中心往往存在健康服務延遲下線的問題,因此更完善的機制是在重試時優(yōu)先其他節(jié)點。
在沒有注冊中心的場景下,需要類似熔斷的策略,進行目標服務健康狀態(tài)標記,被熔斷時將目標實例加入熔斷名單,單位時間內進行恢復驗證,驗證成功后恢復服務健康狀態(tài)
在以上策略外,往往還會需要一個兜底的方案,即所有實例都無法匹配上時,一般也會從所有列表中隨機選擇一個實例進行請求分發(fā)
分發(fā)策略
另一個核心是分發(fā)策略,常見的策略有:
- 隨機選擇策略,即請求進來以后,隨機選擇一個健康實例進行分發(fā)
- 權重策略,根據(jù)權重,分發(fā)請求時可以根據(jù)權重概率進行計算,權重高的實例有更高的概率被分發(fā)到請求
- 輪詢策略,實例列表依次分發(fā),相當于均勻分發(fā)請求到實例上
- 標簽策略,可以根據(jù)請求標簽,優(yōu)先選擇相同或滿足一定條件的標簽查找實例進行分發(fā),在此基礎上,便可以實現(xiàn)同區(qū)機房優(yōu)先、版本兼容優(yōu)先(即灰度)等衍生場景,后面的技巧中也是使用了該特性進行變種滿足特殊需求。當然這個標簽需要往下傳遞,從請求到各個服務節(jié)點,可以透傳或者根據(jù)本身服務的特點進行修改標簽。
網絡策略也不是只固定一種,比如標簽策略和其他策略混合使用,先使用標簽策略減小實例范圍,再根據(jù)其他策略進行二次實例選擇。
技巧——巧用開發(fā)環(huán)境
眾所周知,在微服務開發(fā)中,因為服務切分的問題,往往開發(fā)者的電腦”負擔“也會很重,執(zhí)行效率也會收到影響。很多時候,不僅要運營正在開發(fā)的服務,還需要運行一系列的相關服務才能測試全流程。運行服務要花時間,電腦也越來越卡,影響開發(fā)測試效率。
一般公司都會建立公共的開發(fā)測試環(huán)境,里面會運行所有的服務,這時,如果可以使用公共環(huán)境結合測試本地服務,本地只需要運行有修改的服務,同時又不影響其他人的測試,那么整體的開發(fā)測試效率會大大提升,這里提供一個方法和思路:
- 對接口進行打標,比如增加特定的請求 header
- 本地服務啟動時,使用特定的服務標簽運行,比如nacos中可以擴展metaData
- 服務接收到請求后,負載均衡先檢查是否有請求相同標簽的實例,有則優(yōu)先訪問相同標簽實例,沒有則優(yōu)先選擇沒有標簽的實例,最后選擇其他實例
- 開發(fā)環(huán)境可能部署在特殊的內網中,此時需要改造特殊標簽實例和沒有特殊標簽實例的請求地址,重定向到特定的網絡端口進行分發(fā)
總結
負債均衡也是高可用中很重要的一環(huán),而且巧用負載均衡,還可以實現(xiàn)開發(fā)環(huán)境中降本增效的效果。