2020 Techo Park開發者大會召開,作業幫加速平臺架構容器化探索
(原標題:2020 Techo Park開發者大會召開,作業幫加速平臺架構容器化探索)
12月19日-20日,由騰訊主辦的2020 Techo Park開發者大會在京舉行,全球200餘位頂級技術專家以及數千位參會者在大會現場就雲計算、大數據和人工智能等前沿技術話題展開深度交流。
作業幫基礎架構部架構方向負責人呂亞霖受邀出席本次大會的“企業IT架構雲原生的必經之路”容器分論壇,並在現場發表《作業幫容器化探索和落地實踐》主題演講,分享作業幫容器化背景、目標、落地、收益及未來規劃,深入剖析容器在教育行業落地所面臨的問題、挑戰以及相應的高效解決方案。
隨着雲原生技術的成熟和普及,金融、教育、遊戲等各個領域越來越多的企業IT架構正在向雲原生架構轉型。在此背景下,作業幫在技術和實踐中所取得的一系列進展與成績,成爲教育領域企業雲原生上雲轉型的一大代表,爲行業提供了可供借鑑的成功案例。
呂亞霖在演講中首先分享了作業幫技術體系現狀,他表示,作業幫自2015年成立至今,一直保持高速增長,尤其是在今年更是實現了規模的成倍增長,發展到現在已擁有數千個業務應用、數萬個應用實例、數十萬計算核數,未來一段時間內將會依然保持增長勢頭。
而在規模化加速發展的同時,作業幫的複雜度也在急劇增加。呂亞霖表示,作業幫已從最開始的拍照搜題工具類型應用,演化成教研、工具一體並覆蓋整個教學領域,涵蓋了從低幼、K12到成人教育的全階段,技術棧則由PHP、C++演化成涵蓋了現在所有主流語言的多語言棧,由此也面臨着高可用、極致性能、高併發的一系列問題,在可用性和性能的要求上比大部分互聯網業務要求更加苛刻。
在業務的極速擴張下,控制其架構複雜度同時保證業務服務穩定性、成本以及效率成爲作業幫容器化的核心問題。對此,呂亞霖指出,用雲原生技術架構,基礎設施接管業務中大量非功能邏輯,實現彈性、可觀測、韌性、自動化、可持續等特性是有效手段,K8S以及其生態是重要抓手。
呂亞霖進一步闡述了作業幫容器化層級和其背後的技術思考,“在虛擬機時代,應用直接運行在資源上,所以底層資源的變更對上層應用是有感知的,應用通過服務治理手段來保證業務的高可用、性能和可擴展性,但是建立和運維這種體系的成本高昂。而在容器化體系下的雲原生架構,K8S通過對下游資源的抽象,來抹平資源差異和變更,由此資源對上層服務透明,上層服務不關係底層資源的細節和變化。同時,對上層應用做服務化,用應用框架落地規範和標準,降低接入成本。”
呂亞霖強調,在容器化落地進程中,首先明確業務服務構建容器的原則是很重要的,一是避免陷入重大問題缺陷,二是有利於容器生態的快速接入。
“容器化落地的內核主要是集中在IPVS和Cgroups,內核上我們遇到了很經典的ipvs reuse mode問題,也有在高併發下網絡毛刺的問題,我們通過騰訊tlinux內核團隊協作解決了這些問題。”呂亞霖在大會現場分享了容器化落地的內核以及原生K8S優化等內容。
“K8S默認調度器有很多不足,比如高峰調度不均衡問題,我們先後做過均衡調度,真實調度,優化後發現在業務deployment時,其實是均衡的,但是到了高峰時段,又變得不均衡,因爲大部分業務場景下CPU高峰增量不是線性的,所以我們的建議是做高峰預測調度,不要根據現在的使用量來調度,而是要根據未來的使用量。”
接下來,呂亞霖進一步從容器化落地服務發現註冊的控制面和數據面進行了詳細說明,他表示,在容器化過渡期間,虛擬機和容器會並行很長一段時間,所以需要解決老的虛擬機和容器化互通的問題,從控制面上來看,通過一個控制組件,來監聽虛擬機的名字服務,將服務註冊到K8S集羣的service裡,監聽其變更,將變更同步到容器。而在數據面,容器通過service直接訪問虛擬機,service來做負載均衡,虛擬機訪問容器化,則通過一個東西向的ingress服務,訪問容器內的服務單元。
此外,Service Mesh對於像作業幫等使用多語言的公司來說優勢非常明顯。呂亞霖指出,其優勢一是低入侵,業務幾乎無感,二是多語言支持,三是與服務感知的結合較好。
作爲資源彈性調度的重要參考背景,作業幫容器化落地過程中的時間週期特性十分明顯,高峰時段是平峰時段的20倍,是低峰時段的上百倍,同時流量上升曲線較陡,凌晨到5點前流量較少。此外,遇到寒暑高峰或者期中、期末考試,也會有很大的資源使用量。
基於這一特性,呂亞霖和團隊主要通過兩種HPA來擴縮POD,一個是定時HPA,較爲適合時間點明確的業務,另一個是autoHPA,用來應急擴縮,防止服務出現容量問題。同時,底層資源層面則有兩個池子,一個是固定池,裡面是裸金屬服務,長時間使用,另一個是動態池,由一批按需的虛擬機構成,平時處於關機狀態,當資源緊張時則會開機加入集羣,用來應對非預期的峰值。
除此之外,在離線業務容器化混合部署則成爲成本節約優化的一大利器。據呂亞霖介紹,正常在線業務有大量的低負載時段,作業幫把大數據離線和視頻音頻轉解碼服務均容器化,統一在K8S調度,部署到在線K8S集羣,由此帶來的收益是非常大的,而這裡面主要的技術則是利用tlinux的cpu隔離策略。
而從異構計算來看,在GPU服務的容器化方面,作業幫的主要策略是gpu-share方案,通過顯存和算力進行POD調度,從上游流量入口側對算力進行隔離,來保證GPU服務穩定性,同時實現資源利用率的最大化。“在我們的場景下,大規模使用GPU幾千卡,比較常見的情況是卡故障,這時候就需要做故障轉移和資源下線操作。”呂亞霖稱。
此外,作爲可用性保證的重要環節之一,在多雲K8S建設方面,作業幫在多個雲廠商部署獨立的K8S集羣,實現統一K8S的管理調度層,雲內流量閉環,數據存儲專線同步,源頭DNS/HTTPDNS切流。
在多重舉措的合力推動下,作業幫容器化的收益顯著,同樣業務遷移前後,使用了HPA和在離線混合部署後,成本下降43%,穩定性提升到99.995%,接口響應提升10%。由此,有效支持了作業幫業務的快速迭代,秒級急速擴縮容,服務運行態規範落地和統一的運維環境,多雲的環境統一,提升服務可用性。這也便於雲間相互自由遷徙,實現單雲故障的應急預案,通過優化資源碎片,在離線混合部署,自動擴縮容,整體成本進一步下降。
在演講最後,談及對於容器化未來的規劃展望時,呂亞霖提出四大方向,包括更大規模和全時段的在離線混合部署,K8S與Serverless的結合是未來的趨勢,中間件容器化,以及大數據服務容器化。