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