1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        云原生體系下 Serverless 彈性探索與實踐

        共 9131字,需瀏覽 19分鐘

         ·

        2021-10-12 16:53

        ?Serverless 時代的來臨




        Serverless 顧名思義,是一種“無服務(wù)器”架構(gòu),因為屏蔽了服務(wù)器的各種運維復(fù)雜度,讓開發(fā)人員可以將更多精力用于業(yè)務(wù)邏輯設(shè)計與實現(xiàn)。在 Serverless 架構(gòu)下,開發(fā)者只需要關(guān)注于上層應(yīng)用邏輯的開發(fā),而諸如資源申請,環(huán)境搭建,負(fù)載均衡,擴縮容等等服務(wù)器相關(guān)的復(fù)雜操作都由平臺來進(jìn)行維護。在云原生架構(gòu)白皮書中,對 Serverless 的特性有以下概括:

        • 全托管的計算服務(wù),客戶只需要編寫代碼構(gòu)建應(yīng)用,無需關(guān)注同質(zhì)化的、負(fù)擔(dān)繁重的基于服務(wù)器等基礎(chǔ)設(shè)施的開發(fā)、運維、安全、高可用等工作;
        • 通用性,能夠支撐云上所有重要類型的應(yīng)用;
        • 自動的彈性伸縮,讓用戶無需為資源使用提前進(jìn)行容量規(guī)劃;
        • 按量計費,讓企業(yè)使用成本得有效降低,無需為閑置資源付費。


          回顧整個 Serverless 的發(fā)展歷程,我們可以看到從 2012 年首次提出 Serverless 概念為起點,再到 AWS 推出 Lambda 云產(chǎn)品的這段時間內(nèi),人們對 Serverless 的關(guān)注度出現(xiàn)了爆發(fā)式的增長,對無服務(wù)器的期待和暢想逐漸引爆整個行業(yè),但 Serverless 的推廣和生產(chǎn)落地的過程卻不容樂觀,Serverless 理念與實操生產(chǎn)的過程中存在 Gap,挑戰(zhàn)著人們固有的使用體驗和習(xí)慣。

          阿里云堅信 Serverless 將作為云原生之后確定性的發(fā)展方向,相繼推出了 FC、SAE 等多款云產(chǎn)品來覆蓋不同領(lǐng)域,不同類型的應(yīng)用負(fù)載來使用 Serverless 技術(shù),并且不斷在推進(jìn)整個 Serverless 理念的普及與發(fā)展。


          就當(dāng)前 Serverless 整個市場格局而言,阿里云已經(jīng)做到了 Serverless 產(chǎn)品能力中國第一,全球領(lǐng)先,在去年 Forrester 評測魔力象限中可以明顯的看到阿里云在 Serverless 領(lǐng)域已經(jīng)與 AWS 不相上下,于此同時,阿里云 Serverless 用戶占比中國第一,在 2020 年中國云原生用戶調(diào)研報告中整個阿里云 Serverless 用戶占比已經(jīng)達(dá)到了 66%,而在 Serverless 技術(shù)采用情況的調(diào)研中表明,已經(jīng)有越來越多的開發(fā)者和企業(yè)用戶將 Serverless 技術(shù)應(yīng)用于核心業(yè)務(wù)或者將要應(yīng)用于核心業(yè)務(wù)之中。


          Serverless 彈性探索




          彈性能力作為云的核心能力之一,所關(guān)注的問題是容量規(guī)劃與實際集群負(fù)載間的矛盾,通過兩幅圖的對比可以看到,如果采用預(yù)先規(guī)劃的方式進(jìn)行資源安排,會由于資源準(zhǔn)備量和資源需求量的不匹配導(dǎo)致資源浪費或者資源不足的情況,進(jìn)而導(dǎo)致成本上的過多開銷甚至業(yè)務(wù)受損,而我們期望極致彈性能力,是準(zhǔn)備的資源和實際需求的資源幾乎匹配,這樣使得應(yīng)用整體的資源利用率較高,成本也隨業(yè)務(wù)的增減和相應(yīng)的增減,同時不會出現(xiàn)因容量問題影響應(yīng)用可用性的情況,這就是彈性的價值。

          彈性其實現(xiàn)上分為可伸縮性和故障容忍性,可伸縮性意味著底層資源可以參照指標(biāo)的變化有一定的自適應(yīng)能力,而故障容忍性則是通過彈性自愈確保服務(wù)中的應(yīng)用或?qū)嵗幱诮】档臓顟B(tài)。上述能力帶來的價值收益在于降成本的同時提升應(yīng)用可用性,一方面,資源使用量貼合應(yīng)用實際消耗量,另一方面,提升峰值的應(yīng)用可用性,進(jìn)而靈活適應(yīng)市場的不斷發(fā)展與變化。

          下面將對當(dāng)前較為普遍的三種彈性伸縮模式進(jìn)行闡述和分析。


          首先是 IaaS 彈性伸縮,其代表產(chǎn)品是各云廠商云服務(wù)器彈性伸縮,如阿里云 ESS,可以通過配置云監(jiān)控的告警規(guī)則來觸發(fā)相應(yīng)的 ECS 增減操作,同時支持動態(tài)增減 Slb 后端服務(wù)器和rds白名單來保證可用性,通過健康檢查功能實現(xiàn)彈性自愈能力。ESS 定義了伸縮組的概念,即彈性伸縮的基本單位,為相同應(yīng)用場景的 ECS 實例的集合及關(guān)聯(lián) Slb、Rds,同時支持多種伸縮規(guī)則,如簡單規(guī)則,進(jìn)步規(guī)則,目標(biāo)追蹤規(guī)則,預(yù)測規(guī)則等,用戶的使用流程為創(chuàng)建伸縮組和伸縮配置,創(chuàng)建伸縮規(guī)則,監(jiān)控查看彈性執(zhí)行情況。

          Kubernetes 彈性伸縮,這里主要關(guān)注于水平彈性 Hpa,其代表產(chǎn)品為 K8s 以及其所對應(yīng)的托管云產(chǎn)品,如阿里云容器服務(wù),K8s 作為面向應(yīng)用運維的基礎(chǔ)設(shè)施和 Platform for Platform,提供的內(nèi)置能力主要是圍繞著容器級別的管理和編排來展開的,而彈性能力聚焦于對底層 Pod 的動態(tài)水平伸縮,K8s hpa 通過輪詢pod的監(jiān)控數(shù)據(jù)并將它與目標(biāo)期望值比較進(jìn)行,通過算法實時計算來產(chǎn)生期望的副本數(shù),進(jìn)而對 Workload 的副本數(shù)進(jìn)行增減操作,用戶在實際使用上需要創(chuàng)建并配置對應(yīng)的指標(biāo)源和彈性規(guī)則以及對應(yīng)的 Workload,可以通過事件來查看彈性的執(zhí)行情況。

          最后介紹一下應(yīng)用畫像彈性伸縮,其主要用于互聯(lián)網(wǎng)公司內(nèi)部,如阿里 ASI 容量平臺。容量平臺提供容量預(yù)測服務(wù)和容量變更決策服務(wù),指導(dǎo)底層容量變更組件如 AHPA/VPA 實現(xiàn)容量彈性伸縮,并根據(jù)彈性結(jié)果修正容量畫像。以畫像驅(qū)動為主 + 指標(biāo)驅(qū)動為輔實現(xiàn)彈性伸縮能力,通過提前伸縮 + 實時修正來降低彈性伸縮風(fēng)險。

          整個彈性伸縮會借助 odps 和機器學(xué)習(xí)能力對實例監(jiān)控等數(shù)據(jù)進(jìn)行處理并產(chǎn)生應(yīng)用畫像,如基準(zhǔn)畫像,彈性畫像,大促畫像等,并借助容量平臺來完成畫像注入,變更管控和故障熔斷等操作。用戶使用流程為應(yīng)用接入,基于歷史數(shù)據(jù)/經(jīng)驗生成對應(yīng)的容量畫像,實時監(jiān)控指標(biāo)修正畫像,并監(jiān)控查看彈性執(zhí)行情況。

          ?

          從對比可以看出各產(chǎn)品彈性伸縮功能模式上從抽象來講基本相同,均由觸發(fā)源,彈性決策和觸發(fā)動作組成,觸發(fā)源一般依賴外部監(jiān)控系統(tǒng),對節(jié)點指標(biāo),應(yīng)用指標(biāo)進(jìn)行采集處理,彈性決策一般基于周期性輪詢并算法決策,有部分基于歷史數(shù)據(jù)分析預(yù)測以及用戶定義的定時策略,而觸發(fā)動作為對實例進(jìn)行水平擴縮,并提供變更記錄與對外通知。各個產(chǎn)品在此基礎(chǔ)上做場景豐富度,效率,穩(wěn)定性的競爭力,并通過可觀測能力提升彈性系統(tǒng)的透明度,便于問題排查和指導(dǎo)彈性優(yōu)化,同時提升用戶使用體驗與粘性。

          各產(chǎn)品彈性伸縮模型也存在這一定的差異,對于 IaaS 彈性伸縮,其作為老牌彈性伸縮能力,沉淀時間長,功能強大且豐富,云廠商間能力趨于同質(zhì)化。彈性效率相較容器受限,且強綁定各自底層 Iaas 資源。Kubernetes 作為開源產(chǎn)品,通過社區(qū)力量不斷優(yōu)化迭代彈性能力和最佳實踐,更符合絕大部分開發(fā)運維人員訴求。對彈性行為和 API 進(jìn)行高度抽象,但其可擴展性不強,無法支持自定義需求。而應(yīng)用畫像彈性伸縮具有集團內(nèi)部特色,根據(jù)集團應(yīng)用現(xiàn)狀和彈性訴求進(jìn)行設(shè)計,且更聚焦于資源池預(yù)算成本優(yōu)化,縮容風(fēng)險,復(fù)雜度等痛點。不易拷貝擴展,特別對于外部中小客戶不適用。

          從終態(tài)目標(biāo)上,可以看出公有云與互聯(lián)網(wǎng)企業(yè)方向的不同:

          • 互聯(lián)網(wǎng)企業(yè)往往由于其內(nèi)部應(yīng)用具有顯著流量特征,應(yīng)用啟動依賴多,速度慢,且對整體資源池容量水位,庫存財務(wù)管理,離在線混部有組織上的諸多訴求,因而更多的是以容量畫像提前彈性擴容為主,基于 Metrics 計算的容量數(shù)據(jù)作為實時修正,其目標(biāo)是容量畫像足夠精準(zhǔn)以至于資源利用率達(dá)到預(yù)期目標(biāo)。
          • 公有云廠商服務(wù)于外部客戶,提供更為通用,普適的能力,并通過可拓展性滿足不同用戶的差異化需求。尤其在 Serverless 場景,更強調(diào)應(yīng)用應(yīng)對突發(fā)流量的能力,其目標(biāo)在于無需容量規(guī)劃,通過指標(biāo)監(jiān)控配合極致彈性能力實現(xiàn)應(yīng)用資源的近乎按需使用且整個過程服務(wù)可用。


          Serverless 彈性落地




          Serverless 作為云計算的最佳實踐、云原生發(fā)展的方向和未來演進(jìn)趨勢,其核心價值在于快速交付、智能彈性、更低成本。

          在時代背景下,SAE 應(yīng)運而生,SAE 是一款面向應(yīng)用的 Serverless PaaS 平臺,支持 Spring Cloud、Dubbo 等主流開發(fā)框架,用戶可以零代碼改造直接將應(yīng)用部署到? SAE,并且按需使用,按量計費,可以充分發(fā)揮 Serverless 的優(yōu)勢為客戶節(jié)省閑置資源成本,同時體驗上采用全托管,免運維的方式,用戶只需聚焦于核心業(yè)務(wù)開發(fā),而應(yīng)用生命周期管理,微服務(wù)管理,日志,監(jiān)控等功能交由 SAE 完成。
          ?

          彈性的競爭力主要在于場景豐富度,效率,穩(wěn)定性的競爭力,先講一下 SAE 在彈性效率上的優(yōu)化。

          通過對 SAE 應(yīng)用的整個生命周期進(jìn)行數(shù)據(jù)統(tǒng)計和可視化分析,其包含調(diào)度,init container 創(chuàng)建,拉取用戶鏡像,創(chuàng)建用戶容器,啟動用戶容器&應(yīng)用這幾個階段,示意圖中對其耗時的占比進(jìn)行了簡化。我們可以看到整個應(yīng)用生命周期耗時集中于調(diào)度,拉取用戶鏡像,應(yīng)用冷啟動這幾個階段。

          針對于調(diào)度階段,其耗時主要在于 SAE 當(dāng)前會執(zhí)行打通用戶 VPC 操作,由于該步驟強耦合于調(diào)度,本身耗時較長,且存在創(chuàng)建長尾超時,失敗重試等情況,導(dǎo)致調(diào)度鏈路整體耗時較長。由此產(chǎn)生的疑問是可否優(yōu)化調(diào)度速度?可否跳過調(diào)度階段 ? 而對于拉取用戶鏡像,其包含拉取鏡像與解壓鏡像的時長,特別是在大容量鏡像部署的情況下尤為突出。

          優(yōu)化的思路在于拉取鏡像是否可以優(yōu)化使用緩存,解壓鏡像是否可以優(yōu)化。而對于應(yīng)用冷啟動,SAE 存在大量單體和微服務(wù)的 JAVA 應(yīng)用,JAVA 類型應(yīng)用往往啟動依賴多,加載配置慢,初始化過程長,導(dǎo)致冷啟動速往往達(dá)到分鐘級。優(yōu)化的方向在于可否避免冷啟動流程并使用戶盡量無感,應(yīng)用無改造。

          首先 SAE 采用了原地升級能力,SAE 起初使用了 K8s 原生的 Deployment 滾動升級策略進(jìn)行發(fā)布流程,會先創(chuàng)建新版本 Pod,再銷毀舊版本 Pod 進(jìn)行升級,而所謂原地升級,即只更新 Pod 中某一個或多個容器版本、而不影響整個 Pod 對象、其余容器的升級。其原理是通過 K8s patch 能力,實現(xiàn)原地升級 container,通過 K8s readinessGates 能力,實現(xiàn)升級過程中流量無損。

          原地升級給 SAE 帶來了諸多價值,其中最重要的是避免重調(diào)度,避免 Sidecar 容器(ARMS,SLS,AHAS)重建,使得整個部署耗時從消耗整個 Pod 生命周期到只需要拉取和創(chuàng)建業(yè)務(wù)容器,于此同時因為無需調(diào)度,可以預(yù)先在 Node 上緩存新鏡像,提高彈性效率。SAE 采用阿里開源 Openkruise 項目提供的 Cloneset 作為新的應(yīng)用負(fù)載,借助其提供的原地升級能力,使得整個彈性效率提升 42%。


          同時 SAE 采用了鏡像預(yù)熱能力,其包含兩種預(yù)熱形式:調(diào)度前預(yù)熱,SAE 會對通用的基礎(chǔ)鏡像進(jìn)行全節(jié)點緩存,以避免其頻繁的從遠(yuǎn)端進(jìn)行拉取。與此同時對于分批的場景支持調(diào)度中預(yù)熱,借助 Cloneset 原地升級能力,在升級的過程中可以感知到實例的節(jié)點分布情況,這樣就可以在第一批部署新版本鏡像的同時,對后面批次的實例所在節(jié)點進(jìn)行鏡像預(yù)拉取,進(jìn)而實現(xiàn)調(diào)度與拉取用戶鏡像并行。通過這項技術(shù),SAE 彈性效率提升了 30%。


          剛才講述的優(yōu)化點在于拉取鏡像部分,而對于解壓鏡像,傳統(tǒng)容器運行需要將全量鏡像數(shù)據(jù)下載后再解包,然而容器啟動可能僅使用其中部分的內(nèi)容,導(dǎo)致容器啟動耗時長。SAE 通過鏡像加速技術(shù),將原有標(biāo)準(zhǔn)鏡像格式自動轉(zhuǎn)化為支持隨機讀取的加速鏡像,可以實現(xiàn)鏡像數(shù)據(jù)免全量下載和在線解壓,大幅提升應(yīng)用分發(fā)效率,同時利用 Acree 提供的 p2p 分發(fā)能力也可以有效減少鏡像分發(fā)的時間。


          對于 Java 應(yīng)用冷啟動較慢的痛點,SAE 聯(lián)合 Dragonwell 11 提供了增強的 AppCDS ?啟動加速策略,AppCDS 即 Application Class Data Sharing,通過這項技術(shù)可以獲取應(yīng)用啟動時的 Classlist 并 Dump 其中的共享的類文件,當(dāng)應(yīng)用再次啟動時可以使用共享文件來啟動應(yīng)用,進(jìn)而有效減少冷啟動耗時。映射到 SAE 的部署場景,應(yīng)用啟動后會生成對應(yīng)的緩存文件在共享的 NAS 中,而在進(jìn)行下一次發(fā)布的過程中就可以使用緩存文件進(jìn)行啟動。整體冷啟動效率提升 45%。


          除了對整個應(yīng)用生命周期的效率進(jìn)行優(yōu)化外,SAE 也對彈性伸縮進(jìn)行了優(yōu)化,整個彈性伸縮流程包括彈性指標(biāo)獲取,指標(biāo)決策以及執(zhí)行彈性擴縮操作三部分。對于彈性指標(biāo)獲取,基礎(chǔ)監(jiān)控指標(biāo)數(shù)據(jù)已經(jīng)達(dá)到了秒級獲取,而對于七層的應(yīng)用監(jiān)控指標(biāo),SAE 正在規(guī)劃采用流量透明攔截的方案保證指標(biāo)獲取的實時性。而彈性決策階段,彈性組件啟用了多隊列并發(fā)進(jìn)行 Reconcile,并實時監(jiān)控隊列堆積,延時情況。


          SAE 彈性伸縮包括強大的指標(biāo)矩陣,豐富的策略配置,完善的通知告警機制及全方位可觀測能力,支持多種數(shù)據(jù)源:原生的MetricsServer、MetricsAdapter、Prometheus,云產(chǎn)品 SLS、CMS、SLB 以及外部的網(wǎng)關(guān)路由等,支持多種指標(biāo)類型:CPU、MEM、QPS、RT、TCP 連接數(shù),出入字節(jié)數(shù),磁盤使用率,Java 線程數(shù),GC 數(shù)還有自定義指標(biāo)。對指標(biāo)的抓取和預(yù)處理后,可以自定義配置彈性策略來適配應(yīng)用的具體場景:快擴快縮,快擴慢縮,只擴不縮,只縮不擴,DRYRUN,自適應(yīng)擴縮等。同時可以進(jìn)行更為精細(xì)化的彈性參數(shù)配置,如實例上下限,指標(biāo)區(qū)間,步長比例范圍,冷卻、預(yù)熱時間,指標(biāo)采集周期和聚和邏輯,CORN 表達(dá)式,后續(xù)也會支持事件驅(qū)動的能力。

          彈性觸發(fā)后會進(jìn)行對應(yīng)的擴縮容操作,并通過切流保證流量無損,并且可以借助完善的通知告警能力(釘釘,webhook,電話,郵件,短信)來實時觸達(dá)告知用戶。彈性伸縮提供了全方位的可觀測能力,對彈性的決策時間,決策上下文進(jìn)行清晰化展現(xiàn),并且做到實例狀態(tài)可回溯,實例 SLA 可監(jiān)控。


          SAE 彈性能力在場景豐富度上也有著相應(yīng)的競爭力,這里重點介紹一下 SAE 當(dāng)前支持的四種場景:

          • 定時彈性:在已知應(yīng)用流量負(fù)載周期的情況下進(jìn)行配置,應(yīng)用實例數(shù)可以按照時間,星期,日期周期進(jìn)行規(guī)律化擴縮,如在早 8 點到晚 8 點的時間段保持 10 個實例數(shù)應(yīng)對白天流量,而在其余時間由于流量較低則維持在 2 個實例數(shù)甚至縮 0。適用于資源使用率有周期性規(guī)律的應(yīng)用場景,多用于證券、醫(yī)療、政府和教育等行業(yè)。
          • 指標(biāo)彈性:可以配置期望的監(jiān)控指標(biāo)規(guī)則,SAE 會時應(yīng)用的指標(biāo)穩(wěn)定在所配置的指標(biāo)規(guī)則內(nèi),并且默認(rèn)采用快擴慢縮的模式來保證穩(wěn)定性。如將應(yīng)用的cpu指標(biāo)目標(biāo)值設(shè)置為 60%,qps 設(shè)置為 1000,實例數(shù)范圍為 2-50。這種適用于突發(fā)流量和典型周期性流量的應(yīng)用場景,多用于互聯(lián)網(wǎng)、游戲和社交平臺等行業(yè)。
          • 混合彈性:將定時彈性與指標(biāo)彈性相結(jié)合,可以配置不同時間,星期,日期下的指標(biāo)規(guī)則,進(jìn)而更加靈活的應(yīng)對復(fù)雜場景的需求。如早 8 點到晚 8 點的時間段 CPU 指標(biāo)目標(biāo)值設(shè)置為 60%,實例數(shù)范圍為 10-50,而其余時間則將實例數(shù)范圍降為 2-5,適用于兼?zhèn)滟Y源使用率有周期性規(guī)律和有突發(fā)流量、典型周期性流量的應(yīng)用場景,多用于互聯(lián)網(wǎng)、教育和餐飲等行業(yè)。
          • 自適應(yīng)彈性:SAE 針對流量突增場景進(jìn)行了優(yōu)化,借助流量激增窗口,計算當(dāng)前指標(biāo)在這個時刻上是否出現(xiàn)了流量激增問題,并會根據(jù)流量激增的強烈程度在計算擴容所需的實例時會增加一部分的冗余,并且在激增模式下,不允許縮容。


          穩(wěn)定性是 SAE 彈性能力建設(shè)的過程中非常重要的一環(huán),保證用戶應(yīng)用在彈性過程中按照預(yù)期行為進(jìn)行擴縮,并保證整個過程的可用性是關(guān)注的重點。SAE 彈性伸縮整體遵循快擴慢縮的原則,通過多級平滑防抖保證執(zhí)行穩(wěn)定性,同時對于指標(biāo)激增場景,借助自適應(yīng)能力提前擴容。SAE 當(dāng)前支持四級彈性平滑配置保證穩(wěn)定性:

          • 一級平滑:對指標(biāo)獲取周期,單次指標(biāo)獲取的時間窗口,指標(biāo)計算聚和邏輯進(jìn)行配置
          • 二級平滑:對指標(biāo)數(shù)值容忍度,區(qū)間彈性進(jìn)行配置
          • 三級平滑:對單位時間擴縮步長,百分比,上下限進(jìn)行配置
          • 四級平滑:對擴縮冷卻窗口,實例預(yù)熱時間進(jìn)行配置


            Serverless 彈性最佳實踐




            SAE 彈性伸縮可以有效解決瞬時流量波峰到來時應(yīng)用自動擴容,波峰結(jié)束后自動縮容。高可靠性、免運維、低成本的保障應(yīng)用平穩(wěn)運行,在使用的過程中建議遵循以下最佳實踐進(jìn)行彈性配置。

            配置健康檢查和生命周期管理

            建議對應(yīng)用健康檢查進(jìn)行配置,以保證彈性擴縮過程中的應(yīng)用整體可用性,確保您的應(yīng)用僅在啟動、運行并且準(zhǔn)備好接受流量時才接收流量 同時建議配置生命周期管理 Prestop,以確保縮容時按照預(yù)期優(yōu)雅下線您的應(yīng)用。

            采用指數(shù)重試機制

            為避免因彈性不及時,應(yīng)用啟動不及時或者應(yīng)用沒有優(yōu)雅上下線導(dǎo)致的服務(wù)調(diào)用異常,建議調(diào)用方采用指數(shù)重試機制進(jìn)行服務(wù)調(diào)用。

            應(yīng)用啟動速度優(yōu)化

            為提升彈性效率,建議您優(yōu)化應(yīng)用的創(chuàng)建速度,可以從以下方面考慮優(yōu)化:

            • 軟件包優(yōu)化:優(yōu)化應(yīng)用啟動時間,減少因類加載、緩存等外部依賴導(dǎo)致的應(yīng)用啟動過長

            • 鏡像優(yōu)化:精簡鏡像大小,減少創(chuàng)建實例時鏡像拉取耗時,可借助開源工具 Dive,分析鏡像層信息,有針對性的精簡變更

            • Java 應(yīng)用啟動優(yōu)化:借助 SAE 聯(lián)合 Dragonwell 11 ,為 Java 11 用戶提供了應(yīng)用啟動加速功能



            彈性伸縮指標(biāo)配置

            彈性伸縮指標(biāo)配置,SAE 支持基礎(chǔ)監(jiān)控,應(yīng)用監(jiān)控多指標(biāo)組合配置,您可以根據(jù)當(dāng)前應(yīng)用的屬性(CPU 敏感 /內(nèi)存敏感 /io 敏感)進(jìn)行靈活選擇。

            可以通過對基礎(chǔ)監(jiān)控和應(yīng)用監(jiān)控對應(yīng)指標(biāo)歷史數(shù)據(jù)( 如過去 6h, 12h, 1 天,7 天峰值,P99,P95 數(shù)值)進(jìn)行查看并預(yù)估指標(biāo)目標(biāo)值,可借助 PTS 等壓測工具進(jìn)行壓測,了解應(yīng)用可以應(yīng)對的并發(fā)請求數(shù)量、需要的 CPU 和內(nèi)存數(shù)量,以及高負(fù)載狀態(tài)下的應(yīng)用響應(yīng)方式,以評估應(yīng)用容量峰值大小。

            指標(biāo)目標(biāo)值需要權(quán)衡可用性與成本進(jìn)行策略選擇,如:
            ??
            • 可用性優(yōu)化策略 配置指標(biāo)值為 40%

            • 可用性成本平衡策略 配置指標(biāo)值為 50%

            • 成本優(yōu)化策略 配置指標(biāo)值為 70%


            同時彈性配置應(yīng)考慮梳理上下游,中間件,DB 等相關(guān)依賴,配置對應(yīng)的彈性規(guī)則或者限流降級手段,確保擴容時全鏈路可以保證可用性。

            在配置彈性規(guī)則后,通過不斷監(jiān)視和調(diào)整彈性規(guī)則以使容量更加接近應(yīng)用實際負(fù)載。

            內(nèi)存指標(biāo)配置

            關(guān)于內(nèi)存指標(biāo),考慮部分應(yīng)用類型采用動態(tài)內(nèi)存管理進(jìn)行內(nèi)存分配(如 Java jvm 內(nèi)存管理,glibc malloc 和 free 操作),應(yīng)用閑置內(nèi)存并沒有及時釋放給操作系統(tǒng),實例消耗的物理內(nèi)存并不會及時減少且新增實例并不能減少平均內(nèi)存消耗,進(jìn)而無法觸發(fā)縮容,針對于該類應(yīng)用不建議采用內(nèi)存指標(biāo)。

            Java 應(yīng)用運行時優(yōu)化
            ? ??
            釋放物理內(nèi)存,增強內(nèi)存指標(biāo)與業(yè)務(wù)關(guān)聯(lián)性:借助 Dragonwell 運行時環(huán)境,通過增加 JVM 參數(shù)開啟 ElasticHeap 能力,支持 Java 堆內(nèi)存的動態(tài)彈性伸縮,節(jié)約Java進(jìn)程實際使用的物理內(nèi)存占用。

            最小實例數(shù)配置

            配置彈性伸縮最小實例數(shù)建議大于等于 2,且配置多可用區(qū) VSwitch,防止因底層節(jié)點異常導(dǎo)致實例驅(qū)逐或可用區(qū)無可用實例時應(yīng)用停止工作,保證應(yīng)用整體高可用。

            最大實例數(shù)配置

            配置彈性伸縮最大實例數(shù)時,應(yīng)考慮可用區(qū) IP 數(shù)是否充足,防止無法新增實例??梢栽诳刂婆_ VSwitch 處查看當(dāng)前應(yīng)用可用 IP,若可用 IP 較少考慮替換或新增 VSwitch。


            彈性到達(dá)最大值

            可以通過應(yīng)用概覽查看當(dāng)前開啟彈性伸縮配置的應(yīng)用,并及時發(fā)現(xiàn)當(dāng)前實例數(shù)已經(jīng)到達(dá)峰值的應(yīng)用,進(jìn)行重新評估其彈性伸縮最大值配置是否合理。若期望最大實例數(shù)超過產(chǎn)品限制(當(dāng)前限制單應(yīng)用50實例數(shù),可提工單反饋提高上限)

            可用區(qū)再均衡

            彈性伸縮觸發(fā)縮容后可能會導(dǎo)致可用區(qū)分配不均,可以在實例列表中查看實例所屬可用區(qū),若可用區(qū)不均衡可以通過重啟應(yīng)用操作實現(xiàn)再均衡。

            自動恢復(fù)彈性配置

            當(dāng)進(jìn)行應(yīng)用部署等變更單操作時,SAE 會停止當(dāng)前應(yīng)用的彈性伸縮配置避免兩種操作沖突,若期望變更單完成后恢復(fù)彈性配置,可以在部署時勾選系統(tǒng)自動恢復(fù)。


            彈性歷史記錄

            SAE 彈性生效行為當(dāng)前可通過事件進(jìn)行查看擴縮時間,擴縮動作,以及實時,歷史決策記錄和決策上下文可視化功能,以便衡量彈性伸縮策略的有效性,并在必要時進(jìn)行調(diào)整。

            彈性事件通知

            結(jié)合釘釘、webhook、短信電話等多種通知渠道,便于及時了解彈性觸發(fā)狀況


            最后分享一個采用 SAE 彈性伸縮功能的客戶案例,在 2020 新冠疫情期間,某在線教育客戶業(yè)務(wù)流量暴漲 7-8 倍,硬件成本和業(yè)務(wù)穩(wěn)定性面臨巨大風(fēng)險。如果此時采用傳統(tǒng)的 ECS 架構(gòu),客戶就需要在非常短的時間內(nèi)做基礎(chǔ)設(shè)施的架構(gòu)升級,這對用戶的成本及精力都是非常大的挑戰(zhàn)。但如果采用 SAE,用戶 0 改造成本即可享受 Serverless 帶來的技術(shù)紅利,結(jié)合 SAE 的多場景彈性策略配置,彈性自適應(yīng)和實時可觀測能力,保障了用戶應(yīng)用在高峰期的業(yè)務(wù) SLA,并且通過極致彈性效率,節(jié)省硬件成本達(dá)到 35%。

            綜上,彈性發(fā)展方向上,尤其是在 Serverless 場景,更強調(diào)應(yīng)對突發(fā)流量的能力,其目標(biāo)在于無需容量規(guī)劃,通過指標(biāo)監(jiān)控配合極致彈性能力實現(xiàn)應(yīng)用資源的近乎按需使用且整個過程服務(wù)可用。SAE 通過對彈性組件和應(yīng)用全生命周期的不斷優(yōu)化以達(dá)到秒級彈性,并在彈性能力,場景豐富度,穩(wěn)定性上具備核心競爭力,是傳統(tǒng)應(yīng)用 0 改造上 Serverless 的最佳選擇。

            區(qū)網(wǎng)址一覽



            社區(qū)官網(wǎng)
            http://www.serverless-devs.com/
            項目倉庫
            https://github.com/Serverless-Devs/Serverless-Devs
            Serverless Desktop 桌面客戶端
            https://serverlessdevs.resume.net.cn/zh-cn/desktop/index.html
            Serverless?應(yīng)用開發(fā)者套件
            http://serverless-dk.oss.devsapp.net/docs/tutorial-dk/intro/react
            Serverless Devs CLI?
            https://serverlessdevs.resume.net.cn/zh-cn/cli/index.html
            Serverless Hub 應(yīng)用中心
            https://serverlesshub.resume.net.cn/#/hubs/special-view


            ??戳“閱讀原文”,?立即體驗 Serverless Devs!
            瀏覽 71
            點贊
            評論
            收藏
            分享

            手機掃一掃分享

            分享
            舉報
            評論
            圖片
            表情
            推薦
            點贊
            評論
            收藏
            分享

            手機掃一掃分享

            分享
            舉報
            1. <strong id="7actg"></strong>
            2. <table id="7actg"></table>

            3. <address id="7actg"></address>
              <address id="7actg"></address>
              1. <object id="7actg"><tt id="7actg"></tt></object>
                丰满的岳乱妇s级 | 男女差差差网站 | 日本一级婬片AAAAAA片麻代 | 亚洲午夜福利在线观看 | 欧美性爱黄 | 天天成人电影 | 一级片视频网站 | 亚欧黄色| 国产一区二区在线免费观看 | 国产又爽 又黄 免费网站视频 |