騰訊云最佳實(shí)踐 | 作業(yè)幫云原生成本優(yōu)化實(shí)踐

來(lái)源: 騰訊云原生
作者:董曉聰
時(shí)間:2021-11-25
15448
作業(yè)幫教育科技(北京)有限公司成立于2015年,一直致力于用科技手段助力教育普惠,運(yùn)用人工智能、大數(shù)據(jù)等前沿技術(shù),為學(xué)生提供更高效的學(xué)習(xí)解決方案。

pexels-photo-7988692.jpg

項(xiàng)目背景

作業(yè)幫教育科技(北京)有限公司成立于2015年,一直致力于用科技手段助力教育普惠,運(yùn)用人工智能、大數(shù)據(jù)等前沿技術(shù),為學(xué)生提供更高效的學(xué)習(xí)解決方案。隨著業(yè)務(wù)需求的發(fā)展,作業(yè)幫的IT系統(tǒng)面臨巨大挑戰(zhàn),現(xiàn)有基礎(chǔ)平臺(tái)架構(gòu)已經(jīng)無(wú)法滿足快速增長(zhǎng)的業(yè)務(wù)需求。業(yè)務(wù)對(duì)快速迭代、急速?gòu)椥?、調(diào)用鏈追蹤、統(tǒng)一的監(jiān)控日志平臺(tái)、提升計(jì)算資源利用率等需求迫在眉睫。

2019年下半年,作業(yè)幫開始規(guī)劃并調(diào)研容器化解決方案。在此期間,騰訊云團(tuán)隊(duì)和作業(yè)幫進(jìn)行了多次深入的技術(shù)交流,同時(shí)作業(yè)幫也和騰訊云的其他容器客戶進(jìn)行了充分交流溝通,多方面了解騰訊云原生技術(shù)和騰訊云的服務(wù)質(zhì)量,最終決定將其部分重要業(yè)務(wù)遷移到騰訊云容器服務(wù)TKE。

企業(yè)成本管控的常規(guī)做法是將各項(xiàng)計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)資源歸口到具體業(yè)務(wù)單元,然后由系統(tǒng)運(yùn)維、SRE、業(yè)務(wù)線研發(fā)以業(yè)務(wù)單元為視角綜合評(píng)估成本的合理性。常見的成本優(yōu)化點(diǎn)按照架構(gòu)層次從上往下,依次是以下幾個(gè)方面。

應(yīng)用性能有待提升

對(duì)于企業(yè)主流使用的語(yǔ)言,如PHP、Golang從框架入手。應(yīng)用框架的理論性能和實(shí)際業(yè)務(wù)的性能往往有很大gap,多為業(yè)務(wù)架構(gòu)缺陷或者數(shù)據(jù)存儲(chǔ)設(shè)計(jì)的不合理導(dǎo)致。同時(shí)應(yīng)用框架隨著功能的不斷迭代和更高的要求,自身性能上也需要優(yōu)化。

對(duì)于一些占用資源比例較重,如超過(guò)10%的應(yīng)用服務(wù)也是值得深入投入,其性能的提升能帶來(lái)更明顯的回報(bào)。

應(yīng)用部署模式差,帶來(lái)計(jì)算資源的浪費(fèi)

單應(yīng)用服務(wù)機(jī)器負(fù)載率低

對(duì)于高并發(fā)業(yè)務(wù),虛機(jī)下機(jī)器峰值負(fù)載常規(guī)在10%-20%,極限可提升到30%-40%。高流量業(yè)務(wù)一般代表著公司核心業(yè)務(wù),一方面為了穩(wěn)定性的考慮,整體水位不能控制的過(guò)低。另一方面,為了應(yīng)對(duì)一些突增流量,要預(yù)留一定buffer。低負(fù)載業(yè)務(wù)一般碎片化比較嚴(yán)重,而這些服務(wù)比較長(zhǎng)尾,進(jìn)而拉低了整體負(fù)載。

時(shí)間不均

互聯(lián)網(wǎng)業(yè)務(wù)普通有明顯的波峰波谷,波峰和波谷的實(shí)際資源使用量至少有一個(gè)數(shù)量級(jí)差距,且真正的最高峰只有不到一個(gè)小時(shí)。企業(yè)不得不為這一個(gè)小時(shí)的用量而付出一天的成本。

空間不均衡

