在微服務架構中,當服務提供者的應用執行個體出現異常,而服務消費者無法感知時會影響服務的正常調用,並影響消費者的服務效能甚至可用性。離群執行個體摘除功能會檢測應用執行個體的可用性並進行動態調整,以保證服務成功調用,從而提升業務的穩定性和服務品質。本文介紹如何建立離群執行個體摘除策略。
背景資訊
在下圖的樣本情境中,某個系統包含4個應用,A、B、C和D,其中應用A會分別調用應用B、C和D。當應用B、C或D的某些執行個體異常時(如圖中紅色圓圈所示,應用B有一個異常執行個體,C和D有2個異常執行個體),如果應用A無法感知,會導致部分調用失敗。如果B、C、D的異常執行個體較多,有可能影響應用A的效能甚至服務可用性。
為了保護應用A的服務效能和可用性,可以為應用A配置離群執行個體摘除。配置後,即可監控B、C、D應用的執行個體狀態並進行動態調整(摘除或添加),以保證服務成功調用。
離群執行個體摘除流程如下:
- 當應用B、C或D的某個執行個體異常時,系統能夠檢測到,並根據配置的摘除執行個體比例上限判斷是否將對應的執行個體從應用中摘除。
- 摘除執行個體後,A的調用請求不再被分發到B、C、D的異常執行個體上。
- 按配置的恢複檢測單位時間開始檢測異常執行個體是否恢複。
- 活動訊號間隔時間隨檢測次數按恢複檢測單位時間(預設為0.5分鐘)線性增加,當達到設定的未恢複累計次數上限後,會按最長時間間隔持續檢測異常執行個體是否恢複。
- 當檢測到執行個體恢複後,將執行個體重新添加到應用的執行個體列表中,處理調用請求。同時,將活動訊號間隔時間重設為恢複檢測單位時間,例如0.5分鐘。
說明
- 當提供者應用的異常執行個體數量過多(超過摘除執行個體比例上限)時,僅按照設定的比例摘除。
- 當提供者應用中僅剩最後一個可用執行個體時,即使錯誤率超過配置的閾值,也不會摘除該執行個體。
建立離群執行個體摘除策略
登入EDAS控制台。
在左側導覽列,選擇 。
- 在Spring Cloud左側導覽列,單擊離群執行個體摘除。
- 在離群執行個體摘除頁面,選擇地區和微服務空間,單擊建立離群執行個體摘除策略。
- 在建立離群執行個體摘除策略面板,完成相關配置,然後單擊確定。
配置項 描述 微服務空間 在右側列表中選擇地區和微服務空間。 策略名稱稱 離群執行個體策略名稱稱,最長64個字元。 被調用服務所用架構 選擇Spring Cloud。 選擇生效應用 選擇生效應用後,單擊>表徵圖,將應用添加至已選應用列表。 選擇生效應用後,該應用的調用的所有應用的異常執行個體會被摘除。摘除期間,生效應用的調用請求將不再被分發到異常執行個體。
錯誤率下限 當被調用的應用中某個應用執行個體的錯誤率高於設定的下限後,將摘除該執行個體。預設值為50%。例如該執行個體在統計時間視窗內被調用10次,有6次調用失敗,錯誤率為60%,超過了配置的錯誤率下限(50%),則從應用中移除該執行個體。 進階配置 單擊表徵圖,展開進階配置選項。 異常類型 包含網路異常和網路異常+業務異常(HTTP 5xx),根據實際業務需求選擇。 QPS下限 QPS按照統計時間視窗進行計算,Dubbo 2.7版本的應用的統計時間視窗為15秒,其它Dubbo版本和Spring Cloud應用的統計時間視窗為10秒。當在統計時間視窗(例如15秒)內應用的QPS達到設定的下限後開始進行錯誤率統計分析。 摘除執行個體比例上限 摘除的異常執行個體比例上限,即達到閾值後,不再摘除異常執行個體。摘除異常執行個體數向下取整,例如應用執行個體總數為6,摘除執行個體比例設定為60%,摘除執行個體比例數為6 x 60% = 3.6,則按策略最多摘除的執行個體數為3。若計算結果小於1,則不會摘除執行個體。 恢複檢測單位時間 在異常執行個體被摘除後,按單位時間軸性不斷累加的時間作為活動訊號間隔時間,檢測異常執行個體是否恢複正常,單位為ms。預設為30000ms,即0.5分鐘。 未恢複累計次數上限 持續對異常執行個體進行檢測,活動訊號間隔時間隨檢測次數按恢複檢測單位時間軸性增加,當達到設定的檢測次數上限後,會按最長時間間隔持續檢測異常執行個體是否恢複。例如,恢複檢測單位時間設定30000ms,未恢複累計次數上限設定為20,在第20次檢測異常執行個體仍未恢複後,則會按10分鐘(20 x 30000 ms)為間隔執行後續的檢測。如果檢測到執行個體已經恢複,則會將活動訊號間隔時間重設為初始的時間間隔,即一次恢複檢測單位時間。 說明 未恢複累計次數上限不建議配置太大。配置太大會導致最長活動訊號間隔時間時間較長,如果執行個體在活動訊號間隔時間早期恢複,仍需等到活動訊號間隔時間到時再進行檢測,導致期間執行個體資源被浪費,未能及時處理業務調用請求。
結果驗證
離群執行個體摘除策略配置並建立後,即開啟了離群執行個體摘除。您可以進入已配置離群執行個體摘除的進階監控頁面,查看該應用的監控資訊,例如通過拓撲圖觀察調用請求是否還會轉寄到異常執行個體,應用調用的錯誤率/每分鐘是否高於配置的錯誤率下限等,以便判斷離群執行個體摘除策略是否生效。具體操作,請參見應用總覽。
管理離群執行個體摘除策略
您可以在離群執行個體摘除列表,單擊編輯或刪除,對該離群執行個體摘除策略進行管理。