九年双11云化架构演进和升级,打造更加完美的双11
摘要: 12月13-14日,由云棲社區與阿里巴巴技術協會共同主辦的《2017阿里巴巴雙11技術十二講》順利結束,集中為大家分享了2017雙11背后的黑科技。本文是《阿里巴巴云化架構創新之路》演講整理,主要講解了雙11的技術挑戰與突破、云化架構演進的背景、統一調度和混部的挑戰、Pouch容器和容器化的進展、雙11的未來技術發展路線。
12月13-14日,由云棲社區與阿里巴巴技術協會共同主辦的《2017阿里巴巴雙11技術十二講》順利結束,集中為大家分享了2017雙11背后的黑科技。本文是《阿里巴巴云化架構創新之路》演講整理,主要講解了雙11的技術挑戰與突破、云化架構演進的背景、統一調度和混部的挑戰、Pouch容器和容器化的進展、雙11的未來技術發展路線。內容如下。
分享嘉賓:
叔同(丁宇),阿里巴巴資深技術專家,8次參與雙11作戰,阿里高可用架構、雙11穩定性負責人,阿里容器、調度、集群管理、運維技術負責人。
叔同:
雙11推動了阿里技術的進步,它有哪些挑戰?
互聯網級規模,每天有數億人在阿里網站上進行交易;
企業級復雜度,每完成一筆交易都需要數百個系統的服務支撐;
金融級的穩定性,每一筆交易都必須保證其完整性和正確性;
雙11存在數十倍的業務峰值,要求系統絕對穩定。
阿里巴巴9年雙11經歷下來,交易額增長了280倍、交易峰值增長800多倍、系統數呈現爆發式增長。系統在支撐雙11過程中的復雜度和支撐難度以指數級形式上升。雙11的峰值的本質是用有限的成本最大化的提升用戶體驗和集群吞吐能力,用合理的代價解決峰值。面對增長如何發揮規模效應,持續降低單筆交易成本以提升峰值吞吐能力,為用戶提供絲般順滑的瀏覽和購物體驗,是極大的挑戰。
隨著分布式架構、異地多活、限流降級、全鏈路壓測等技術的突破,擴展性和穩定性問題得到了很好的解決。系統架構伴隨9年雙11的發展一代一代向后演進,每一年都有很大的提高。08年開始阿里巴巴著手系統從由集中式架構變成分布可擴展架構,其中沉淀了大量互聯網中間件技術。13年通過異地多活的架構演進,把阿里完整的交易單元部署到全國各個城市站點,實現了地域級水平擴展。這兩種技術的疊加解決了整個雙11擴展性問題。
由于分布式架構的演進,系統穩定性問題開始凸顯、系統復雜度急劇上升、多個系統間協同出現問題。我們建設了限流降級、預案體系、線上管理管控體系。在2013年時做了雙11備戰的核心武器——全鏈路壓測。它能對整個系統的依賴關系里跟雙11有關的部分進行完整的用戶級的線上大流量真實場景讀寫壓測,使系統提前經歷幾次“雙11”,驗證整個線上生產環境處理能力,及時發現問題并修復。
云化架構的演進
由于雙11本身峰值增長很快,當我們做好了系統的穩定性后,發現硬件、時間、人力成本的消耗很大。成本挑戰的出現推動我們解決IT成本的問題,即服務器資源問題。首先來看云化架構演進背景。
上圖為阿里業務六個月的峰值數據表。表中兩個最大的峰值依次代表雙11和雙12的交易峰值,其他較小的峰值是日常交易峰值,紅線代表日常準備系統服務器資源的處理能力。
在13年之前,我們采購大量的服務器資源以支撐雙11流量高峰。高峰過去后,長時間低效運行產生很大的資源浪費,這是非常粗放的預算和資源管理模式。阿里的多種業務形態產生了多種集群,每個集群之間運維體系差異較大、各個板塊無法互用、資源整體彈性能力不足導致雙11無法借用這些資源。每個板塊的資源池有不同的buffer,每個資源池的在線率、分配率和利用率無法統一。我們通過云化架構提高整體技術效率和全局資源的彈性復用能力。例如某個不做雙11的集群把資源貢獻出來給雙11的交易使用。由于云能提供雙11正需要的彈性能力,所以我們也開始大量使用阿里云來解決雙11成本問題,通過拉通技術體系來降低大促和日常整體成本,提出通過云化架構來實現雙11單筆交易成本減半的目標。
先來梳理一下整個運維體系現狀。我們將集群大致分在線服務集群、計算任務集群、ECS集群三類。這三種集群上的資源管理和基礎運維、調度都是獨立的。它們有各自的調度編排能力,在線服務Sigma調度、計算任務的Fuxi調度、ECS的Cloud Open API;它們在生產資源、資源供給、分配方式上也是不同的。在線服務用的是容器、計算任務調度最后生產的是LXC的輕量級隔離封裝容器、云生產的是ECS;它們在應用層上運維集群管理也是不一樣的。最上層業務層跑的任務也不一樣。在線服務器跑的是在線業務如交易搜索廣告、有狀態的存儲。計算集群跑的是大數據分析的任務,云集群跑的是各式各樣的外部客戶的任務。
通過技術全面云化逐層進行重構升級,建設彈性復用的能力實現全局統一調度。在線任務和計算任務混合部署,通過統一運維部署和資源分配的標準化提高調度效率,以此來實現容量的自動交付。所以我們需要做全面容器化,利用公有云,發揮云的彈性能力,減小自采基礎設施的投入。通過混合云彈性架構和一鍵建站復用阿里云的能力,降低雙11的成本。利用阿里云做到以前一年的資源持有時間縮減到只需1-2個月。
統一調度體系
始于2011年建設的Sigma是服務阿里巴巴在線業務的調度系統,圍繞Sigma有一整套以調度為中心的集群管理體系。
Sigma是有Alikenel、SigmaSlave、SigmaMaster三層大腦聯動合作,Alikenel部署在每一臺NC上,對內核進行增強,在資源分配、時間片分配上進行靈活的按優先級和策略調整,對任務的時延,任務時間片的搶占、不合理搶占的驅逐都能通過上層的規則配置自行決策。SigmaSlave可以在本機上進行CPU的分配、應急場景的處理。通過本機Slave對時延敏感任務快速做出決策和響應,避免因全局決策處理時間長帶來的業務損失。SigmaMaster是一個最強的大腦,它可以統攬全局,為大量物理機的容器部署進行資源調度分配和算法優化決策。
整個架構是面向終態的設計理念,請求進來后把數據存儲到持久化存儲,調度器識別調度需求分配資源。系統整體的協調性和最終一致性是非常好的。我們在2011年開始做調度系統,2016年用Go語言重寫,2017年兼容了kubernetes API,希望和開源社區共同建設和發展。
發揮統一調度,集中管理的優勢,釋放了規模效益下的一些紅利。在線服務的調度和計算任務調度下有各種業務形態,它們在一層調度上進一步細分成二層調度,通過合并資源池提升利用率和分配率,合并buffer進行空間維度的優化實現全局打通。全局打通后進行彈性分時復用、時間維度的優化,共節省超過5%的資源。由于基數大,這個優化效果是非常可觀的。
阿里巴巴在2014年開始推動混部架構,目前已在阿里巴巴內部大規模部署。在線服務屬于長生命周期、規則策略復雜性高、時延敏感類任務。而計算任務生命周期短、調度要求大并發高吞吐、任務有不同的優先級、對時延不敏感。基于這兩種調度的本質訴求的不同,所以我們在混合部署的架構上把兩種調度并行處理,即一臺NC物理機上可以既有Sigma調度又有Fuxi調度。Sigma調度是通過SigmaAgent調用OCI標準的RunC 、RunV、 RunLXC 三種標準來啟動Pouch容器。Fuxi也在這臺NC物理機上搶占資源,啟動自己的計算任務。所有在線任務都在Pouch容器上,它負責把服務器資源進行分配切割通過調度把在線任務放進去,離線任務填入其空白區,保證物理機資源利用達到飽和,這樣就完成了兩種任務的混合部署。
混部的關鍵技術
內核資源隔離上的關鍵技術
在CPU HT 資源隔離上,做了Noise Clean內核特性,解決在/離線超線程資源爭搶問題。
在CPU調度隔離上,CFS基礎上增加Task Preempt特性,提高在線任務調度優先級。
在CPU 緩存隔離上,通過CAT,實現在、離線三級緩存(LLC)通道隔離(Broadwell及以上)。
在內存隔離上,擁有CGroup隔離/OOM優先級;Bandwidth Control減少離線配額實現帶寬隔離。
在內存彈性上,在內存不增加的情況下,提高混部效果,在線閑置時離線突破memcg limit;需要內存時,離線及時釋放。
在網絡QoS隔離上,管控打標為金牌、在線打標為銀牌、離線打標為銅牌,分級保障帶寬。
在線集群管理上的關鍵技術
對應用的內存、CPU、網絡、磁盤和網絡I/O容量進行畫像,知道它的特征、資源規格是什么,不同的時間對資源真實使用情況如何,然后對整體規格和時間進行相關性分析,進行整體調度優化。
親和互斥和任務優先級的分配,哪種應用放在一起使整體計算能力比較少、吞吐能力比較高,這是存在一定親和性。
不同的場景有不同的策略,雙11的策略是穩定優先,穩定性優先代表采用平鋪策略,把所有的資源用盡,讓資源層全部達到最低水位。日常場景需要利用率優先,“利用率優先”指讓已經用掉的資源達到最高水位,空出大量完整資源做規模化的事。
應用做到自動收縮,分時復用。
整個站點的快速擴容縮容,彈性內存技術。
計算任務調度+ODPS上的關鍵技術
有彈性內存分時復用、動態內存超賣、無損降級與有損降級三個關鍵混部技術。動態內存超賣指內存是可以超賣的,如果有在線任務要用,就快速歸還。有損降級和無損降級的策略指的是對影響在可接受范圍內的波動干擾進行無損降級,不增加新任務,慢慢把它降下來,對影響大的干擾直接殺掉任務屬于有損降級。利用零層管控,管理每臺NC上的在線任務和離線任務之間的關系。
混合部署指將計算任務引入在線服務集群以提升日常資源效率。把離線任務引入后,CPU平均利用率從10%上升到40%以上,同時敏感類應用的延遲影響時間小于5%,屬于完全可接受范圍。目前我們整個混部集群已達到數千臺的規模,經過了交易核心鏈路雙11大促的驗證。這項優化可以為日常節省超過30%的服務器。由于涉及到硬件的迭代和網絡的迭代,需要一個很長的準備周期,所以我們預計明年會擴大10倍的部署規模。
通過分時復用,達到進一步提升資源效率的效果。上圖中的曲線是我們某個應用的流量曲線。它是非常有規律的,左邊代表晚上波谷期,右邊代表白天處于波峰期。正常的混部指占用圖中藍色陰影部分的資源把利用率提高到40%,彈性分時復用技術是指對應用畫像找到應用流量波谷期,對應用縮容,大量釋放內存和CPU,調度更多計算任務。通過這項技術,把平均CPU利用率提升到60%以上。
在雙11時,如何利用計算任務集群混合部署助力雙11降低成本?我們把計算任務集群分成三種狀態:完全沒有在線服務的狀態、在線服務和計算任務共同存在的過渡狀態、雙11時在線服務占主流計算任務短時間降級狀態。集群混合部署后資源分配三七開,計算任務可以搶占在線任務分配的資源;在壓測和大促非峰值時資源分配五五開;在大促峰值到來時,計算任務短時間降級,空閑資源支持支撐雙11峰值。通過一小時快速建站拉起完整交易站點,大幅度降低了雙11的單筆交易成本。
Pouch容器和容器化的進展
全面容器化是提升運維能力、拉通運維差異的關鍵的技術。首先介紹一下阿里巴巴內部容器技術產品Pouch。它從2011年開始建設和上線,基于LXC,在2015年初開始吸收Docker鏡像功能和很多標準。阿里巴巴的容器非常有特點,它結合了阿里內核,大幅度提高了它的隔離性,目前以百萬級規模部署于阿里集團內部。
再來了解一下Pouch的發展路線。以前用的是虛擬機的虛擬化技術,虛擬化技術過渡到容器技術面臨著很多運維體系的挑戰。運維體系的遷移是一個很大的技術成本。我們做到了阿里內部運維和應用視角,有獨立IP,能夠ssh登錄,有獨立的文件系統和資源隔離使用量可見性。2015年以后,阿里巴巴引入Docker 標準,形成了新的一套容器Pouch并集成整個運維體系。
Pouch的隔離性非常好,是富容器,可以登錄容器,看到容器內進程自己占的資源量,有多少進程,進程掛了容器是不會掛的,可以運行很多的進程。兼容性很好, 舊版本和以后的版本都支持,對利舊很有幫助。同時他經過了百萬級容器部署的規模化驗證,我們研發了一套P2P鏡像分發機制,大幅度提升分發效率。同時兼容了業界更多標準,推動標準的建設,支持RunC 、RunV 、RunLXC等標準。
Pouch的結構是比較清晰的,Pouchd如何跟kubelet、swarm、Sigma交互。在存儲上跟業界一起建設了CSI標準。支持分布式存儲如ceph、pangu。在網絡上使用lxcfs增強隔離性,支持多種標準。
目前Pouch化覆蓋了阿里的大部分BU,2017年達到百萬級部署,在線業務達到100%容器化,計算任務也開始容器化,它拉平了異構平臺的運維成本。覆蓋運行模式,多種編程語言,DevOps體系。Pouch覆蓋了阿里幾乎所有業務板塊如螞蟻、交易、中間件等等。
Pouch于2017年10月10號宣布開源,11月19日正式開源,把代碼放到https://github.com/alibaba/po...,計劃在2018年03月發布第一個大版本。我們希望通過Pouch的開源推動容器領域的發展和標準的成熟,給業界提供差異化有競爭力的技術選擇。不僅方便傳統IT企業利舊,老的基礎設施也同樣能夠享受容器化帶來的運維層的好處和優勢,而且方便新的IT企業享受規模化穩定性和多標準兼容性帶來的優勢。
在存儲計算分離上,由于有狀態任務需要復制狀態,會嚴重影響分時復用運維自動化程度和調度效率。我們在云化過程中實現了存儲計算分離技術。由于計算集群和在線服務不在一個機房,計算任務的數據需要先緩存到在線業務的集群上,所以我們搭了一個緩存橋頭堡,然后進行計算。隨著機房結構的調整和網絡的優化,我們開始對在線計算同時進行存儲計算分離。目前已經實現去橋頭堡方案,不受網絡長傳帶寬的限制,減少了大集群跨網絡核心對穿流量,提升了調度的靈活性。存儲計算分離技術不僅可以使用阿里盤古技術,同時也兼容業界這一套容器上的存儲標準,這也是阿里實現云化架構的非常關鍵的技術。在網絡架構的升級上,我們大規模使用25G網絡,在公有云上使用VPC,overlay能云上、云下和數據集群整個網絡打通,這也是阿里大規模混合部署的前提。
云化架構和雙11未來技術路線
這是阿里混合云彈性架構,是基于編排的一套技術體系,也是面向動態的架構。它可以分鐘級進行單元的擴容和縮容,快速在云上或大數據集群上建立交易單元,實現秒級巡檢,確保交付的可靠性。這套體系能持續降低資源持有時間和服務器的非ONLINE時間,降低損耗時間,提升了彈性的效率。雙11超過60%的峰值流量都跑在阿里云上,全面使用阿里云彈性基礎設施,8個小時快速構建全球最大混合云。
這是雙11云化架構運維體系介紹。將資源分為在線任務集群、計算任務集群和ECS集群。資源管理,單機運維、狀況管理,命令通道、監控報警這類基礎運維體系已經打通。在雙11場景中,我們會在云上劃出一個獨立的區域與其他場景互通。在互通區域,Sigma調度可以到計算集群服務器里申請資源,生產Pouch容器,也可以到cloud open API去申請ECS,生產出容器的資源。在日常的場景中Fuxi可以到sigma里申請資源,創建需要的容器。在雙11場景中,利用應用和規模化運維在容器上構建大量在線服務,包括業務層的混合部署,每個集群都有online service和有狀態服務及大數據分析。阿里云的獨占集群也部署了在線服務和有狀態的數據服務,做到了datacenter as a computer,多個數據中心像一臺計算機一樣來管理,實現跨多個不同的平臺來調度業務的發展所需要的資源。構建了混合云用極低的成本拿到服務器,解決有沒有的問題。先有服務器規模,再通過分時復用和混合部署來大幅度提升資源利用率。真正實現了彈性資源平滑復用任務靈活混合部署,用最少的服務器最短的時間和用最優效率完成業務容量目標。通過這一套云化架構,我們在雙11實現了新增IT成本降低50%,使日常IT成本下降30%,帶來了集群管理和調度領域的技術價值爆發,也說明容器、編排調度技術的流行是一種必然。
后期我們會通過阿里云平臺把內部儲備的技術對外輸出。這套技術是內部調度容器運維領域的優勢技術,具備調度、編排、應用管理、監控、混合云的快上快下構建、彈性伸縮、混合部署的能力,同時兼容Kubernetes API,提供企業級容器應用管理能力,提高企業IT效率,進而提高企業競爭力和創新效率。混合部署和自動化混合云構建技術經過雙11規模驗證,成為一個非常成熟穩定的技術體系。在云上,我們和ACS 、EDAS 、EMR合作,提高了產品的完整性。
未來云化架構和雙11有哪些技術的發展方向?在雙11場景下利用技術解決了大促成本的問題,找到了一個正確的方向,通過長期建設和發展,有更大的優化效率的提升。未來我們希望通過云化架構提升阿里云IDC資源利用率、通過擴大調度規模和混部形態擴大效益。繼續推進面向終態的體系結構和運維體系的提升,資源持有時間優化30%以上,持續降低大促的交易成本。對雙11本身,成本的問題已經得到了比較好的優化,未來著手于效率的提升,減少時間和人力成本,通過雙11技術變量的采集、分析、預測微觀視角的剖析和數據算法驅動,用智能決策進行處理。通過數據化、智能化、人與機器智能協同指揮,提升雙11準備和作戰效率,減少人力投入。通過加速基礎技術的迭代,在體驗、效率、成本和最大吞吐能力上找到新的平衡點,為整個行業和消費者帶來一個更加完美的雙11。
總結
以上是生活随笔為你收集整理的九年双11云化架构演进和升级,打造更加完美的双11的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【单页应用】全局控制器app应该干些什么
- 下一篇: json.dumps和loads方法