一方面是在線集群波谷空閑了大量計(jì)算資源,另一方面是大數(shù)據(jù)離線計(jì)算需要大量計(jì)算資源。從整個(gè)公司視角來(lái)看,資源使用極不均衡。

資源性能有待提升

英特爾、英偉達(dá)每年都會(huì)有更強(qiáng)性能、更好性價(jià)比的硬件推出,云廠商也會(huì)有對(duì)應(yīng)產(chǎn)品的發(fā)布。但是企業(yè)中業(yè)務(wù)線眾多,一個(gè)個(gè)去適配、驗(yàn)證新機(jī)型,導(dǎo)致更換的周期往往要1-2年起。無(wú)法充分享受硬件帶來(lái)的成本優(yōu)化紅利。

解決方案

云原生給企業(yè)帶來(lái)一次技術(shù)重塑的機(jī)會(huì)。容器技術(shù)實(shí)現(xiàn)了資源和應(yīng)用的解耦。業(yè)務(wù)研發(fā)和SRE關(guān)注Pod即可。底層計(jì)算資源由系統(tǒng)運(yùn)維統(tǒng)一管理,對(duì)上層透明。Kubernetes研發(fā)優(yōu)化應(yīng)用調(diào)度策略,實(shí)現(xiàn)計(jì)算利用率的最大化。

大幅提升應(yīng)用性能

對(duì)公司主流的技術(shù)棧,深度優(yōu)化所對(duì)應(yīng)的框架。通過(guò)使用更高內(nèi)核的運(yùn)行態(tài)、使用Kubernetes原生的注冊(cè)發(fā)現(xiàn)機(jī)制、保持各類網(wǎng)絡(luò)連接等等,實(shí)現(xiàn)PHP應(yīng)用43%的性能提升。

通過(guò)使用fluid,完成檢索服務(wù)計(jì)算和存儲(chǔ)的分離,極大提升了運(yùn)維效率。過(guò)程中對(duì)內(nèi)存基帶的使用進(jìn)行了優(yōu)化,帶來(lái)30%性能提升,節(jié)省萬(wàn)核級(jí)別計(jì)算資源。

調(diào)度優(yōu)化,整體提升計(jì)算利用率

容器服務(wù)使用統(tǒng)一的集群,常態(tài)在40%左右,在保障業(yè)務(wù)穩(wěn)定的情況下極限可達(dá)60%。機(jī)器利用率大幅度提升。碎片化問(wèn)題也得到徹底解決。

但中間過(guò)程是曲折的,和騰訊云一起攻克了一系列業(yè)界難題。

