本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務造成影響,請務必仔細閱讀。
在實例擴縮容、應用回滾升級、應用啟停等場景中,應用可能會出現(xiàn)短時間內服務不可用等異常情況。Serverless 應用引擎 SAE(Serverless App Engine)集成了微服務引擎 MSE(Microservices Engine)的無損上下線功能,通過服務預熱、服務延遲注冊等功能,為應用提供業(yè)務保障。
背景信息
無損上線:
對于任何一個線上應用來說,發(fā)布、擴容、縮容、重啟等操作不可避免。在應用啟動各階段,無損上線能夠提供相應的保護能力。微服務的Provider服務只要注冊到注冊中心即可被Consumer調用,但此時,Provider可能還需要更進一步的初始化,例如數(shù)據(jù)庫連接池的初始化等。因此,對于流量比較大的微服務應用,推薦開啟無損上線功能。
無損下線:
線上應用在服務更新部署過程中,需要盡量保證客戶端無感知,即從應用停止到重啟恢復服務的階段不能影響正常的業(yè)務請求。由于微服務應用自身調用特點,在高并發(fā)下,服務提供端應用實例的直接下線,會導致服務消費端應用實例無法實時感知下游實例的實時狀態(tài),因而出現(xiàn)繼續(xù)將請求轉發(fā)到已下線的實例,從而出現(xiàn)請求報錯,導致流量有損。因此,在應用執(zhí)行部署、停止、回滾、縮容和重置時,需要通過無損下線配置來保證應用正常關閉。
前提條件
已通過鏡像或代碼包部署Java應用。具體操作,請參見應用部署目錄下的文檔。
重要僅適用于2023年11月08日起新建的微服務應用。
微服務治理只適用于Java應用。
- 說明
使用MSE時會產生單獨費用。MSE的計費說明,請參見計費概述和【產品變更】SAE集成的MSE微服務治理功能商用通知。
功能入口
登錄SAE控制臺,在左側導航欄選擇 ,然后選擇目標地域和目標命名空間,最后單擊目標應用名稱。
在左側導航欄,選擇 ,單擊無損上下線頁簽。
設置無損上下線
在無損上下線頁面,配置相關信息。
重要如果您是第一次使用該功能,需要在該頁面單擊開啟微服務治理并刷新頁面,才能配置無損上下線。
開啟過程大約需要1~2分鐘,請您耐心等待。
在無損上線區(qū)域,打開無損上線的開關,然后配置一下信息。
配置項
說明
延遲注冊時間(秒)
設置服務注冊的延遲時間。該參數(shù)可以將原本服務注冊時間往后推遲指定時長。如果您的應用在啟動后有耗時較長的異步資源加載過程,可以通過該參數(shù)調節(jié)新上線節(jié)點的服務注冊行為,以推遲其收到調用請求的時機。
重要延遲注冊時長不為0時,必須在應用部署中配置
readiness
(就緒檢查),訪問路徑設置為/health
,且端口設置為54199,以保證服務完全注冊到注冊中心后,Kubernetes才認定該服務為就緒狀態(tài)。這一措施能有效避免因服務消費者找不到可用服務提供者而導致的入流量驟降問題。至關重要的是,切忌將LivenessProbe
(存活探針)設置為同一路徑/health
,因為這樣做可能引發(fā)應用不斷重啟的死循環(huán)狀況。配置應用業(yè)務就緒檢查的具體步驟,請參見在部署應用過程中配置健康檢查。小流量預熱時長(秒)
打開高級選項,設置小流量預熱時長。流量預熱機制是為了確保新節(jié)點加入時,初期分配給該節(jié)點的微服務調用流量維持在較低水平,并隨著時間平緩增加。這樣設計是為了緩解Java應用冷啟動期間處理能力較弱的問題,防止系統(tǒng)整體響應時間(RT)顯著上升。預熱過程將在預設的時長結束后自動終止,之后該節(jié)點將正常承載全量流量。
接入MSE后,無損下線默認開啟。
如果打開主動通知開關,節(jié)點在下線時會主動通知消費者自身已經下線,避免消費者調用到該節(jié)點。默認情況下無需開啟,如果應用使用的是Spring Cloud框架,并且發(fā)現(xiàn)應用在下線過程中有消費者調用出錯的情況,可以嘗試開啟該功能來解決。
關閉無損上下線
無損上線
在目標應用的左側導航欄,選擇
,單擊無損上下線頁簽,然后在無損上線區(qū)域,關閉開關。無損下線
無損下線功能接入MSE后默認開啟,不支持單獨關閉。
如果您無需使用微服務治理功能,為避免產生不必要的MSE費用,可以在應用基本信息頁面右上角,選擇 ,根據(jù)頁面提示信息,關閉微服務治理功能。
關閉微服務治理功能后,除服務列表外,其他微服務治理功能(包括無損上下線、灰度規(guī)則和限流降級)將無法使用,且關閉過程中會觸發(fā)一次應用重啟,請自行判斷業(yè)務風險后再進行操作。