近日,2021騰訊數(shù)字生態(tài)大會(huì)在武漢召開。在大會(huì)云原生專場(chǎng),騰訊云聯(lián)合中國(guó)信通院、作業(yè)幫等聯(lián)合發(fā)布《降本之源·云原生成本管理白皮書》(以下簡(jiǎn)稱白皮書),系統(tǒng)性呈現(xiàn)云原生成本優(yōu)化方法論和最佳實(shí)踐路徑。作業(yè)幫基礎(chǔ)架構(gòu)負(fù)責(zé)人董曉聰在會(huì)上分享作業(yè)幫云原生成本優(yōu)化實(shí)踐之路。 
為什么要降本增效? 作業(yè)幫成立于2015年,是一家致力于用科技手段助力教育普惠的公司。董曉聰介紹,作業(yè)幫技術(shù)現(xiàn)狀主要有兩大特點(diǎn),一個(gè)特點(diǎn)是規(guī)模化,當(dāng)前作業(yè)幫有數(shù)千個(gè)應(yīng)用服務(wù),對(duì)應(yīng)著數(shù)萬(wàn)的服務(wù)實(shí)例,這些實(shí)例部署在數(shù)十萬(wàn)計(jì)算核心之上。另一個(gè)特點(diǎn)是復(fù)雜化,作業(yè)幫的技術(shù)棧極為豐富,使用最多的語(yǔ)言為PHP和Golang,約能占到60%以上,除此之外還有大量的系統(tǒng)使用NodeJs、Java、C++、lua、python編寫等。 董曉聰說(shuō),作業(yè)幫從創(chuàng)立之初就是構(gòu)建在云之上的,充分的享受了云計(jì)算的紅利。隨著這些年的高可用建設(shè),實(shí)現(xiàn)了多云的架構(gòu)。高可用、快速迭代、極致性能也是作業(yè)幫一貫的技術(shù)要求。 為什么要進(jìn)行降本增效呢?董曉聰說(shuō),這個(gè)工作之前一直也在做,但今天的要求會(huì)更高。首先,隨著互聯(lián)網(wǎng)的紅利消退,公司的每分錢都需要產(chǎn)生更大的價(jià)值,要實(shí)現(xiàn)成本效益的最大化。其次,成本管控,不必用的支出是應(yīng)該節(jié)省的。最后,也是一個(gè)技術(shù)從業(yè)人員的追求,作為程序員,還是想要寫出更好更高性能代碼?!霸谧非蠼当镜耐瑫r(shí),還要明確一點(diǎn),降本不降質(zhì),穩(wěn)定性、研發(fā)/運(yùn)維效率、安全等不應(yīng)該為此打折扣?!倍瓡月敱硎?。 業(yè)務(wù)快速發(fā)展平臺(tái)架構(gòu)面臨挑戰(zhàn) 隨著業(yè)務(wù)的發(fā)展,作業(yè)幫的 IT
系統(tǒng)面臨挑戰(zhàn)?,F(xiàn)有基礎(chǔ)平臺(tái)架構(gòu)無(wú)法滿足快速增長(zhǎng)的業(yè)務(wù)需求,業(yè)務(wù)對(duì)快速迭代、急速?gòu)椥浴⒄{(diào)用鏈追蹤、統(tǒng)一的監(jiān)控日志平臺(tái)、提升計(jì)算資源利用率等需求迫在眉睫。 2019年下半年,作業(yè)幫開始規(guī)劃并調(diào)研容器化解決方案,“但面臨諸多挑戰(zhàn)”。董曉聰說(shuō),首先是應(yīng)用性能有待提升。對(duì)于企業(yè)主流使用的語(yǔ)言,如PHP、Golang,從框架入手,但應(yīng)用框架的理論性能和實(shí)際業(yè)務(wù)的性能往往有很大差距,多為業(yè)務(wù)架構(gòu)缺陷或者數(shù)據(jù)存儲(chǔ)設(shè)計(jì)的不合理導(dǎo)致。同時(shí)應(yīng)用框架隨著功能的不斷迭代和更高的要求,自身性能上也需要優(yōu)化。 其次,應(yīng)用部署模式差,帶來(lái)計(jì)算資源的浪費(fèi)。對(duì)于高并發(fā)業(yè)務(wù),虛機(jī)下機(jī)器峰值負(fù)載常規(guī)在10%-20%,極限可提升到30%-40%。高流量業(yè)務(wù)一般代表著公司核心業(yè)務(wù),一方面為了穩(wěn)定性的考慮,整體水位不能控制得過(guò)低。另一方面,為了應(yīng)對(duì)一些突增流量,要預(yù)留一定緩沖。低負(fù)載業(yè)務(wù)一般碎片化比較嚴(yán)重,而這些服務(wù)比較長(zhǎng)尾,進(jìn)而拉低了整體負(fù)載。 同時(shí),還存在時(shí)間空間不均的問(wèn)題。從時(shí)間上看,互聯(lián)網(wǎng)業(yè)務(wù)普通有明顯的波峰波谷,波峰和波谷的實(shí)際資源使用量至少有一個(gè)數(shù)量級(jí)差距,且真正的最高峰只有不到一個(gè)小時(shí)。企業(yè)不得不為這一個(gè)小時(shí)的用量而付出一天的成本。在空間上,一方面是在線集群波谷空閑了大量計(jì)算資源,另一方面是大數(shù)據(jù)離線計(jì)算需要大量計(jì)算資源。從整個(gè)公司視角來(lái)看,資源使用極不均衡。 作業(yè)幫的云原生降本實(shí)踐 “面對(duì)這么多挑戰(zhàn),我們?cè)撛趺唇饽?”董曉聰說(shuō),針對(duì)每一個(gè)細(xì)分問(wèn)題深耕并不系統(tǒng),所以作業(yè)幫選擇走云原生的道路,和云廠商一起來(lái)充分釋放云的潛力。 在應(yīng)用層,作業(yè)幫著手對(duì)典型場(chǎng)景進(jìn)行重點(diǎn)攻克。對(duì)于模塊數(shù)量最多的PHP業(yè)務(wù)進(jìn)行優(yōu)化運(yùn)行態(tài)優(yōu)化,對(duì)資源使用最多的檢索服務(wù)進(jìn)行架構(gòu)優(yōu)化。在部署調(diào)度上依托K8S,實(shí)現(xiàn)了CPU、GPU、任務(wù)的自定義調(diào)度器。同時(shí),使用在離線混部解決空間不均的問(wèn)題,使用彈性擴(kuò)縮+serverless解決時(shí)間不均的問(wèn)題。而在資源這部分,K8S通過(guò)CRI、CSI、CNI等實(shí)現(xiàn)了對(duì)應(yīng)用的透明,便于選擇更優(yōu)的機(jī)型。 董曉聰說(shuō),檢索系統(tǒng)是一個(gè)復(fù)雜的系統(tǒng),作為最底層且需要高性能的服務(wù),一般是存儲(chǔ)和計(jì)算耦合。隨著數(shù)據(jù)量越來(lái)越大,就需要對(duì)數(shù)據(jù)進(jìn)行切片,每個(gè)節(jié)點(diǎn)只存儲(chǔ)一部分的數(shù)據(jù)。由于高并發(fā)高可用的要求,單片數(shù)據(jù)節(jié)點(diǎn)還需要有多個(gè)副本。由此形成的一個(gè)二維矩陣。當(dāng)需要進(jìn)行數(shù)據(jù)更新時(shí),由于數(shù)據(jù)量比較大,幾百TB。 “作為容器改造最難啃的骨頭,為了解決這些問(wèn)題,我們決定進(jìn)行計(jì)算和存儲(chǔ)的分離,因?yàn)橹挥幸胗?jì)算存儲(chǔ)分離架構(gòu),才能從根本上解決系統(tǒng)復(fù)雜度的問(wèn)題。”董曉聰說(shuō),經(jīng)過(guò)多方調(diào)研比對(duì),作業(yè)幫最終選用Fluid作為整個(gè)新架構(gòu)的關(guān)鍵紐帶,并采用JindoRuntime作為緩存加速引擎。 董曉聰表示,PHP框架經(jīng)過(guò)一系列的優(yōu)化,壓測(cè)下單核可支撐800QPS,較之前有倍數(shù)級(jí)別提升。應(yīng)用在具體線上業(yè)務(wù),帶來(lái)43%的資源使用降低。數(shù)據(jù)同步周期從小時(shí)級(jí)別降低到分鐘級(jí)別,一般在8分鐘內(nèi)就可以完成。運(yùn)維成本也大幅度降低,交付周期從天級(jí)別講到到小時(shí)級(jí)別。性能提升了30%,節(jié)省了萬(wàn)核級(jí)別的資源使用。 對(duì)于作業(yè)幫的云原生實(shí)踐,董曉聰表示,現(xiàn)在定時(shí)任務(wù)、AI類業(yè)務(wù)都大量的使用serverless,后面希望更大規(guī)模的在線業(yè)務(wù)也可以跑在serverless上,實(shí)現(xiàn)業(yè)務(wù)的真正削峰。未來(lái),作業(yè)幫也將探索更多更優(yōu)的機(jī)型,以及在部分特定場(chǎng)景下AMD機(jī)型的應(yīng)用。此外,運(yùn)營(yíng)工作經(jīng)歷先靠人再靠運(yùn)維平臺(tái)的過(guò)程,其中涉及較多的數(shù)據(jù)分析工作,未來(lái)要將其BI化,AI化,實(shí)現(xiàn)成本問(wèn)題的自動(dòng)發(fā)現(xiàn)。
|