瓜分60万现金大奖,云原生编程挑战赛等你来挑战!
作者 | 項升
2021 年第二屆云原生編程挑戰(zhàn)賽目前正在火熱招募中。本次大賽由阿里云、Intel 主辦,阿里云云原生、阿里云天池承辦。自 2015 年開始,大賽已經(jīng)成功舉辦了六屆,并從 2020 年開始升級為云原生編程挑戰(zhàn)賽,共吸引超過 23000 支隊伍,覆蓋 10 余個國家和地區(qū)。
本屆大賽將繼續(xù)深度探索 RocketMQ、Dubbo3、Serverless 三大熱門技術(shù)領(lǐng)域,為熱愛技術(shù)的年輕人提供一個挑戰(zhàn)世界級技術(shù)問題的舞臺,希望選手用技術(shù)為全社會創(chuàng)造更大價值。初賽我們共準備了三個賽道供選手選擇,你準備好了嗎?
本文主要解密賽道二:實現(xiàn)一個柔性集群調(diào)度機制,希望給選手們提供一些思路。
瓜分60萬現(xiàn)金大獎,三大賽道任意選擇,
更有奇葩任務定義拿獎新姿勢,快快點擊報名吧!👇
https://tianchi.aliyun.com/competition/entrance/531923/introduction?spm=5176.12281925.0.0.58987137KRXtxf
1、賽題背景
云原生帶來了技術(shù)標準化的重大變革,如何讓應用在云上更簡單地創(chuàng)建和運行,并具備可彈性擴展的能力,是所有云原生基礎組件的核心目標。借助云原生技術(shù)帶來的彈性能力,應用可以在極短時間內(nèi)擴容出一大批機器以支撐業(yè)務需要。
比如為了應對零點秒殺場景或者突發(fā)事件,應用本身往往需要數(shù)千甚至數(shù)萬的機器數(shù)來提升性能以滿足用戶的需要,但是在擴容的同時也帶來了諸如集群節(jié)點極多導致的節(jié)點異常頻發(fā)、服務容量受多種客觀因素影響導致節(jié)點服務能力不均等一系列的在云原生場景下集群大規(guī)模部署的問題。
Dubbo 期待基于一種柔性的集群調(diào)度機制來解決這些問題。這種機制主要解決的問題有兩個方面:一是在節(jié)點異常的情況下,分布式服務能夠保持穩(wěn)定,不出現(xiàn)雪崩等問題;二是對于大規(guī)模的應用,能夠以最佳態(tài)運行,提供較高的吞吐量和性能。
從單一服務視角看,Dubbo 期望的目標是對外提供一種壓不垮的服務,即在請求數(shù)特別高的情況下,可以通過選擇性地拒絕一些請求來保證總體業(yè)務的正確性、時效性。
從分布式視角看,要盡可能降低因為復雜的拓撲、不同節(jié)點性能不一導致總體性能的下降,柔性調(diào)度機制能夠以最優(yōu)的方式動態(tài)分配流量,使異構(gòu)系統(tǒng)能夠根據(jù)運行時的準確服務容量合理分配請求,從而達到性能最優(yōu)。
2、賽題解析
集群的柔性調(diào)度正是指 Dubbo 能夠從全局的角度合理分配請求,達到集群的自適應。具體來說使消費者能夠快速地感知服務端節(jié)點性能的隨機變化,通過調(diào)節(jié)發(fā)送往不同服務端節(jié)點的請求數(shù)比例分配變得更加合理,讓 Dubbo 即使遇到集群大規(guī)模部署帶來的問題,也可以提供最優(yōu)的性能。
柔性調(diào)度機制主要解決的場景有以下這些:
- 多機房異地部署,網(wǎng)絡丟包嚴重
隨著業(yè)務不斷地發(fā)展,當前業(yè)務觸達的用戶越來越多,服務端所需的計算容量也越來越大。另外由于應用不斷龐大,在微服務架構(gòu)拆分的體系下依賴的上游應用也在變多。而對于單一機房來說所能提供的機器容量是有限的,因此不論是為了解決機器需求數(shù)大的問題、亦或者是為了保證業(yè)務高可用做的異地多活的,多機房異地部署的場景對于業(yè)務方來說多機房異地部署的情況變得越來越普遍。
涉及到多機房異地部署,對于同城部署,機房之間的網(wǎng)絡尚且可以使用租用裸光纖等方式保障網(wǎng)絡的穩(wěn)定,但是一旦多個機房部署在不同的城市、甚至是不同的國家,網(wǎng)絡丟包嚴重等問題會越來越嚴重。
本次賽題通過模擬服務端隨機丟棄部分請求來模擬這種情況,旨在期望看到有一種自動基于延時學習,快速對調(diào)用進行失敗返回的機制,不論是及時將失敗的結(jié)果返回給調(diào)用端或者是發(fā)起重試來保證服務的總體可用性的提高。
- 服務端處理性能有限,并發(fā)越大處理越慢
對于一般業(yè)務場景,單一服務往往不是單機的操作,更多的是需要連接如數(shù)據(jù)庫等三方組件,這些組件很多對于總體并發(fā)數(shù)是有上限的,也即是當請求并發(fā)量達到一定值時,剩下的請求會進行排隊,這將加大總體的處理延時。換個角度說,即使是在單機的視角來看,由于單機的 CPU 核心數(shù)是遠小于并發(fā)線程數(shù)的,在并發(fā)數(shù)特別高的情況下,會花費較多的資源用于上下文切換上。而且如果服務的并發(fā)數(shù)過大,亦很容易造成服務單點過熱的問題,進而演進為單點服務被壓垮,這可能導致整個集群出現(xiàn)服務雪崩的現(xiàn)象。
下圖是以指數(shù)函數(shù)(評測時不應依賴此模型)模擬并發(fā)數(shù)和延時之間關(guān)系時,服務總吞吐量的對比圖。
可以看到,單位時間內(nèi)能處理的請求數(shù)并不是并發(fā)數(shù)越大就越高的。本次賽題希望看到有一種機制能夠自動分析出上游服務的最佳請求并發(fā)數(shù),依次來達到單位時間內(nèi)成功請求的服務數(shù)更大。
- 宿主機性能超配,服務端性能不穩(wěn)定
隨著云原生時代的到來,越來越多的應用被部署在容器之中,不管是容器本身還是說普通用戶上云使用的類似阿里云 ECS 等 IaaS 設施,都是運行在虛擬化環(huán)境之中的。但是在一個虛擬化環(huán)境中,宿主機的資源(包括CPU cache 和內(nèi)存帶寬)都是共享的。如果有一個消耗 CPU cache 的應用快速消耗了 L3 緩存,或者一個應用消耗了系統(tǒng)大量內(nèi)存帶寬,都會對運行在同一臺宿主機上的其他“鄰居”造成干擾。而往往應用部署的時候很難預測到具體哪臺機器會出現(xiàn)這種情況,因此我們期待 RPC 服務框架可以主動去適配這種波動,動態(tài)調(diào)配機器間的調(diào)用比例,最終達到盡可能高的服務容量。
3、解題思路
- 容量評估
本題的設計目標就是基于容量的自動化調(diào)度機制,評估服務最佳容量是完成本題的前提,基于最大服務容量以及預期調(diào)用延遲可以為整體流量調(diào)度提供宏觀的數(shù)據(jù)基礎。一般集群的容量評估都是通過線上實際壓測來確定的,而關(guān)于運行時的動態(tài)計算可以基于如接口響應的平均耗時,P999 耗時、錯誤率等數(shù)據(jù)進行容量評估。同時應該盡可能多地去評估各種情況下的容量,避免陷入局部最優(yōu)解。
基于不同服務端的容量信息,消費端可以控制對服務端請求的并發(fā)量,達到總體請求數(shù)最高的目標。
- 快速失敗
當一個請求被服務端丟棄或者是網(wǎng)絡傳輸過程中丟棄時,通常消費端需要一段較長的時間(超時時間配置)來發(fā)現(xiàn)這種情況。比如一個預期請求延時是 10ms 的,等到 5000ms 的超時時間才進行報錯重試的話會浪費大量的時間在等待上面。如果可以基于預期的實際延時對具體的接口進行快速失敗處理可以大大節(jié)約無效的等待時間。
- 自動探測
由于服務端性能是實時在進行變化的,因此對服務端的調(diào)用并發(fā)數(shù)不能一直固定在一個值上面,需要動態(tài)地在一定范圍內(nèi)進行試探,如果發(fā)現(xiàn)有更優(yōu)的容量則需要自動調(diào)節(jié)調(diào)用參數(shù),最終盡可能達到所有時間的最優(yōu)解。
4、總結(jié)
本文從賽題背景、賽題解析和解題思路的角度,對本屆比賽題目進行了分析,介紹了柔性集群調(diào)度算法的基本設計思路,希望對即將參加比賽的同學們能有所幫助。在此預祝各位參賽選手能取得優(yōu)異的成績,進軍復賽和總決賽,我們在決賽答辯等你。
5、報名方式
【賽道1】針對冷熱讀寫場景的 RocketMQ 存儲系統(tǒng)設計
https://tianchi.aliyun.com/competition/entrance/531922/introduction?spm=5176.12281925.0.0.58987137KRXtxf
【賽道2】實現(xiàn)一個柔性集群調(diào)度機制
https://tianchi.aliyun.com/competition/entrance/531923/introduction?spm=5176.12281925.0.0.58987137KRXtxf
【賽道3】Less is more - Serverless創(chuàng)新應用賽
https://tianchi.aliyun.com/competition/entrance/531924/introduction?spm=5176.12281925.0.0.58987137KRXtxf
戳👇立刻報名參賽:
https://tianchi.aliyun.com/competition/entrance/531923/introduction?spm=5176.12281925.0.0.58987137KRXtxf
原文鏈接:https://developer.aliyun.com/article/788075?
版權(quán)聲明:本文內(nèi)容由阿里云實名注冊用戶自發(fā)貢獻,版權(quán)歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔相應法律責任。具體規(guī)則請查看《阿里云開發(fā)者社區(qū)用戶服務協(xié)議》和《阿里云開發(fā)者社區(qū)知識產(chǎn)權(quán)保護指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫侵權(quán)投訴表單進行舉報,一經(jīng)查實,本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。總結(jié)
以上是生活随笔為你收集整理的瓜分60万现金大奖,云原生编程挑战赛等你来挑战!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AI让边缘更智能,边缘让AI无处不在
- 下一篇: 解密优酷智能生产技术,看 AI 赋能内容