大資料匯流排平臺DBus設計思路與工作原理

宜信技術學院發表於2019-07-17


一、背景

企業中大量業務資料儲存在各個業務系統資料庫中,過去通常的同步資料的方法有很多種,比如:

  • 各個資料使用方在業務低峰期各種抽取所需資料(缺點是存在重複抽取而且資料不一致)
  • 由統一的數倉平臺通過sqoop到各個系統中抽取資料(缺點是sqoop抽取方法時效性差,一般都是T+1的時效性)
  • 基於trigger或時間戳的方式獲得增量的變更(缺點是對業務方侵入性大,帶來效能損失等)

這些方案都不能算完美,我們在瞭解和考慮了不同實現方式後,認為要想同時解決資料一致性和實時性,比較合理的方法應該是基於日誌的解決方案,同時能夠提供訊息訂閱的方式給下游系統使用。

DBus(資料匯流排)專案就是應這個需求而生的,DBus專注於資料的收集及實時資料流計算,通過簡單靈活的配置,以無侵入的方式對源端資料進行採集,採用高可用的流式計算框架,對公司各個IT系統在業務流程中產生的資料進行匯聚,經過轉換處理後成為統一JSON的資料格式(UMS),提供給不同資料使用方訂閱和消費,充當數倉平臺、大資料分析平臺、實時報表和實時營銷等業務的資料來源。

二、系統架構和工作原理

DBUS主要分為兩個部分:貼源資料採集和多租戶資料分發。兩個部分之間以Kafka為媒介進行銜接。無多租戶資源、資料隔離需求的使用者,可以直接消費源端資料採集這一級輸出到kafka的資料,無需再配置多租戶資料分發。

2.1 DBUS源端資料採集

DBUS源端資料採集大體來說分為2部分:

  • 讀取RDBMS增量日誌的方式來 實時獲取增量資料日誌,並支援全量拉取;
  • 基於logtash,flume,filebeat等抓取工具來實時獲得資料,以視覺化的方式對資料進行結構化輸出。

以下為具體實現原理

主要模組如下:

  • 日誌抓取模組:從RDBMS的備庫中讀取增量日誌,並實時同步到kafka中;
  • 增量轉換模組:將增量資料實時轉換為UMS資料,處理schema變更,脫敏等;
  • 全量抽取程式:將全量資料從RDBMS備庫拉取並轉換為UMS資料;
  • 日誌運算元處理模組:將來自不同抓取端的日誌資料按照運算元規則進行結構化處理;
  • 心跳監控模組:對於RDMS類源,定時向源端傳送心跳資料,並在末端進行監控,傳送預警通知;對於日誌類,直接在末端監控預警。
  • web管理模組:管理所有相關模組。

2.2 多租戶資料分發

對於不同租戶對不同源端資料有不同訪問許可權、脫敏需求的情形,需要引入Router分發模組,將源端貼源資料,根據配置好的許可權、使用者有權獲取的源端表、不同脫敏規則等,分發到分配給租戶的Topic。這一級的引入,在DBUS管理系統中,涉及到使用者管理、Sink管理、資源分配、脫敏配置等。不同專案消費分配給他的topic。

主要功能:

  • 無侵入方式接入多種資料來源: 業務系統無需任何修改,以無侵入性讀取資料庫系統的日誌獲得增量資料實時變化。目前RDBMS支援mysql,oracle資料來源(Oracle資料來源請參考Oracle相關協議), 日誌方面支援基於logstash,flume和filebeat的多種資料日誌抽取方案。
  • 海量資料實時傳輸: 使用基於Storm的流式計算框架,秒級延時,整體無單點保證高可用性。
  • 多租戶支援: 提供使用者管理、資源分配、Topology管理、租戶表管理等豐富的功能,可根據需求,為不同租戶分配不同的源端表資料訪問許可權,應用不同的脫敏規則,從而實現多租戶資源隔離、差異化資料安全。

  • 感知源端schema變更: 當源端發生schema變更時,能自動感知schema變化,調整UMS版本號,並通過Kafka訊息和郵件通知下游

  • 資料實時脫敏: 可根據需求對指定列資料進行實時脫敏。脫敏策略包括:直接替換、MD5、murmur等脫敏演算法,脫敏加鹽,正規表示式替換等。支援使用者開發jar包實現DBUS未覆蓋的個性化脫敏策略。  

  • 初始化載入: 支援高效的初始化載入和重新載入,支援任意指定輸出topic,靈活應對客戶需求。

  • 統一標準化訊息傳輸協議: 使用統一的UMS(JSON格式)訊息schema格式輸出便於消費,提供資料線級ums_id保證資料順序性,輸出insert,Update(before/after),Delete event資料。

  • 可靠多路訊息訂閱分發: 使用Kafka儲存和傳遞訊息保證可靠性和便捷的多使用者訂閱
  • 支援分割槽表/系列表資料彙集: 支援分割槽表的資料彙集到一個“邏輯表” 。也可將使用者自定義的系列表資料彙集到一個“邏輯表“。例:

  • 實時監控&預警: 視覺化監控系統能隨時檢視各資料線實時流量和延時狀況;當資料線發生異常時,根據配置策略自動發郵件或簡訊通知相關負責人

開源地址:https://github.com/BriData/DBus


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69918724/viewspace-2650805/,如需轉載,請註明出處,否則將追究法律責任。

相關文章