日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

無損上線

對于任何一個線上應用來說,發布、擴容、重啟等操作不可避免。在應用啟動各階段,無損上線能提供相應的保護能力,包括服務延遲注冊、服務小流量預熱、服務就緒檢查三個功能。本文介紹MSE提供的無損上線功能。

無損上線功能概述

延遲注冊

微服務提供者實例會在應用啟動過程中,進行服務的注冊。一旦完成服務注冊,就可以被外部服務消費者應用訂閱和調用。對于基于Spring框架開發的Java應用而言,注冊過程一般發生在Spring上下文刷新完畢之后。如果應用有一些異步初始化邏輯還沒有執行完畢,就直接進行服務注冊,此時消費者前來調用時很可能會產生請求報錯。比如大數據計算服務需要提前從OSS拉取幾百兆數據,待數據拉取完成后才能對外提供服務。因此如果應用啟動后直接注冊服務,會導致流量因資源未就緒而報錯。有了延遲注冊功能之后,我們可以通過設置一定的延遲時間,將原本的服務注冊動作往后推遲。讓應用在充分初始化后再注冊到注冊中心對外提供服務。避免了微服務提供者未準備完畢,就被外部調用,產生調用出錯的情況。

小流量預熱

很多時候,剛啟動的新實例會處于一種“冷機”狀態。冷機狀態下,需要進行比如連接池的懶加載、緩存預熱、熱點代碼生成等操作,因此這些新實例對請求的處理能力會遠遠小于運行很久的實例。如果開發與運維人員不對這個過程進行干涉,可能會造成新實例上線這段時間內,系統整體平均RT時間變高。更壞的情況下,還可能會造成服務“夯”住,導致大量請求調用超時、報錯的情況。

下圖是需要進行資源加載的實例,在尚未完成資源加載的情況下,與資源加載完畢后的兩次請求調用時長對比。在資源加載過程中,如果有大量請求到達該實例,可能都會發生阻塞:

image

小流量預熱功能的思路是,在新服務實例剛上線的這段時間里,控制消費者應用對其調用的流量大小,來避免Java應用冷啟動時請求處理能力差,系統整體RT變高的問題,并且保護新啟動的服務實例不會被大流量擊垮。進入該實例的流量會按一定規則隨時間不斷加大,當達到設置的預熱時長時,小流量預熱過程結束,實例正常接收流量。

說明

小流量預熱使用的是在線的消費者的流量,需要該服務實例的消費者應用也接入MSE服務治理,該功能的具體原理可參見小流量預熱原理

服務注冊狀態檢查

K8s提供了就緒檢查機制(Readiness Probe),在進行服務發布時,新實例就緒檢測通過后,就會下線舊的實例(具體情況取決于設置的發布策略)。然而K8s無法感知微服務何時就緒,當端口啟動時,K8s會認為應用已經就緒。這可能會導致剛啟動的服務還未注冊到注冊中心,就被K8s判定為已經就緒,進而繼續推進服務發布的動作,下線正在運行的舊實例。從而引發消費端調用出錯,并在調用過程中出現service no provider/instance等異常。

無損上線的服務就緒檢查功能,通過Agent的無侵入方式為應用提供一個檢測其是否完成注冊的HTTP接口,如果未完成注冊,則返回500狀態碼;當應用注冊完成后,會返回200狀態碼。用戶將應用的就緒檢測配置成該接口后,可以幫助K8s判定應用是否就緒,保障K8s場景下服務發布上線過程中,服務消費者一直有可用的提供者,不會產生無提供者的報錯。

使用無損上線

前提條件

注意事項

  • 對于Spring Cloud應用,當前僅支持利用Nacos、ZooKeeper以及Eureka這三種類型的注冊中心構建的應用進行服務預熱。

  • Spring Cloud服務預熱功能是基于Spring Cloud框架默認的ZoneAwareLoadBalancerRoundRobinLoadBalancerRandomLoadBalancer負載均衡器實現的,如果應用本身修改了該配置,會導致服務預熱功能失效。

  • 服務預熱需要提供者、消費者都接入MSE服務治理才能生效。比如網關應用,是通過直接對外暴露 API的方式接收外部流量,因此MSE當前的小流量預熱功能對此類應用不生效。

使用方式

