閱讀719 返回首頁    go 阿裏雲 go 技術社區[雲棲]


淘寶實時數據傳輸平台: TimeTunnel介紹

作者在工作中遇到了類似流式數據實時接入的業務場景,所以對淘寶的實時數據倉庫這一塊做了一些調研和了解。本文從業務場景和設計上介紹了淘寶的TimeTunnel工具,文中的圖片來自淘寶數據倉庫團隊交流過程中的sildes,也參考了一些相關文檔。


業務背景

TimeTunnel(簡稱TT)是一個基於thrift通訊框架搭建的實時數據傳輸平台,具有高性能、實時性、順序性、高可靠性、高可用性、可擴展性等特點(基於Hbase)。

目前TimeTunnel在阿裏巴巴廣泛的應用於日誌收集、數據監控、廣告反饋、量子統計、數據庫同步等領域。


開源在:TaoCode,代碼是開源的。

 

業務保障:

保證為所有的報表按時準備好所需數據,延遲不超過一分鍾;

保證為所有的實時應用提供實時數據,延遲不超過一秒鍾。

 

在整個數據倉庫中的角色(圖中”TT”字樣):


在全量/批量數據導入部分使用的是DHW和DataX,其中DataX貌似是開源的,也是一個不落地的異構數據源傳輸工具。

而在增量,或者說是流式場景下,這部分數據的采集和導入就依賴了TimeTunnel。


TT對接的Storm和Galaxy流計算模塊也簡單提一下:

galaxy是一套支持SQL定義業務邏輯的流計算服務化平台

galaxy之於storm,就類似hive之於hadoop的關係

下圖為Galaxy的一個架構圖:



組件


Time Tunnel大概有幾部分組成,TTmanager,Client,Router,Zookeeper,Broker。

 

TTManager: 負責對外提供隊列申請、刪除、查詢和集群的管理接⼝口;對內故障發現,發起隊列遷移

 

Client是一組訪問timetunnel的api,主要有三部分組成:安全認證api,發布api,訂閱api。目前client支持java,python,php三種語言。

 

Router:為客戶端提供路由信息,找到為消息隊列提供服務的Broker。Router是訪問timetunnel的門戶,主要負責路由、安全認證和負載均衡。Client訪問timetunnel的第一步是向Router進行安全認證,如果認證通過,Router根據Client要發布或者訂閱的topic對Client進行路由,使Client和正確的Broker建立連接,路由的過程包含負載均衡策略,Router保證讓所有的Broker平均地接收Client訪問。

 

Zookeeper是hadoop的開源項目,其主要功能是狀態同步,Broker和Client的狀態都存儲在這裏。

 

Broker是timetunnel的核心,負責消息的存儲轉發,承擔實際的流量,進行消息隊列的讀寫操作。



其他

對接數據

  • 數據庫的日誌(如mysql、oracle等)
  • 服務器產生的日誌(如apache)
  • app通過接口產生的數據


隊列資源

  • 隊列是一種資源,TimeTunnel提供隊列。
  • 隊列按需申請,訂閱隊列接口

持續服務

  • 故障發現,發起遷移
  • Broker之間流量均衡
  • 上下線機器平穩擴容

WhyHBase?

  • 順序scan速度快
  • 很好的擴展性
  • 強一致性
  • 高並發寫
  • 底層數據存儲基於HDFS
  • 開源,社區活躍
  • 國內頂級的運維和開發團隊

HBase表設計

  • 一個Queue對應一個region
  • 一組Queue(256/512)對應一個表
  • Rowkey:queueID + timestamp + seq +brokerID
  • 數據列族+屬性列族
  • 按天分表,方便刪除曆史數據
  • Pre-Sharding降低compact和split的發生


全文完 :)


最後更新:2017-04-03 12:56:43

  上一篇:go 九度題目1201:二叉排序樹
  下一篇:go sql查詢兩種寫法