DBus數據總線(一):DBus all one 部署

DBus數據總線(一):DBus all one 部署

標籤(空格分隔): DBus系列
數據

[toc]html


一:DBus概述

1.1: 產生背景

採集工具的侷限性
當前有不少數據採集工具,他們或多或少都存在一些侷限性:

image_1erqu10o3v98dl6e38mj1a955h.png-89.9kB

上面這些採集工具還以一個共性問題是缺少統一的數據源端管控,因此也就沒法找到統一的數據入口,
那後續處理元數據或者血緣分析會異常困難。
數據同步方法侷限性
同時過去一般的同步數據的方法有不少種,好比:
各個數據使用方在業務低峯期各類抽取所需數據(缺點是存在重複抽取並且數據不一致)
由統一的數倉平臺經過sqoop到各個系統中抽取數據(缺點是sqoop抽取方法時效性差,通常都是
T+1的時效性)
基於trigger或時間戳的方式得到增量的變動(缺點是對業務方侵入性大,帶來性能損失等)
這些方案都不能算完美,要想同時解決數據一致性和實時性,比較合理的方法應該是基於日誌的解決方
案,同時可以提供消息訂閱的方式給下游系統使用。在這個背景下DBus就誕生了。

二:DBus 數據總線

2.1 DBus 數據總線的介紹

專一於數據的收集及實時數據流計算,經過簡單靈活的配置,以無侵入的方式對源端數據進行採集,採用高可用的流式計算框架,對公司各個IT系統在業務流程中產生的數據進行匯聚,通過轉換處理後成爲統一JSON的數據格式(UMS),提供給不一樣數據使用方訂閱和消費,充當數倉平臺、大數據分析平臺、實時報表和實時營銷等業務的數據源。支持多租戶管理,提供租戶級資源、數據隔離機制。

2.2 DBus系統架構和工做原理

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

image_1ep5ulupp1irs1ba91qe639evgl9.png-578.2kB

2.3 DBUS源端數據採集

DBUS源端數據採集大致來講分爲兩部分:

讀取RDBMS增量日誌的方式來 實時獲取增量數據日誌,並支持全量拉取;
基於logtash,flume,filebeat等抓取工具來實時得到數據,以可視化的方式對數據進行結構化輸出;
如下爲具體實現原理

image_1ep5unpot9721clf1se41sedv86m.png-772.8kB

主要模塊以下:

日誌抓取模塊:從RDBMS的備庫中讀取增量日誌,並實時同步到kafka中;
增量轉換模塊:將增量數據實時轉換爲UMS數據,處理schema變動,脫敏等;
全量抽取程序:將全量數據從RDBMS備庫拉取並轉換爲UMS數據;
日誌算子處理模塊:未來自不一樣抓取端的日誌數據按照算子規則進行結構化處理;
心跳監控模塊:對於RDMS類源,定時向源端發送心跳數據,並在末端進行監控,發送預警通知;對於日誌類,直接在末端監控預警。
web管理模塊:管理全部相關模塊。

2.4多租戶數據分發

對於不一樣租戶對不一樣源端數據有不一樣訪問權限、脫敏需求的情形,須要引入Router分發模塊,將源端貼源數據,根據配置好的權限、用戶有權獲取的源端表、不一樣脫敏規則等,分發到分配給租戶的Topic。這一級的引入,在DBUS管理系統中,涉及到用戶管理、Sink管理、資源分配、脫敏配置等。不一樣項目消費分配給他的topic。

image_1ep5uqhsf11hk33t1c52d8b1vah13.png-422.3kB


2.5 主要功能

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

詳細參考:
      https://bridata.github.io/DBus/index.html

    文檔參考:
         https://github.com/BriData/DBus/blob/master/docs/quick-start.md

image_1ep5usqlshqh1la7q4e1utg1a6g1g.png-377kB

image_1ep5utbk01tnhmah49c10brici1t.png-390kB


三:Dbus 部署

3.1 Dbus部署

DBus安裝部署分爲如下兩種方式(注意:兩種方式不能夠混用):
All In One體驗版
該版本安裝在單機上,自動部署安裝dbus所依賴的相關組件,僅用於體驗dbus基本功能,
不能夠用於生產。
該版本支持mysql數據源接入體驗。
集羣部署
用於生產環境或測試環境部署。
可部署在單機上或集羣上。
包含對Oracle、mysql,logstash、filebeat、flume等數據源的支持。

3.2 dbus all in one 部署

3.2.1 軟件準備系統:

系統:
  CentOS7.9x64

hostname Dbus-ns1

下載軟件: 

     https://github.com/BriData/DBus/releases
說明all in one是一個單機版本dbus環境,是給用戶快速體驗dbus的功能,只是一個簡單體驗版,不能
用於其它環境或者用途,具體包括以下:
基礎組件:
zookeeper 3.4.6
kafka 0.10.0.0
storm 1.0.1
granfana 4.2.0
logstash 5.6.1
influxdb 
mysql 
---------------------------
dbus相關包:
dbus-keeper 0.5.0
dbus-stream-main 0.5.0
dbus-keeper 0.5.0
dbus-stream-main 0.5.0
dbus-router 0.5.0
dbus-heartbeat 0.5.0
dbus-log-processor 0.5.0
--------------------------

mysql數據源所需軟件:
  canal

3.2.3 安裝MySQL

Canal 對 MySQL的需求版本5.7 以上:
-----------------------
安裝MySQL5.7 yum 

yum -y localinstall https://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

安裝MySQL:
yum -y install mysql-community-server
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld
grep 'temporary password' /var/log/mysqld.log

