宜信數據采集平台DBus概述


            宜信數據采集平台DBus概述

                                     作者:尹正傑

版權聲明:原創作品,謝絕轉載!否則將追究法律責任。

 

 

 

一.DBus產生背景

1>.采集工具的局限性

  當前有很多數據采集工具,他們或多或少都存在一些局限性:
    Sqoop:
      優點:
        RDBMS和Hadoop之間實現離線數據同步數據,其背后的工作本質依舊是MapReduce。
      缺點:
        僅限於離線和RDBMS和Hadoop之間的數據傳輸。

    DataX:
      優點:
        阿里出品的Sqoop加強版工具,GitHub地址:https://github.com/alibaba/DataX
      缺點:
        長於主流的RDBMS數據庫、NOSQL、大數據計算系統。

    Flume:
      優點:
        專注於日志實時采集。
      缺點:
        長於日志采集,其他方面相對弱一些。

    Logstash:
      優點:
        專注於日志采集,實時,ELK體系。
      缺點:
        長於日志采集,其他方面相對弱一些

    Filebeat:
      優點:
        更輕量級的日志收集工具,替代Logstash日志采集。
      缺點:
        長於日志采集,其他方面相對弱一些。

  上面這些采集工具還有一個共性問題是缺乏統一的數據源端管控,所以也就無法找到統一的數據入口,那后續處理元數據或者血緣分析會異常困難。

2>.數據同步方法局限性

  同時過去通常的同步數據的方法有很多種,比如:
    (1)各個數據使用方在業務低峰期各種抽取所需數據(缺點是存在重復抽取而且數據不一致)
    (2)由統一的數倉平台通過sqoop到各個系統中抽取數據(缺點是sqoop抽取方法時效性差,一般都是T+1的時效性)
    (3)基於trigger或時間戳的方式獲得增量的變更(缺點是對業務方侵入性大,帶來性能損失等)

  上述方案都不能算完美,要想同時解決數據一致性和實時性,比較合理的方法應該是基於日志的解決方案,同時能夠提供消息訂閱的方式給下游系統使用。在這個背景下DBus就誕生了。DBUS是中國宜信公司研發的。

 

二.什么是DBus

  DBus(數據總線)項目是為了統一數據采集需求而生,專注於數據的收集及實時數據流計算。

  DBus通過簡單靈活的配置,以無侵入的方式對源端數據進行采集,采用高可用的流式計算框架,對公司各個IT系統在業務流程中產生的數據進行匯聚。

  DBus經過轉換處理后成為統一JSON的數據格式(UMS),提供給不同數據使用方訂閱和消費,充當數倉平台,大數據分析平台,實時報表和實時營銷等業務的數據源。

  DBus支持多租戶管理,提供租戶級資源,數據隔離機制。

  DBus的主要應用場景:
    (1)數倉平台和數據分析平台
    (2)實時營銷決策
    (3)實時報表展示
    (4)異構數據實時同步
    (5)其他實時性要求高的系統

  DBus的主要功能:
    無侵入方式接入多種數據源: 
      業務系統無需任何修改,以無侵入性讀取數據庫系統的日志獲得增量數據實時變化。目前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存儲和傳遞消息保證可靠性和便捷的多用戶訂閱
    支持分區表/系列表數據匯集: 
      支持分區表的數據匯集到一個“邏輯表” 。也可將用戶自定義的系列表數據匯集到一個“邏輯表“。
    實時監控&預警: 
      可視化監控系統能隨時查看各數據線實時流量和延時狀況;當數據線發生異常時,根據配置策略自動發郵件或短信通知相關負責人。

  DBus官網地址:
    https://github.com/BriData/DBus

 

三.DBus架構和工作原理

  DBUS主要分為兩個部分,即貼源數據采集和多租戶數據分發。如下圖所示,DBUS兩個部分之間以Kafka為媒介進行銜接。無多租戶資源、數據隔離需求的用戶,可以直接消費源端數據采集這一級輸出到kafka的數據,無需再配置多租戶數據分發。

1>.DBUS源端數據采集

  DBUS源端數據采集大體來說分為2部分:
    讀取RDBMS增量日志的方式來 實時獲取增量數據日志,並支持全量拉取;
    基於logtash,flume,filebeat等抓取工具來實時獲得數據,以可視化的方式對數據進行結構化輸出;

  如下圖所示,為DBUS具體實現原理,主要模塊如下:
    日志抓取模塊:
      從RDBMS的備庫中讀取增量日志,並實時同步到kafka中;     增量轉換模塊:
      將增量數據實時轉換為UMS數據,處理schema變更,脫敏等;     全量抽取程序:
      將全量數據從RDBMS備庫拉取並轉換為UMS數據;     日志算子處理模塊:
      將來自不同抓取端的日志數據按照算子規則進行結構化處理;     心跳監控模塊:
      對於RDMS類源,定時向源端發送心跳數據,並在末端進行監控,發送預警通知;對於日志類,直接在末端監控預警。     web管理模塊:
      管理所有相關模塊。

2>.多租戶數據分發

  對於不同租戶對不同源端數據有不同訪問權限、脫敏需求的情形,需要引入Router分發模塊,將源端貼源數據,根據配置好的權限、用戶有權獲取的源端表、不同脫敏規則等,分發到分配給租戶的Topic。

  這一級的引入,在DBUS管理系統中,涉及到用戶管理、Sink管理、資源分配、脫敏配置等。不同項目消費分配給他的topic。

3>.DBus架構詳解

  博主推薦閱讀:
    https://bridata.github.io/DBus/more-system-architecture.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM