<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          云原生體系下 Serverless 彈性探索與實(shí)踐

          共 9131字,需瀏覽 19分鐘

           ·

          2021-10-12 16:53

          ?Serverless 時(shí)代的來(lái)臨




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

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


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

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


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


            Serverless 彈性探索




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

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

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


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

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

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

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

            ?

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

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

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

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


            Serverless 彈性落地




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

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

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

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

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

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

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

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


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


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


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


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


            SAE 彈性伸縮包括強(qiáng)大的指標(biāo)矩陣,豐富的策略配置,完善的通知告警機(jī)制及全方位可觀測(cè)能力,支持多種數(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)。對(duì)指標(biāo)的抓取和預(yù)處理后,可以自定義配置彈性策略來(lái)適配應(yīng)用的具體場(chǎng)景:快擴(kuò)快縮,快擴(kuò)慢縮,只擴(kuò)不縮,只縮不擴(kuò),DRYRUN,自適應(yīng)擴(kuò)縮等。同時(shí)可以進(jìn)行更為精細(xì)化的彈性參數(shù)配置,如實(shí)例上下限,指標(biāo)區(qū)間,步長(zhǎng)比例范圍,冷卻、預(yù)熱時(shí)間,指標(biāo)采集周期和聚和邏輯,CORN 表達(dá)式,后續(xù)也會(huì)支持事件驅(qū)動(dòng)的能力。

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


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

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


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

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


              Serverless 彈性最佳實(shí)踐




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

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

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

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

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

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

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

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

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

              • Java 應(yīng)用啟動(dòng)優(yōu)化:借助 SAE 聯(lián)合 Dragonwell 11 ,為 Java 11 用戶提供了應(yīng)用啟動(dò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)行靈活選擇。

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

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

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

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


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

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

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

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

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

              最小實(shí)例數(shù)配置

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

              最大實(shí)例數(shù)配置

              配置彈性伸縮最大實(shí)例數(shù)時(shí),應(yīng)考慮可用區(qū) IP 數(shù)是否充足,防止無(wú)法新增實(shí)例。可以在控制臺(tái) VSwitch 處查看當(dāng)前應(yīng)用可用 IP,若可用 IP 較少考慮替換或新增 VSwitch。


              彈性到達(dá)最大值

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

              可用區(qū)再均衡

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

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

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


              彈性歷史記錄

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

              彈性事件通知

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


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

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

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



              社區(qū)官網(wǎng)
              http://www.serverless-devs.com/
              項(xiàng)目倉(cāng)庫(kù)
              https://github.com/Serverless-Devs/Serverless-Devs
              Serverless Desktop 桌面客戶端
              https://serverlessdevs.resume.net.cn/zh-cn/desktop/index.html
              Serverless?應(yīng)用開(kāi)發(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


              ??戳“閱讀原文”,?立即體驗(yàn) Serverless Devs
              瀏覽 71
              點(diǎn)贊
              評(píng)論
              收藏
              分享

              手機(jī)掃一掃分享

              分享
              舉報(bào)
              評(píng)論
              圖片
              表情
              推薦
              點(diǎn)贊
              評(píng)論
              收藏
              分享

              手機(jī)掃一掃分享

              分享
              舉報(bào)
              <kbd id="afajh"><form id="afajh"></form></kbd>
              <strong id="afajh"><dl id="afajh"></dl></strong>
                <del id="afajh"><form id="afajh"></form></del>
                    1. <th id="afajh"><progress id="afajh"></progress></th>
                      <b id="afajh"><abbr id="afajh"></abbr></b>
                      <th id="afajh"><progress id="afajh"></progress></th>
                      日韩w w w | 日韩黄色大全 | 欧美日韩黄色电影 | 精品无码人妻一区二区免费蜜桃 | 男男无码一区二区三区 |