image_1ep6177521e4k1ltm1rb81t3l14042n.png-189.3kB

image_1ep616j34jh01bn9ega1n3a1vg2a.png-142.7kB


set global validate_password_policy=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=3;
set global validate_password_special_char_count=0;
set global validate_password_length=3;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root%123';
exit

image_1ep61e55u1n0dhfm141uf329p34.png-95.5kB

image_1eq22tuhb1vn7uk1oppecb1uhs9.png-118.2kB

sudo vi /etc/my.cnf
[mysqld]
# dbus相關配置開始
log-bin=mysql-bin
binlog-format=ROW
server_id=1
# dbus相關配置結束

而後重啓MySQL:

sudo systemctl restart mysqld

image_1ep61h4av91btfe455pao18334b.png-47kB

3.2.4:配置influxdb

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.1.0.x86_64.rpm
sudo yum -y localinstall influxdb-1.1.0.x86_64.rpm
sudo systemctl start influxdb
sudo systemctl status influxdb
sudo systemctl enable influxdb

image_1ep61lam51bpq19st8tbgsnnlh4o.png-219.7kB

image_1ep61ltk0l9g1f1kt1l184c1akd55.png-283.9kB

初始化 influx
#執行初始化腳本
create database dbus_stat_db
use dbus_stat_db
CREATE USER "dbus" WITH PASSWORD 'dbus!@#123'
ALTER RETENTION POLICY autogen ON dbus_stat_db DURATION 15d
exit

image_1ep61q7f6pbnj111m0nvq11br05i.png-97.9kB

3.2.5 配置 allinone dbus

# 若是沒有app目錄,要先建立app目錄
mkdir -p /app/
mv dbus-allinone.tar.gz /app/
tar -zxvf dbus-allinone.tar.gz

image_1ep627idecb6111h11oio471jsp5v.png-40.8kB

導入MySQL數據
執行如下命令進行數據庫初始化,會建立dbmgr庫以及用戶、canal用戶、dbus庫以及用戶、testschema庫以及用戶:
MySQL: 
  mysql -uroot -proot%123

  source /app/dbus-allinone/sql/init.sql;

image_1ep62br4e1sb91ubuc7se7c2n26c.png-149.6kB

3.2.6 啓動DBus

cd /app/dbus-allinone/
./start.sh

image_1ep83e3bu8cl1e6l1u9g1av6iuf9.png-130.5kB

3.2.7 生成啓動報告

進入目錄/app/dbus-allinone/allinone-auto-check-0.5.0,執行自動檢測腳本auto-check.sh,

./auto-check.sh

image_1erqr8p7i26ppav1kde3olslm9.png-198.3kB

會在目錄/app/dbus-allinone/allinone-auto-check-0.5.0/reports下生產對應時間的檢查報告,以下所示:

image_1erqrad9br66df24891llh1alsm.png-155.1kB

3.2.8 導入數據測試

驗證MySQL數據是否能增量採集很簡單,先打開grafana監控,而後在MySQL裏插入數據,看監控是否顯示DBus已經採集到。

    驗證機配置hosts 文件

咱們在Windows上遠程登陸Grafana, 修改C:\Windows\System32\drivers\etc\hosts文件設置相應的域名信息以下:
替換成部署allinone包的服務器ip地址 192.168.100.11 dbus-n1

登陸grafana

登陸grafana url地址: http://dbus-n1:3000/login
  默認 用戶 admin/admin

image_1erqrhfko2tvng4107i1t2610vq1g.png-254.7kB

mysql插入數據驗證

   #登陸測試用戶

mysql -utestschema -p   #testschema帳戶密碼:j0<C6cqcqr:TestSchema

#執行測試腳本

use testschema;

INSERT INTO test_table (NAME, BIRTHDAY) VALUES ('testdataname', '2018-08-10 18:00:00');

INSERT INTO test_table (NAME, BIRTHDAY) VALUES ('testdataname', '2018-08-10 18:00:00');

INSERT INTO test_table (NAME, BIRTHDAY) VALUES ('testdataname', '2018-08-10 18:00:00');

INSERT INTO test_table (NAME, BIRTHDAY) VALUES ('testdataname', '2018-08-10 18:00:00');

INSERT INTO test table (NAME, BIRTHDAY) VALUES ('testdataname', '2018-08-10 18:00:00');

image_1erqrg2ab15aq1sfj1lvd7mksjv13.png-322.7kB


驗證日誌數據採集

dbus-heartbeat心跳模塊兒產生日誌位置在:/app/dbus-allinone/dbus-heartbeat-

0.5.0/logs/heartbeat/heartbeat.log,利用logstash抽取該日誌文件,把非結構化的數據,提取成結構化的數據

咱們能夠看他他按期會產生日誌:

cd /app/dbus-allinone/dbus-heartbeat-0.5.0/logs/heartbeat/ tail -f heartbeat.log

image_1erqrs8ojqf91aunvjkthn931t.png-289.3kB

3.2.8 打開web

http://dbus-n1:6090/login

admin/12345678

image_1erqrvckq1j3v19ij1a2p83eccl2a.png-2128.4kB

image_1erqs01p0j5c5971lep11bs1h4a2n.png-253.8kB

用戶體驗版本:
      體驗租戶功能,請使用用戶:user@dbus.com 密碼:12345678租戶界面以下:

image_1erqs1sqhqcplveftv1di31d2i34.png-2283.9kB

image_1erqs45dr6rp1u9i3bo1ngu1ro53h.png-159.7kB

image_1erqu79ba1rb01b9c1u531ngrn3f5u.png-238.2kB

相關文章
相關標籤/搜索