![](http://static.javashuo.com/static/loading.gif)
桔妹導讀:滴滴數據通道引擎承載着全公司的數據同步,爲下游實時和離線場景提供了必不可少的源數據。隨着任務量的不斷增長,數據通道的總體架構也隨之發生改變。本文介紹了滴滴數據通道的發展歷程,遇到的問題以及從此的規劃。html
![](http://static.javashuo.com/static/loading.gif)
數據,對於任何一家互聯網公司來講都是很是重要的資產,公司的大數據部門致力於解決如何更好的使用數據,挖掘數據價值,而數據通道服務做爲「大數據」的前置鏈路,一直以來都在默默的爲公司提供及時,完整的數據服務,這裏咱們對滴滴數據通道的演進作一個全面的介紹。微信
2. 網絡
數據通道簡介多線程
數據通道服務,顧名思義,是數據的通路,負責將數據從A同步到B的一套解決方案。架構
異構數據的同步是公司不少業務的廣泛需求,通道服務也就成爲了一項基礎服務。包括但不限於日誌,Binlog同步到下游各種存儲和引擎中,如HIVE,ES,HBase等,用於報表,運營等場景。app
數據通道方案自己涉及的組件不少,鏈路也比較複雜,這裏經過一個簡化的有向圖來介紹下通道的核心流程。異步
組件名稱分佈式 |
組件說明性能 |
容器大數據 |
業務方運行的容器是數據產生的地方,是異構數據的原始數據,包括業務日誌和Binlog等。 |
Agent |
Agent負責數據採集,常見的遠端數據包括普通日誌和Binlog,Agent負責將這類數據採集後發送到消息隊列中,經過讀取文件,並記錄offset的方式,保證至少一次的數據採集服務。 |
Kafka |
消息隊列的加入主要用於數據複用,削峯填谷以及上下游解耦。採集一份數據,多個下游能夠根據須要消費後自行處理,同時借用消息隊列的高吞吐能力,減小上下游的耦合,在流量突增的時候能夠起到緩衝的效果。 |
DSink |
DSink組件是公司內對數據投遞服務的簡稱,主要負責消費MQ數據投遞到下游存儲,經過消息隊列的OffSet保證至少一次的數據投遞。 |
ES/HDFS |
存儲引擎,異構數據經過上述投遞服務,完成結構化處理,投遞到下游存儲中,供業務方使用。 |
ETL |
寫入HDFS數據通常來講都是做爲業務方ETL的輸入,通過自定義的處理邏輯後寫入HIVE,供分析和計算使用。 |
數據倉庫 |
數據倉庫中保存結構化的數據,方便業務系統或者下游級聯使用。 |
各種業務系統 |
業務系統直接對接ES或者數據倉庫,提供線上或者準線上服務。 |
數據通道服務的演進
▍3.1 組件平臺化
目標:更好地服務業務
目標:承諾SLA
定時提交offset時只須要獲取Map中第一個Entry value的結束offset進行提交便可。
offset通過這種處理,能夠保證每次提交的offset都是準確的,完成投遞的數據,基於此,DSink實現了At Least Once語義。
目標:提高用戶體驗
目標:降成本,模板化
-
Flink是基於yarn來調度資源,最小的單位是1C1G,經過計算,能夠對每個任務的資源進行精準控制,儘量的減小資源浪費。 -
投遞引擎切換到StreamSQL後,全部任務都經過SQL表達,統一了任務模版。 StreamSQL的UDF特性能夠支持用戶自定義解析邏輯,基礎SQL能夠支持寫入下游ES或者HDFS等存儲,而用戶邏輯增長UDF後便可直接寫入。這一方面減小用戶重複開發的工做量,另外一方面也拓展了數據通道的服務範圍。
目標:問題診斷與數據治理
-
統籌整個鏈路資源,根據用戶任務,分配各個下游引擎資源 -
問題診斷和自動化處理——基於各種指標,完成問題智能分析和診斷,對於常見問題能夠自動化處理,減小人工干預 -
全鏈路血緣建設——根據血緣關係識別重點項目,分級保障 -
全鏈路數據治理——基於血緣關係完成數據治理,減小不比要的任務,進一步提高資源利用率
4.
數據通道服務承載着全公司的數據同步,絕大部分離線任務的數據源都是通道服務投遞的,能夠說當前的通道服務是整個滴滴數據的大動脈。通過這幾年的發展,通道服務也逐漸趨於完善,持續穩定的爲公司提供數據採集和投遞服務。
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
專一於大數據實時引擎技術,致力於數據通道全鏈路建設,基於各種實時引擎,爲公司提供穩定,可靠,高效,及時的數據通道服務。
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
內容編輯 | Charlotte 聯繫咱們 | DiDiTech@didiglobal.com
![]()
本文分享自微信公衆號 - 滴滴技術(didi_tech)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。