每年雙11除了“折扣”劝篷,阿里人關注的另一個焦點娇妓,就是面向全世界媒體 直播的“實時大屏”(如下圖所示)。包括總成交量在內的各項指標只估,通過數(shù)字 維度展現(xiàn)了雙11狂歡節(jié)這一是買家着绷,賣家及物流小二共同創(chuàng)造的奇跡蓬戚!
圖 3:雙11媒體直播大屏
為實現(xiàn)這一大屏夸楣,背后需要實時處理海量的、龐大電商系統(tǒng)各個模塊產生的 交易日志子漩。例如雙 11 當天產生的日志量達到了 PB 級別豫喧,而每秒處理的峰值更 是高達近1億事件! 如此大規(guī)模幢泼、高吞吐和低延時計算紧显,帶來一系列世界級的技術挑戰(zhàn),包括:
- 實時編程:流式的數(shù)據(jù)處理給業(yè)務邏輯的表達和推理帶來了很多的復
雜性缕棵。特別面對不斷變化的業(yè)務需求,如何幫助用戶快速地編寫和驗證實時計算 邏輯是至關重要的招驴。 - 低延時:實時計算強調計算延時和結果的時效性篙程。例如實時大屏對計算 延時特別敏感,每年的雙11都超越前一年更早地達到相同的成交量别厘,系統(tǒng)需要 在秒級甚至毫秒級反應出每一筆交易虱饿。即使在流量高峰時(雙 11 晚 0:00 點) 也需要保證延時!
- 集群利用率:為提高資源利用率,我們將不用業(yè)務的實時處理邏輯共 享一個集群。這樣的共享也帶來性能隔離的問題,即如何讓同一臺物理機上的不 同邏輯任務不互相干擾。這也是大部分開源框架忽略的重要問題。
- 嚴格容錯及數(shù)據(jù)一致性:隨著應對高吞吐而不斷擴大的集群規(guī)模,各 種軟硬件故障都難以避免。如何保證實時計算在任何故障下都能產生準確涮坐、一致的計算結果昵时,不遺漏、重復事件輸出俄占,也不引起內部狀態(tài)的偏差,是另一個重大 挑戰(zhàn)鹰贵。
- 多樣化場景支持:隨著實時決策對業(yè)務的價值越來越多敷钾,系統(tǒng)還需要 支持越來越復雜和多樣化的場景挠锥,如在線機器學習、結合圖計算實現(xiàn)的動態(tài)關系 網絡分析等等侨赡。 下文介紹Galaxy的重要技術創(chuàng)新蓖租,簡要描述它們如何幫助應對以上技術挑 戰(zhàn)粱侣。
2.1 SQL 與增量計算——復用熟悉的離線思維,自動實
現(xiàn)增量(流式)計算 為了簡化用戶編程蓖宦,特別是利用原有的離線計算作業(yè)快速實現(xiàn)實時計算齐婴, Galaxy允許通過高層描述性語言,如用戶熟悉的SQL來編寫流計算作業(yè)球昨。例如 下面的例子尔店,通過簡單幾行SQL代碼就可以實現(xiàn)過濾眨攘、雙流關聯(lián)等業(yè)務邏輯主慰。
在執(zhí)行時,由于數(shù)據(jù)是以流式進入系統(tǒng)的鲫售,用戶的 SQL 就像數(shù)據(jù)庫視圖一 樣共螺,被自動增量更新,并以一定的頻率輸出結果情竹,供下游計算和展示藐不。 這一獨特的編程設計,不僅幫助用戶借助熟悉的離線處理思維表達實時計算 邏輯秦效,也因為同樣的程序可以在離線系統(tǒng)運行雏蛮,使得結果的對比變得易如反掌。
2.2 高性能優(yōu)化引擎——實現(xiàn)低延時計算阱州!
用戶的SQL腳本經過編譯優(yōu)化挑秉,生成數(shù)據(jù)流圖,然后運行于Galaxy的分布 式引擎之上苔货。相比開源數(shù)據(jù)流引擎犀概,Galaxy 引擎在“阿里巴巴規(guī)模”下夜惭,面對 真實復雜的業(yè)務場景做了很多優(yōu)化姻灶。包括自適應的消息打包、自定義序列化诈茧、數(shù) 據(jù)行+列壓縮产喉、先進的內存管理、和內部緩存隊列和線程模型敢会,以及基于下游向 上游“反向”傳遞壓力的流控策略等曾沈。
經過以上一系列的優(yōu)化,Galaxy 相比去年提升了 6 倍左右的吞吐性能走触。下 圖顯示了 Galaxy 相比開源系統(tǒng)的性能優(yōu)勢晦譬。在面對今年雙 11 3 倍于去年的峰 值情況下,表現(xiàn)非常穩(wěn)健互广。
圖 5:開源框架性能對比敛腌,通過“窗口 WordCount(6 組參數(shù))”基準測 試獲取.
2.3 靈活的資源調度
Galaxy 面對阿里巴巴集團眾多業(yè)務場景卧土,將不同業(yè)務放置于大規(guī)模(幾千 臺服務器組成的)共享集群中,以提高資源利用率像樊。另一方面也隨之帶來了“多 租戶”環(huán)境下的作業(yè)資源隔離問題尤莺,它直接影響資源的有效利用和作業(yè)的計算性 能。 經過多年的積累生棍,Galaxy支持CPU颤霎、內存、網絡和磁盤I/O等多維度資源 的隔離涂滴。例如友酱,對于 CPU 的隔離支持靈活的 min-max 策略,既保證了每個作 業(yè)基本的資源需求柔纵,也使的空閑的資源被大限度利用缔杉。
圖6:作業(yè)維度的CPU資源min-max共享模型
不一樣的技術創(chuàng)新
166
在此基礎上,Galaxy 的資源調度還支持一定比例的“超賣”搁料、作業(yè)優(yōu)先級 調度或详、動態(tài)負載均衡和微作業(yè)共享單一物理核等多種機制。對于資源消耗特別大 的作業(yè)還支持動態(tài)按需分配(即資源的彈性分配)郭计。在滿足復雜的運維要求和實 時計算連續(xù)性的同時霸琴,實現(xiàn)了高效的資源利用和性能隔離。
2.4容錯與狀態(tài)管理 流計算需要連續(xù)處理可能無界的輸入和連續(xù)產生輸出昭伸。在長時間運行中梧乘,大 規(guī)模計算集群的各種軟件或硬件故障難以避免。由此對于計算和中間結果(如內 存狀態(tài))的容錯就至關重要勋乾。為了做到精確的容錯和故障恢復宋下,保證結果的準確 性。Galaxy 支持多種靈活的容錯策略辑莫,以在不同計算特性下学歧,權衡容錯資源消 耗和恢復性能。如基于輸入的重新計算各吨、狀態(tài)檢查點(checkpoint)枝笨,甚至是 多副本的狀態(tài)和計算容錯等。 特別是自動的分布式增量檢查點功能揭蜒,系統(tǒng)自動利用內存横浑、本地磁盤和遠程 存儲構成的多級存儲,在不影響流計算延時的情況下異步實現(xiàn)了計算狀態(tài)的持久 化屉更。當有故障發(fā)生時徙融,保存的狀態(tài)可以被快速加載。這一切對用戶都是無感知的瑰谜。
圖7:自動利用多級存儲的流計算狀態(tài)管理
2.5 開放可編程 API(兼容 Apache Beam)
除了SQL這樣高層的描述語言和用戶自定義邏輯(UDF)欺冀,Galaxy還支持 Apache Beam API树绩,以提供更為靈活的實時邏輯編程。Beam是一個統(tǒng)一開放 的大數(shù)據(jù)應用編程接口隐轩,可以同時描述離線和在線邏輯饺饭,早由 Google 提出。 Beam提供了功能豐富的編程接口职车,能有效的處理有界瘫俊、無界、亂序的數(shù)據(jù)流輸 入悴灵。 下面顯示了通過Beam實現(xiàn)的流式WordCount的例子: 1.指定Runner(底層計算引擎)創(chuàng)建一個Pipeline扛芽。 2.使用Source在 Pipeline上生成一個PCollection,輸入數(shù)據(jù)称勋。 3.對 PCollection應用Transforms操作胸哥,比如wordCount中的count操作涯竟。 4.對后的PCollection應用Sink赡鲜,輸出結果到外部存儲中。 5.Run Pipeline到底層的計算引擎中庐船。 使用Beam實現(xiàn)WordCount代碼樣例
public static class CountWords extends PTransform<PCollection<String>, PCollection<KV<String, Long>>> {
@Override public PCollection<KV<String, Long>> apply(PCollection<String> lines) {
// Convert lines of text into individual words.
PCollection<String> words = lines.apply(
ParDo.of(new ExtractWordsFn()));
// Count the number of times each word occurs.
PCollection<KV<String, Long>> wordCounts = words.apply(Count.<String>perElement());
return wordCounts;
}
}
借助Beam银酬,用戶可以利用高性能的Galaxy引擎,定制面向特定領域的系 統(tǒng)交互接口筐钟。同時揩瞪,Galaxy 今后也將兼容更多生態(tài)(如 Spark Streaming 和 Flink Streaming API)。
2.6 可視化集成開發(fā)平臺和自動化運維
Galaxy 還提供了“一站式”的集成開發(fā)環(huán)境——貝葉斯(Bayes篓冲, https://data.aliyun.com/product/sc)和自動化運維平臺——特斯拉(Tesla)李破。 通過它們,用戶可以方便地管理流計算應用的生命周期壹将,包括編程嗤攻、調試、監(jiān)控 運維诽俯,極大地降低了流計算系統(tǒng)的使用門檻妇菱。
圖8:貝葉斯集成開發(fā)環(huán)境
2.7 雙 11 的寶貴工程經驗
為保障系統(tǒng)在雙11平穩(wěn)支撐業(yè)務,在以上功能基礎上暴区,我們還總結了完整 的全鏈路保障方法: ? 主備雙鏈路容災:利用 Galaxy 對多副本執(zhí)行的支持闯团,面向雙 11 重點 媒體大屏等實時業(yè)務,實現(xiàn)了跨機房的多鏈路副本仙粱。哪怕是整個機房的故障房交,都 能在秒級自動切換到另一副本上執(zhí)行,保障了雙11系統(tǒng)高可用伐割。 ? 實時全鏈路監(jiān)控:我們從數(shù)據(jù)采集候味、讀取淹遵、消費、入庫各個環(huán)節(jié)都增加 延時指標的埋點负溪,可以清晰地看到整條鏈路各個階段的延時透揣,快速分析哪個組件 性能瓶頸。另外川抡,針對作業(yè)本身運行情況辐真,比如輸入吞吐、流量崖堤、CPU 和內存 消耗侍咱,都做了實時分析和展示的系統(tǒng),能在秒級發(fā)現(xiàn)作業(yè)的異常密幔。
? 運維診斷工具:為應對各種應急響應楔脯,我們做了一套完整的運維診斷工 具用于發(fā)現(xiàn)集群熱點機器、熱點作業(yè)胯甩。在Tesla頁面上能快速找到集群的熱點機 器昧廷,通過“機器分析”工具查看這臺機器上實時跑的任務,并且能定位到相應的 業(yè)務和用戶偎箫。通過“作業(yè)分析”工具能自動診斷異常木柬,結合作業(yè)的優(yōu)先級,實現(xiàn) 了一鍵負載均衡淹办、啟停眉枕、續(xù)跑等運維操作。 通過這些保障設施怜森,雙11當天速挑,即使在發(fā)生交換機硬件故障的情況下,面 向全球直播的媒體大屏業(yè)務并沒有受到任何影響副硅!
2.8 小結
擁有這些和其它諸多能力姥宝,Galaxy 已經具備了相當完善的實時計算能力, 也提供了“一站式”的解決方案想许。今年雙11當天伶授,Galaxy處理了PB級別數(shù)據(jù), 處理峰值達到了 1 億事件每秒流纹,平均處理延遲在毫秒級糜烹!除了雙 11 媒體大屏, Galaxy 還支撐著阿里巴巴集團內外眾多實時業(yè)務漱凝,包括數(shù)據(jù)運營疮蹦、廣告營銷、 搜索個性化茸炒、智能客服愕乎、物流調度阵苇、支付寶、聚劃算等