在2020年上半年我們完成了一塊核心業(yè)務(wù)的容器化之后,突然發(fā)現(xiàn)我們的運(yùn)維成本居然增加了。原來(lái)在虛機(jī)模式下,運(yùn)維在晚高峰的時(shí)候,只需要去做一些穩(wěn)定性的巡檢,其實(shí)并不需要有過(guò)多的一些運(yùn)維動(dòng)作。但容器化后,我們?cè)谕砀叻逑滦枰粩嗟貙?duì)一些資源負(fù)載比較高的的去進(jìn)行封鎖,然后把上面的一些比較重的Pod進(jìn)行驅(qū)逐,為什么會(huì)這樣呢?就是我們分析了一下Kubernetes的原生調(diào)度器,還是以request進(jìn)行調(diào)度。互聯(lián)網(wǎng)業(yè)務(wù)都會(huì)一個(gè)明顯的波峰波谷,在線教育的波峰波谷會(huì)更加劇烈,波峰波谷可能會(huì)有兩個(gè)數(shù)量級(jí)的一個(gè)差異。當(dāng)研發(fā)在波谷的時(shí)候進(jìn)行一次發(fā)布,這時(shí)候就會(huì)觸發(fā)容器的一次重新調(diào)度,比如像我這個(gè)服務(wù)有幾十個(gè)Pod的,可能會(huì)有十多個(gè)pod調(diào)度到一臺(tái)機(jī)器,因?yàn)檫@時(shí)候的機(jī)器的使用率很低,就是服務(wù)怎么調(diào)度其實(shí)都可以,但是到了晚高峰的時(shí)候,我的每一個(gè)pod資源的使用率就上來(lái)的,CPU使用高了,它的吞吐也高了,然后我這十個(gè)都在同一個(gè)機(jī)器上,我這臺(tái)機(jī)器就會(huì)出現(xiàn)一些資源的瓶頸??梢钥闯鲈恼{(diào)度器只考慮了一些簡(jiǎn)單的指標(biāo),同時(shí)也沒(méi)有考慮未來(lái)的一個(gè)變化。所以我們做了一個(gè)定義的調(diào)度器,將就是晚高峰的一些提前的情況進(jìn)行了一些預(yù)測(cè),以及融合了CPU、內(nèi)存、各種io的這些復(fù)雜指標(biāo)都考慮進(jìn)來(lái)做因子,同時(shí)就是我們也會(huì)定期的把歷史的數(shù)據(jù)進(jìn)行大數(shù)據(jù)回歸更新策略。

GPU這塊它是一個(gè)比較相對(duì)貴的資源,我們調(diào)研了一些方案,主要推薦的方案是GPU虛擬化,但至少帶來(lái)15%的性能損耗,這個(gè)是我們沒(méi)法接受的。我們大多數(shù)的GPU服務(wù)是使用的各種資源是相對(duì)比較固定,所以我們基于算力和顯存去進(jìn)行了一些策略的調(diào)度,其實(shí)也就是比較經(jīng)典的背包問(wèn)題,同時(shí)夜間的話我們也會(huì)進(jìn)行一下預(yù)測(cè)再重新調(diào)度,如果中間出現(xiàn)一些卡的一些故障,我們也會(huì)執(zhí)行轉(zhuǎn)移相關(guān)的策略。

當(dāng)web業(yè)務(wù)的完成容器化改造之后,我們也把一些定時(shí)任務(wù)遷移到容器的平臺(tái)。這時(shí)候新的問(wèn)題又來(lái)了,很多任務(wù)會(huì)涉及到密集的計(jì)算,容器本身其實(shí)并不是一個(gè)隔離的機(jī)制,還是在做CPU時(shí)間片的一個(gè)分配。這些計(jì)算密集的任務(wù)多多少少還是會(huì)對(duì)web的任務(wù)造成一定的影響。同時(shí)它也會(huì)占用主機(jī)的IP資源,node上的IP資源是有限的,定時(shí)任務(wù)調(diào)度上來(lái)之后就會(huì)分配IP,任務(wù)銷毀時(shí)IP資源也不會(huì)立刻銷毀,如果頻繁的把定時(shí)任務(wù)的pod的調(diào)度到主機(jī)群的節(jié)點(diǎn)上,就會(huì)導(dǎo)致主機(jī)群的web服務(wù)沒(méi)有足夠的IP資源。同時(shí)大規(guī)模的創(chuàng)建跟回收定時(shí)任務(wù),也會(huì)觸發(fā)一些內(nèi)核的問(wèn)題,就比如有些定時(shí)任務(wù)的內(nèi)存使用比較大,大規(guī)?;厥諘?huì)導(dǎo)致陷入內(nèi)核態(tài),hang住的時(shí)間比較長(zhǎng)。這塊我們做的一些改造是這樣的,我們建立了三個(gè)池子,serverless、任務(wù)集群、主機(jī)群,我們優(yōu)先會(huì)把定時(shí)任務(wù)去調(diào)度到serverless上,如果調(diào)入失敗的話,再依次到任務(wù)集群、主集群,serverless并不是一種完全可靠的計(jì)算模式,對(duì)于他的使用我們這里引入了一種資源預(yù)占的方式,比較類似于金融領(lǐng)域?yàn)楸WC事務(wù)的兩階段提交,我們預(yù)先去申請(qǐng)相關(guān)的資源,當(dāng)完成預(yù)占之后,我們?cè)侔颜嬲陌讶蝿?wù)調(diào)度過(guò)去。

