從阿里核心場景看實時數倉的發展趨勢
作者:果貝,阿里云資深技術專家 ,實時數倉Hologers負責人
2022年1月7日,阿里云實時數倉Hologres舉行了年度發布會,在發布會上,來自阿里的資深技術專家從阿里的核心場景出發,為大家解讀了實時數倉的新發展趨勢“在線化、敏捷化、一站式”。通過本文,我們將會深入解讀實時數倉發展所面臨的問題,以及核心發展趨勢,以幫助大家更好的做產品選型和數倉規劃。
實時數倉是現在大數據領域非常熱門的一個概念(和它同熱度的大概就是湖倉一體了)。經過十多年的發展,大數據已經成為每家公司的標配。傳統上,離線數倉(開源以Hive/Spark為代表,閉源以阿里MaxCompute、Snowflake、AWS Redshift、Google BigQuery等為代表,以及Vertica、Oracle、HANA等傳統IT廠商),流式計算(以Flink/Spark Structured Streaming為代表),數據服務層(HBase、MySQL、ES、Redis等)共同組成了大數據處理的標準架構:Lambda架構。Lambda架構提供了實時數據的服務(serving)能力。但Lambda架構的典型問題是開發復雜、數據冗余和分析不靈活。
近幾年,以ClickHouse、Apache Doris、阿里Hologres等為代表的實時數倉興起,通過實時寫入明細數據+靈活交互式查詢部分實現了去Lambda架構,在實時性、靈活性、成本、管理和運維等多方面都達到了較好的平衡。
隨著2021年雙11的完美落幕,實時數倉技術在阿里雙11場景也經歷了多年的實踐和發展。從早期的基于不同作業的煙囪式開發,到基于領域分層建模的數倉引入,再到分析服務一體化的新型融合式一站式架構,開發效率逐步提升,數據質量更有保證,也沉淀了更多技術創新,讓我們看到了一些未來數倉開發、應用的可能性和趨勢。
下面我們來聊聊從阿里雙11看到的實時數倉發展的一些趨勢。
一、實時數倉已經成為業務標配
第一個趨勢是實時數倉已經成為標配。
業務對時效的要求、對靈活性的要求越來越高,從而使得實時數據變為一種剛需。而實時數倉在成本、靈活性上的巨大優勢使得業務優先選擇實時數倉作為實時數據的生產、存儲和使用平臺。在阿里巴巴,Hologres服務了約90%的BU,集群規模超過了60萬core,并保持100%的增長速度。在這些業務中,有較常見的實時數倉場景,比如:
- 數字化運營:這種場景上游對接Flink進行數據流式加工;下游對接BI工具、數據大屏等,實現業務的自助開發和上線。極大提升了開發效率和靈活性,支持所見即所得的開發體驗。
- 網絡流量分析、Metrics分析:通過對網絡流量、及其他Metrics類數據的實時存儲和監控,可快速預警和定位設備潛在故障。在萬億級記錄上查詢秒級響應,故障秒級發現。
- 實時物流跟蹤:通過實時數倉實現物流信息的實時跟蹤,保證物流流轉狀態的實時更新、實時查詢。
在這些相對常見的實時數倉場景外,因為分析服務一體化(Hybrid Serving/Analytics Processing,以下簡稱HSAP)能力(以及與之對應的Hologres高速純實時寫入能力和點查能力),Hologres也被用在了很多非典型的實時數倉場景。例如:
- 對商家的廣告人群圈選:通過Hologres對廣大商家(to B)提供高QPS、低延遲的人群圈選和廣告投放服務。
- 無人車送貨:Hologres承載無人車上商品的訂單、物流等指標信息,面向B端驛站,實時匯報物流信息,從而幫助驛站老板完成智能化包裹分揀、移動投柜等任務;面向用戶,再通過系統調度運力,實現”定時上門、送貨到樓”。
- 搜索推薦中的特征存儲和樣本存儲:利用Hologres的強大點查能力,實現實時樣本(feature store)、實時特征(sample store)和實時算法效果分析。
- 客戶全鏈路體驗:客服服務部門通過在Hologres存儲客戶的相關多渠道數據,實現直接對消費者提供各種明細查詢能力(to C)。
- …
類似的場景還有很多,數據的實時“被看見”,“被使用”成為企業高速發展的原動力。
二、實時數倉支撐在線生產系統
第二個趨勢就是實時數倉越來越成為生產系統的一部分。
傳統上,實時數倉(數據倉庫)是一個非生產系統。因為它主要面對的是內部客戶,所以雖然大屏等重要性很高,但實時數倉本質上并不在生產關鍵鏈路上,也就是說,如果實時數倉不可用了,對客戶的影響并不大。這也是為什么大部分實時數倉產品在高可用性、資源隔離、災備等能力上和數據庫等系統是有很大差距的。
傳統上對外的服務是通過離線/流式加工+結果點查來提供的,即和用戶交互的關鍵鏈路是結果點查(通過HBase、Redis、MySQL這樣的系統去承載)。這種模式的好處是簡單可靠,但限制也是巨大的,能提供的服務功能非常有限,且不靈活。業務迫切希望能將內部的實時數倉能力以可控的方式開放給外部客戶(to B、to C),并且保持內外兩套系統在數據和邏輯上的一致性。上面列舉的阿里廣告、無人車送貨、客戶全鏈路體驗等場景都是這種to B,甚至to C的案例。
隨著實時數倉作為一個服務對外提供,用戶對服務的并發度、可用性、穩定性都提出了更高的需求。這也是Hologres在過去一年中重點發力的地方。Hologres在過去一年中引入了多副本、熱升級、快速failover、資源隔離、讀寫分離、災備等能力,實現了生產級高可用,并在今年的雙11中得到了很好的應用。舉幾個例子:
- 阿里巴巴客戶體驗事業部(Chief Customer Office,以下簡稱CCO)去年是業務上做了雙鏈路寫入和存儲冗余來保證高可用。今年雙11使用了Hologres原生高可用方案下掉手工雙鏈路,省去備用數據鏈路上實時任務開發、數據比對的人力投入,減少鏈路切換時的數據不一致,整體開發人力成本減少200人日,環比去年降低50%以上;減少了100+用于實時重保的備份鏈路作業,減少計算資源2000CU。
- 阿里巴巴數據產品與技術部(Data Technology,以下簡稱DT)使用Hologres讀寫分離方案,高吞吐寫入和靈活查詢互不干擾;分析查詢QPS增長80%的同時,查詢抖動明顯減少。
我們認為實時數倉的生產系統化是一個必然的趨勢,相信各個實時數倉產品都會逐步加碼這方面的開發投入。
三、分析服務一體化(HSAP)
第三個趨勢是分析服務的一體化(HSAP)。
Hologres是這方面的首倡者,源頭是阿里集團內的業務對分析服務一體化有強訴求,分析服務一體化最佳實踐首先在阿里內部落地,但我們在業界也看到越來越多的產品和企業在倡導和實踐分析服務一體化。
分析服務一體化(HSAP)可以從幾個層面上去理解:
最基礎的是用戶可以使用一套技術棧(Flink+Hologres)去解決Ad-hoc Query分析(對內)和線上服務(對內、to B、to C)兩個任務,從而降低開發運維成本。傳統上,實時數倉做的是Ad-hoc Query,而lambda架構實現的是線上服務。這兩個在技術棧、數據鏈路、開發運維等都完全不同,但處理的數據來源往往是同一份數據,導致了大量的開發作業冗余,同時數據的一致性也是大難題。而通過使用統一技術棧同時滿足這兩方面的需求,開發、運維、治理變的簡單。
以阿里CCO的場景為例,數據寫入到Hologres行存表后(行存表寫入吞吐高,主鍵查詢快,更新場景Binlog開銷低),會通過Hologres表的binlog被Flink二次消費加工后,存入Hologres的列存表提供分析(列存對于統計類查詢速度快)。行存表提供線上服務/點查,列存表提供分析能力。
更高層次的HSAP是用戶可以在一個平臺上用一份數據去實現Ad-hoc Query和線上服務兩個任務,同時實現良好的資源隔離和可用性。
例如,今年雙11 DT部門上了Hologres讀寫分離方案(由兩個Hologres實例分別負責實時寫入和實時查詢,但共享一份底層數據存儲),同時有多個讀實例分別負責不同類型的查詢,這樣就可以保證讀寫隔離、分析查詢和服務查詢隔離,且只有一份數據。也就是所謂的One Data,Multi Workload。
分析服務一體化除了上述的好處外,另外一個顯著的優勢是服務上線速度明顯加快。因為一體化后,分析和服務的邊界變的模糊,所以服務的開發和分析差異不大,可以認為服務就是一種簡單、固定pattern的分析。這樣,傳統上服務上線的復雜流程就被大大簡化了。當有緊急需求需要臨時開發,也能馬上就上線,無需繁瑣的流程了。
我們相信分析服務一體化的理念隨著像Hologres這樣的產品的發展,會在更多的場景落地。而這也會反哺像Hologres這樣的HSAP產品,將HSAP的理念、方法論、支持能力在產品中更好的沉淀下來,從而讓更多的用戶更容易的從HSAP中獲益。
四、實時數據治理成為剛需
第四個趨勢是實時數據治理變的越來越重要。
實時數據對于企業來說,有著致命的吸引力。因此,企業會自覺不自覺的逐步加大實時數倉上的投入。而各企業的實時數倉因為實時性的要求,往往沒有實施離線數倉那么嚴密的方法論和管理體系。因為沒有治理,數據大量冗余或者不合理,往往會導致成本急劇增大,數據可信度下降。在阿里這樣的超大企業中,這塊的成本就會突顯出來,這已經成為實時數倉的一種剛需。
通過對實時數倉、離線數倉、流式計算、消息隊列等全鏈路進行數據治理,可以實現數據沒有“法外之地”,從而在節省成本的同時,提高數據的質量,真正將數據變為企業的資產。
五、實時數倉的類數據庫化
第五個趨勢是實時數倉的類數據庫化。
大數據誕生于對傳統數據庫的揚棄,從NoSQL到NewSQL,大數據產品走出了一條獨立于數據庫的路。但就像從NoSQL到NewSQL一樣,大數據產品中的實時數倉也在像數據庫學習,提供了和數據庫更好的兼容性,從而讓用戶能以更低的成本使用實時數倉產品。
這包含幾個方面:
- 操作SQL化以及和傳統數據庫在協議、語法上的兼容性,從而方便開發同學可以用習慣的工具(BI、開發工具等)去對接開發。大數據在這方面的積累還是及不上數據庫幾十年的積累的,相當多的業務同學對于數據庫很熟練,但對于大數據(特別是實時數倉)就感覺不容易上手了。
- 數據模型和語義向傳統數據庫靠攏。例如,主鍵(Primary Key)概念是傳統數倉類產品所缺乏的,操作的原子性數倉產品往往也不能保證,這就限制了很多場景的應用。比方說,Clickhouse缺乏數據庫意義上的主鍵(CK所說的主鍵是另外一個東西,非唯一性約束),所以就不合適處理數據庫CDC同步場景。這兩年,大數據業界可以明顯看到對這塊的增強。最典型的例子是DeltaLake、Iceberge和Hudi等為代表的近實時數倉增加了ACID能力。當然,受制于架構,這種近實時ACID在頻繁更新場景下的性能和延時是有瓶頸的。
在阿里,大量場景需要這種基于主鍵的更新能力,以阿里巴巴內部場景為例:
- 數據庫的實時同步:通過將上游的分庫分表和多個業務庫實時同步(鏡像)到一個大數據實時數倉中,可以提供對業務數據的強大分析能力,而這就需要很好的處理純實時的高頻UPDATE和DELETE操作。
- Flink 計算產生的UPDATE和DELETE(RETRACTION)操作:例如統計GMV,Flink在結果更新時會生成UPDATE記錄,而在有些場景下會生成RETRACTION記錄(DELETE),這都要求下游系統能很好的處理這兩類事件。
- 風控等業務的計算是由多路作業共同完成的,這些作業共同實時更新一張大寬表(每個作業更新部分字段),這就要求下游系統能提供基于主鍵的部分更新能力。
傳統上,這樣的業務是由HBase、Redis這樣的NoSQL系統或者MySQL、PostgreSQL等數據庫RDS來承接的。但NoSQL的問題是分析能力普通偏弱,而數據庫問題是寫入性能和規模有限制。
這些業務在大數據處理中普遍存在。但在阿里的挑戰是因為規模的巨大(特別是雙11這樣的場景),對基于主鍵的更新性能和延遲有苛刻的要求。
Hologres從設計之初就考慮了這兩點。Hologres完全兼容了PostgreSQL 11的協議、語法、函數等,很多PostgreSQL擴展(例如PostGIS)可以直接使用。同時,Hologres提供了完整的主鍵概念和強大的更新能力,并提供了單SQL的ACID。今年雙11,有業務測得了每秒350萬+的實時寫入更新性能。這些能力極大的放寬了實時數倉的應用場景,將傳統由NoSQL和RDS承載的場景改由實時數倉來承載,為用戶提供了更加強大的分析處理工具。
實時數倉的類數據庫化并不就等價于HTAP數據庫了。HSAP相比于HTAP,在事務能力上是削弱的。因為在服務(serving)場景,并不需要傳統數據庫完整的事務能力。而這種舍棄,帶來的是在實時寫入性能和查詢性能上的極大提升,以及可擴展性上的提升(因為不需要全局事務管理器了)。因此,HSAP相比HTAP也就更加適合大數據場景。
六、實時數倉開發敏捷化
最后一個趨勢是開發方法論上的變化,實時數倉的開發越來越敏捷,以適應分析場景的靈活多變。
過去數倉的開發往往按照經典的方法論,采用ODS->DWD->DWS->ADS逐層開發的方法,層與層之間采用事件驅動,或者微批次的方式調度。分層帶來更好的語義層抽象和數據復用,但也增加了調度的依賴、降低數據的時效性、減少數據靈活分析的敏捷性。
實時數倉驅動了業務決策的實時化,在決策時通常需要豐富的上下文信息,因此傳統的高度依據業務定制ADS的開發方法受到了較大挑戰,成千上萬的ADS表維護困難,利用率低,更多的業務方希望通過DWS甚至DWD進行多角度數據對比分析,這對查詢引擎的計算效率、調度效率、IO效率都提出了更高的要求。
隨著計算算子向量化重寫、精細化索引、異步化執行、多級緩存等多種查詢引擎優化技術,Hologres的計算力在每個版本都有較大改善。因此我們看到越來越多的用戶采用了敏捷化的開發方式,在計算前置的階段,只做數據質量清理、基本的大表關聯拉寬,建模到DWD、DWS即可,減少建模層次,同時,將靈活查詢在真正分析時在交互式查詢引擎中執行,通過秒級的交互式分析體驗,支撐了數據分析民主化的重要趨勢。
七、總結
阿里巴巴在業界是較早應用實時數倉來處理海量數據的公司。實時數倉在阿里的發展也逐漸走入深水區。無論是生產系統化、分析服務一體化、實時數據治理(平臺化)還是類數據庫化、敏捷化,實時數倉正在隨著業務需求的快速發展而快速迭代,并在雙11這樣的年度大戲中煥發出越來越明亮的光彩,成為業務必不可少的伙伴和助手。
業務驅動技術,數據帶來價值,實時數倉Hologres同阿里巴巴核心業務一起成長一起打磨,從多維復雜OLAP分析到高QPS點查,高性能實時寫入與更新到高可用,為大數據平臺提供統一分析服務出口,滿足一站式實時數倉的存儲、開發、治理、服務全流程全場景。
我們相信,這些實時數倉的趨勢也適用于整個業界,我們會逐步把在阿里雙11中積累的能力在云上產品中透出,幫助客戶用好實時數倉,共同成長!
【本文為51CTO專欄作者“阿里巴巴官方技術”原創稿件,轉載請聯系原作者】