步驟一:開啟無損上線

  1. 登錄MSE治理中心控制臺,并在頂部菜單欄選擇地域。

  2. 在左側導航欄,選擇治理中心 > 應用治理,然后單擊目標應用的資源量卡片。

  3. 在目標應用詳情頁面的左側導航欄,單擊流量治理,然后選擇無損上下線頁簽。

  4. 配置信息模塊,單擊修改,打開無損上線按鈕,單擊下方確定

步驟二:配置k8s服務就緒檢查

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面單擊目標集群,在左側導航欄選擇工作負載 > 無狀態,單擊部署的應用操作列下的編輯,在健康檢查欄處,單擊就緒檢查右側的開啟,并配置如下參數。完成后單擊更新

    • 路徑:/health。 (如果您的應用所使用的探針版本大于 4.1.10,路徑請配置成 /readiness。查看探針版本方式:MSE 控制臺 > 治理中心 > 應用治理 > 單擊對應的應用 > 節點詳情,右側可以看到探針版本)

    • 端口:55199。

    • 延遲探測時間(秒):推薦該值的配置大于應用啟動所需時間 + 無損上線功能模塊中配置的延遲注冊時間(默認0秒)二者之和,如果您不按照該建議進行配置,不會影響功能正常使用

    image

重要

該操作會直接引起應用的重啟,如果是生產環境,建議您挑選發布窗口執行該操作!

(可選步驟)配置延遲注冊時長

請根據業務場景需要決定是否配置(詳情見延遲注冊),操作步驟如下:

  1. 根據步驟一、二進入無損上線功能頁面,開啟無損上線功能,并配置K8s服務就緒檢查。

  2. 修改無損上下線配置信息,單擊無損上線模塊左側箭頭展開配置選項,在延遲注冊時長(秒)處設置延遲注冊時長,然后單擊下方確定按鈕。

說明

設置完畢后,在下一次應用啟動時,延遲注冊時長才會生效。

(可選步驟)調整小流量預熱時長

開啟無損上線后,該功能會自動開啟。默認預熱時長為120秒。可以根據業務場景需要進行調整:

  1. 根據步驟一、二進入無損上線功能頁面,開啟無損上線功能,并配置K8s服務就緒檢查。

  2. 修改無損上下線配置信息,單擊無損上線模塊左側箭頭展開配置選項,單擊高級選項,在小流量預熱時長(秒)處設置小流量預熱時長,然后單擊下方確定按鈕。

說明
  • 設置完畢后,在下一次應用啟動時,調整后的小流量預熱時長才會生效。

  • 小流量預熱方法通過在服務消費端根據各個服務提供者實例的啟動時間計算權重,結合負載均衡算法,控制剛啟動應用流量隨啟動時間逐漸遞增到正常水平的過程,幫助剛啟動運行的服務進行預熱。同時這也要求了服務消費者也接MSE服務治理

  • 建議您在首次使用無損上線的小流量預熱功能時,使用默認的預熱時長即可。如果在使用默認值預熱服務的過程中發現預熱效果不明顯,出現流量損失,再通過調節該參數進行優化。

  • 為了保證預熱充分,建議您參考小流量預熱最佳實踐

無損上線觀測

經過上述配置后,當您的應用再次啟動時,可以在無損上下線功能頁面,看到應用實例上線下線的具體時間,以及同時期該實例的QPS曲線:

  1. 登錄MSE治理中心控制臺,并在頂部菜單欄選擇地域。

  2. 在左側導航欄,選擇治理中心 > 應用治理,然后單擊目標應用的資源量卡片。

  3. 在目標應用詳情頁面的左側導航欄,單擊流量治理,然后選擇無損上下線頁簽。

  4. 上下線概覽中,單擊左側的上下線實例,在右側可以看到該實例在上線階段的QPS變化以及對應發生的事件。

    image

您可以看到,應用先后會出現服務注冊、開始預熱、預熱結束這幾個事件,并且K8s Readines檢查通過的事件也發生在服務注冊事件之后。QPS曲線是在預熱時長內(默認 120s)逐步上升到最大值,而不是直接陡升上去。如果您的應用在上線時,事件順序、QPS曲線形狀不符合預期,可以參考FAQ來解決。

說明

示例圖中的應用, 其K8s就緒檢測已經配置成55199/health,并且將最小準備時間(minReadySeconds)配置成120秒,和默認的預熱時長一致。

相關文檔

使用YAML配置無損上下線