阿里十年技術沉澱|深度解析百PB級資料匯流排技術
雲原生場景下資料匯流排需求場景及挑戰
資料匯流排簡介
解耦生產者與消費者:消費方完全可以不用感知寫入方的任何細節,降低系統對接複雜性,提升系統可靠性。
應對流量洪峰,使資料的生產非同步於資料的消費,消峰填谷。
定義統一格式與操作語義:接入多種異構資料,透過資料處理構建統一的格式。
舉一個簡單的例子,在計算廣告檢索系統中,廣告的點展資料至關重要。一份點展資料往往會被多方訂閱消費,且應用場景各異,有精度到秒級的實時計算業務,也有類似於Hadoop的小時級或天級的批處理任務。如果資料直接對接,就需要考慮各種異常場景,會讓系統變得極其複雜。而透過資料匯流排,可以大大降低系統複雜度,提高系統可靠性,這樣可以保證任意一個資料訂閱系統即使經歷了下線維護或者當機,也可以在重新上線後從之前的斷點處繼續進行資料處理。
雲原生場景下的技術挑戰
生產者:因業務促銷等活動,流量在幾分鐘內上漲至原先十幾倍或幾百倍;
消費者:對一種資料同時有幾十個訂閱者來同時消費;
每天有幾百個異構資料來源接入,方式各不相同,需要大量適配。
開源方案的選擇與對比
採集端:承載可觀測資料採集及一部分前置的資料處理功能。隨著雲原生的發展,採集端也需要適應時代潮流,提供對K8s採集的友好支援。常見的採集端有Filebeat、FluentD/Fluent-bIt、Telegraf,以及我們開源的iLogtail。
訊息佇列:採集Agent往往不會直接將採集到的資料傳送到儲存系統,而是寫入訊息佇列,起到削峰填谷的作用,避免流量洪峰導致儲存系統當機。常見訊息佇列為Kafka、RabbitMQ等。
計算:用於消費訊息佇列中的資料,經過處理、聚合後輸出到儲存系統。比較常見的為Flink、Logstash等。值得注意的是,也開始有公司將iLogtail開源版作為計算層部署在日誌架構中。
儲存分析引擎:提供採集資料持久化儲存能力,並提供查詢分析能力。常見的儲存分析引擎為Elasticsearch、ClickHouse、Loki以及時序的Prometheus、influxdb等。
視覺化:藉助Kibana和Grafana提供採集資料的視覺化能力。
資料匯流排整體架構
採集接入層:承載了資料匯流排所有資料(支援Log、Metric、Trace、Event等)的接入,並且與阿里雲服務有深度的整合。接入手段以SDK/API為基礎,擴充套件了端上可觀測採集器 iLogtail、資料匯入服務、開源標準協議等多種接入方式。
管道層:以 LogHub 作為資料匯流排的核心流量中樞,功能可以完全替代 Kafka。透過 Restful API 對外提供接入服務,透過消費組的方式提供實時消費服務。
計算層:作為 LogHub 的下游服務,基於實時消費組,提供了各類資料處理及投遞服務;並且生態上支援主流開源流計算對接。
資料接入技術架構與實踐
資料接入能力概覽
對於通用協議等支援也比較豐富,相容 Syslog,Kafka、Promethous、JDBC、OpenTelemertry 等開源協議;支援眾多開源採集工具,例如 Logstash、Fluentd、Telegraf 等。
Producer Library
執行緒安全:Producer 內所有的方法以及暴露的介面都是執行緒安全的。
非同步傳送:客戶端計算與 I/O 邏輯分離。呼叫 Producer 的傳送介面通常能夠立即返回,Producer 內部會快取併合併傳送資料,然後批次傳送以提高吞吐量。
失敗重試:對可重試的異常,Producer 會根據使用者配置的最大重試次數和重試退避時間進行重試。
優雅關閉:使用者呼叫關閉方法進行關閉時,Producer 會將所有其快取的資料進行傳送,防止日誌丟失。
高效能:透過多執行緒、快取策略、批次傳送等手段,有效提升傳送效率。
可觀測資料採集器iLogtail
流量中樞技術架構與實踐
彈性:支援1~512個分割槽(shard),毫秒級擴容、縮容。
高吞吐:單shard支援5MB/sec寫入,10MB/sec讀取。
高容錯:單機failover不影響正常寫入。
去重:支援ExtractlyOnce去重寫入。
隨機查詢:1%額外儲存的開銷,支援任意資料隨機查詢(1次IO)。
索引模型:透過建立索引,提供資料Filter能力。查詢時,可以根據索引快速定位命中資料後,從佇列模型高效選擇所需的資料。
原始列存模型:針對特定欄位列式儲存,提供大資料統計分析能力。
PK(時序)列存模型:針對時序資料的特點,提供了主鍵排序後再欄位列存的模型,有效提升時序資料讀取效率。
全球化支援與智慧加速
LogHub 聯合 CDN 推出了全球自動上傳加速方案,基於阿里雲CDN硬體資源(覆蓋2800+節點,70+國家),全球資料就近接入邊緣節點,透過內部高速通道路由至LogHub,大大降低網路延遲和抖動。
彈性與保序處理
Shard分裂的原理
負載均衡:根據峰值、底值彈性擴容,控制成本。
日誌保序處理:將不同例項對映到不同分割槽,調整分割槽處理能力。
穩定性建設
粗粒度流控:Project級別
每秒上千個Nginx前端,將各種接收到的Project的流量、請求次數進行彙總,傳送至QuotaServer。
QuotaServer彙總所有來自Nginx的Project統計資訊,判斷是否超過Quota上限,進而決定是否需要採取限流措施。之後,將超過Quota的Project列表通知到所有的Nginx前端。
Nginx前端獲取禁用Project列表之後,立刻做出反應,拒絕這些Project的請求。
細粒度流控:Shard級別
每個Shard明確定義處理能力, 如5MB/sec寫入,10MB/sec的讀取。
當Shard佇列出現堵塞,根據Shard流量是否超過quota,返回使用者是限流還是系統錯誤(返回的Http錯誤碼是403還是500),同時將Shard限流資訊通知QuotaServer。
QuotaServer接收到限流資訊後,可瞬時將限流資訊同步至所有的Nginx。
Nginx端獲得Shard的流控資訊之後,對Shard進行精確的流控。
資料處理技術架構與實踐
資料加工:基於LogHub的stream模型實現,對資料進行實時行處理、以及鏈路編排。
定時(Scheduled)SQL:基於Logstore索引模型實現,對資料進行定時分析、聚合加工,一般用於取樣、去重或指標構建。
資料加工
規整:這是使用頻率最高的場景,比如從文字日誌資料中提取出關鍵資訊,將其轉為規範化的資料。
富化:比如使用者的點選資料中只包含商品ID,在分析時需要從資料庫關聯起詳細資訊。
脫敏:隨著我國資訊保安相關法律的完善,對於敏感資料(比如個人資訊)的處理要求越來越高。
分裂:在資料寫出時,出於效能、便捷性考慮會將多條資料合併輸出,在分析前則需要拆分出獨立資料條目。
分發:將不同型別的資料分別寫到不同的特定目標中,以供下游定製化使用。
整體架構
彈性機制
資料加工在任務排程中的彈性伸縮是基於LogHub的消費組和K8s的HPA機制實現的。在系統內部透過儲存計算分離實現資料加工計算力自由伸縮,在使用者側看到的則是服務化計算平臺,按量付費,無需關心繁雜的細節。
Cloud Data Processing Language(DPL)
Schedule SQL
SQL 執行 timeout 提升至 600 秒,單次最大處理百億級資料。
最小 1 分鐘週期執行,支援常駐或固定時間區間內排程執行。
支援靈活的查詢時間視窗引數配置,滿足多樣化需求。
exactly-once 寫入目標庫。
全託管執行,自動處理多種異常。
其他企業特性:完善的作業例項檢視、重試支援(控制檯、API)、例項執行失敗可告警通知。
雲上服務資料分派技術應用實踐
資料分派技術概述
多租戶隔離 流量無限擴充套件 透過多shard實現高併發、低延時
Cloud Lens架構
動態資料發現與採集
未來方向的思考與展望
附錄:
SLS :打造可觀察性統一引擎
五年雙十一:SLS資料管道發展之路
數字IT基礎-資料採集匯流排:https://developer.aliyun.com/article/672576
使用日誌服務LogHub替換Kafka:https://developer.aliyun.com/article/35979
日誌服務(原SLS)新功能釋出(1)--支援保序寫入和消費:https://developer.aliyun.com/article/5581
日誌服務(原SLS)新功能釋出(2)--彈性伸縮(Merge/Split):https://developer.aliyun.com/article/277425
參考連結:
[1]
[2]
[3]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024420/viewspace-2926766/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 數倉安全:資料脫敏技術深度解析
- Solon2 分散式事件匯流排的技術價值?分散式事件
- 智慧語音技術的深度解析
- 讓資料流動起來,RocketMQ Connect 技術架構解析MQ架構
- 視訊技術詳解:RTMP H5 直播流技術解析H5
- 匯入地址表鉤取技術解析
- 技術十年-迴歸自己十年技術經歷
- 頂級資料庫行會Percona阿里全面解析下一代雲資料庫技術資料庫阿里
- Docker容器編排技術解析與實踐Docker
- 第十年雙11,阿里技術人“變”了!阿里
- 十年沉澱,重啟開發之路
- 深度解析:分投趣fintoch模式系統開發技術(成熟合約技術)模式
- 掘金 AMA:聽掘金小冊《Redis 深度歷險》、《深入理解 RPC》的作者 — 老錢談技術輸出、沉澱那些事RedisRPC
- 掘金 AMA:聽掘金小冊《Redis 深度歷險》、《深入理解 RPC》的作者 -- 老錢談技術輸出、沉澱那些事RedisRPC
- 深度好文 | 資深技術Leader曹樂:如何成為技術大牛
- 大資料匯流排(DataHub)大資料
- 阿里分散式資料庫未來技術之路阿里分散式資料庫
- 資料探勘技術
- Python 技術百問Python
- 深度解析混合開發技術成熟度曲線
- JVM CPU Profiler技術原理及原始碼深度解析JVM原始碼
- 技術乾貨 | WebRTC 技術解析之 Android VDMWebAndroid
- 華為CloudNative分散式資料庫技術解析Cloud分散式資料庫
- Istio資料面新模式:Ambient Mesh技術解析模式
- 阿里巴巴成立雲原生技術委員會 雲原生升級為阿里技術新戰略阿里
- 阿里巴巴成立雲原生技術委員會,雲原生升級為阿里技術新戰略阿里
- 從初創到頂級技術公司,都在用哪些資料科學技術棧?資料科學
- DNS隧道技術解析DNS
- PostgreSQL TOAST 技術解析SQLAST
- 1269道Java技術答疑,阿里技術專家幫你Java技術進階Java阿里
- 技術分享 | TiDB 上百T資料拆分實踐TiDB
- 團隊技術資訊流建設
- 七、資料庫技術的發展及新技術資料庫
- Docker映象構建:技術深度解析與實踐指南Docker
- iOS應用效能監控與分析技術深度解析iOS
- 《Spring核心技術》第6章:深度解析@PropertySource註解Spring
- 大資料技術 - Kyuubi大資料
- 大資料技術 - SuperSQL大資料SQL