在離線混部是工程界的就是一個(gè)比較經(jīng)典的課題。在線資源是有明顯的波峰波谷,波谷有大量的剩余計(jì)算資源。大數(shù)據(jù)離線使用了大量的一些資源,但多數(shù)的任務(wù)對(duì)計(jì)算的實(shí)時(shí)性并沒(méi)有那么強(qiáng)的要求,說(shuō)必須在幾分鐘內(nèi)得到結(jié)果,幾個(gè)小時(shí)跑出來(lái)也可以。如果我在在線集群波谷時(shí)來(lái)跑大數(shù)據(jù)離線計(jì)算,大數(shù)據(jù)離線的資源就可以節(jié)省出來(lái),這樣就可以達(dá)到一個(gè)雙贏的效果。但是它會(huì)面臨很多挑戰(zhàn),就是其實(shí)很難做到資源的完整隔離,在線資源的穩(wěn)定性、延時(shí)都會(huì)受到影響。負(fù)責(zé)在線業(yè)務(wù)的同學(xué)也會(huì)有顧慮,就是我沒(méi)有得到很大的一個(gè)收益,然后還影響了我的業(yè)務(wù)。在內(nèi)核增加了新的一個(gè)調(diào)度器,在cfs和idle之間,把大數(shù)據(jù)的任務(wù)放到這種放到這類調(diào)度器上,然后就實(shí)現(xiàn)了CPU的避讓。在放量的過(guò)程中,我們也整體控制節(jié)奏,我們先在夜間在線服務(wù)沒(méi)什么量的時(shí)候來(lái)跑離線計(jì)算,然后跑相對(duì)比較穩(wěn)定之后,我們?cè)僭诎滋斓牟ü葧r(shí)間來(lái)跑大數(shù)據(jù)離線。又經(jīng)過(guò)一段時(shí)間穩(wěn)定之后,我們現(xiàn)在其實(shí)在晚高峰的時(shí)候,也在跑離線任務(wù),只不過(guò)是控制在10%的CPU使用以內(nèi)。

使用新硬件,大幅提升單位計(jì)算的性價(jià)比

容器環(huán)境下集群底層計(jì)算資源使用有限數(shù)量的機(jī)型,做一些機(jī)型更換時(shí)減少了業(yè)務(wù)研發(fā)適配的成本,更換效率大幅度提升。

實(shí)踐價(jià)值

在多重舉措的合力推動(dòng)下,作業(yè)幫容器化的收益顯著,同樣業(yè)務(wù)遷移前后,使用了HPA和在離線混合部署后,成本下降43%,穩(wěn)定性提升到99.995%,接口響應(yīng)提升10%。由此,有效支持了作業(yè)幫業(yè)務(wù)的快速迭代,秒級(jí)急速擴(kuò)縮容,服務(wù)運(yùn)行態(tài)規(guī)范落地和統(tǒng)一的運(yùn)維環(huán)境,多云的環(huán)境統(tǒng)一,提升服務(wù)可用性。這也便于云間相互自由遷徙,實(shí)現(xiàn)單云故障的應(yīng)急預(yù)案,通過(guò)優(yōu)化資源碎片,在離線混合部署,自動(dòng)擴(kuò)縮容,整體成本進(jìn)一步下降。

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于騰訊云原生,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
即日起,騰訊云PostgreSQL全面支持PostgreSQL 17.0。所有用戶可使用大版本升級(jí)能力升級(jí)至最新的PostgreSQL 17.0進(jìn)行體驗(yàn),也可以在產(chǎn)品購(gòu)買頁(yè)直接購(gòu)買。
騰訊云
云服務(wù)
2024-12-152024-12-15
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
互聯(lián)網(wǎng)服務(wù)的可用性問(wèn)題是困擾企業(yè)IT人員的達(dá)摩克利斯之劍:防于未然,體現(xiàn)不出價(jià)值。已然發(fā)生,又面臨P0危機(jī)。就更別提穩(wěn)定性建設(shè)背后顯性的IT預(yù)算問(wèn)題與隱性的人員成本問(wèn)題。
騰訊云
云服務(wù)
2024-11-252024-11-25
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
HBase憑借其高可用性、高擴(kuò)展性和強(qiáng)一致性,以及在廉價(jià)PC服務(wù)器上的低部署成本,廣泛應(yīng)用于大規(guī)模數(shù)據(jù)分析。
騰訊云
云服務(wù)
2024-11-042024-11-04
復(fù)雜查詢性能弱,只讀分析引擎來(lái)幫忙
復(fù)雜查詢性能弱,只讀分析引擎來(lái)幫忙
隨著當(dāng)今業(yè)務(wù)的高速發(fā)展,復(fù)雜多表關(guān)聯(lián)的場(chǎng)景越來(lái)越普遍。但基于行式存儲(chǔ)的數(shù)據(jù)庫(kù)在進(jìn)行復(fù)雜查詢時(shí)性能相對(duì)較弱。
騰訊云
云服務(wù)
2024-11-022024-11-02
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家