写点什么

大数据总线平台 DBus 设计思路与工作原理

2020 年 2 月 09 日

大数据总线平台DBus设计思路与工作原理

一、背景


企业中大量业务数据保存在各个业务系统数据库中,过去通常的同步数据的方法有很多种,比如:


  • 各个数据使用方在业务低峰期各种抽取所需数据(缺点是存在重复抽取而且数据不一致)

  • 由统一的数仓平台通过 sqoop 到各个系统中抽取数据(缺点是 sqoop 抽取方法时效性差,一般都是 T+1 的时效性)

  • 基于 trigger 或时间戳的方式获得增量的变更(缺点是对业务方侵入性大,带来性能损失等)


这些方案都不能算完美,我们在了解和考虑了不同实现方式后,认为要想同时解决数据一致性和实时性,比较合理的方法应该是基于日志的解决方案,同时能够提供消息订阅的方式给下游系统使用。


DBus(数据总线)项目就是应这个需求而生的,DBus 专注于数据的收集及实时数据流计算,通过简单灵活的配置,以无侵入的方式对源端数据进行采集,采用高可用的流式计算框架,对公司各个 IT 系统在业务流程中产生的数据进行汇聚,经过转换处理后成为统一 JSON 的数据格式(UMS),提供给不同数据使用方订阅和消费,充当数仓平台、大数据分析平台、实时报表和实时营销等业务的数据源。


二、系统架构和工作原理


DBUS 主要分为两个部分:貼源数据采集和多租户数据分发。两个部分之间以 Kafka 为媒介进行衔接。无多租户资源、数据隔离需求的用户,可以直接消费源端数据采集这一级输出到 kafka 的数据,无需再配置多租户数据分发。


1563333615575037548.png


2.1 DBUS 源端数据采集


DBUS 源端数据采集大体来说分为 2 部分:


  • 读取 RDBMS 增量日志的方式来 实时获取增量数据日志,并支持全量拉取;

  • 基于 logtash,flume,filebeat 等抓取工具来实时获得数据,以可视化的方式对数据进行结构化输出。


以下为具体实现原理


1563333637295006684.png


主要模块如下:


  • 日志抓取模块:从 RDBMS 的备库中读取增量日志,并实时同步到 kafka 中;

  • 增量转换模块:将增量数据实时转换为 UMS 数据,处理 schema 变更,脱敏等;

  • 全量抽取程序:将全量数据从 RDBMS 备库拉取并转换为 UMS 数据;

  • 日志算子处理模块:将来自不同抓取端的日志数据按照算子规则进行结构化处理;

  • 心跳监控模块:对于 RDMS 类源,定时向源端发送心跳数据,并在末端进行监控,发送预警通知;对于日志类,直接在末端监控预警。

  • web 管理模块:管理所有相关模块。


2.2 多租户数据分发


对于不同租户对不同源端数据有不同访问权限、脱敏需求的情形,需要引入 Router 分发模块,将源端貼源数据,根据配置好的权限、用户有权获取的源端表、不同脱敏规则等,分发到分配给租户的 Topic。这一级的引入,在 DBUS 管理系统中,涉及到用户管理、Sink 管理、资源分配、脱敏配置等。不同项目消费分配给他的 topic。


1563333647054036254.png


主要功能:


  • 无侵入方式接入多种数据源: 业务系统无需任何修改,以无侵入性读取数据库系统的日志获得增量数据实时变化。目前 RDBMS 支持 mysql,oracle 数据源(Oracle 数据源请参考 Oracle 相关协议), 日志方面支持基于 logstash,flume 和 filebeat 的多种数据日志抽取方案。

  • 海量数据实时传输: 使用基于 Storm 的流式计算框架,秒级延时,整体无单点保证高可用性。

  • 多租户支持: 提供用户管理、资源分配、Topology 管理、租户表管理等丰富的功能,可根据需求,为不同租户分配不同的源端表数据访问权限,应用不同的脱敏规则,从而实现多租户资源隔离、差异化数据安全。


1563333656585023258.png


1563333687767027790.png


1563333701396089308.png


  • 感知源端 schema 变更: 当源端发生 schema 变更时,能自动感知 schema 变化,调整 UMS 版本号,并通过 Kafka 消息和邮件通知下游


1563333709636008770.png


  • 数据实时脱敏: 可根据需求对指定列数据进行实时脱敏。脱敏策略包括:直接替换、MD5、murmur 等脱敏算法,脱敏加盐,正则表达式替换等。支持用户开发 jar 包实现 DBUS 未覆盖的个性化脱敏策略。


1563333718815084768.png


  • 初始化加载: 支持高效的初始化加载和重新加载,支持任意指定输出 topic,灵活应对客户需求。


1563333727265052020.png


  • 统一标准化消息传输协议: 使用统一的 UMS(JSON 格式)消息 schema 格式输出便于消费,提供数据线级 ums_id 保证数据顺序性,输出 insert,Update(before/after),Delete event 数据。


1563333737598010740.png


  • 可靠多路消息订阅分发: 使用 Kafka 存储和传递消息保证可靠性和便捷的多用户订阅

  • 支持分区表/系列表数据汇集: 支持分区表的数据汇集到一个“逻辑表” 。也可将用户自定义的系列表数据汇集到一个“逻辑表“。例:


1563333750916020451.png


  • 实时监控 &预警: 可视化监控系统能随时查看各数据线实时流量和延时状况;当数据线发生异常时,根据配置策略自动发邮件或短信通知相关负责人


1563333762337040735.png


本文转载自宜信技术学院。


原文链接:http://college.creditease.cn/detail/273


2020 年 2 月 09 日 15:09292

评论

发布
暂无评论
发现更多内容

大型互联网应用系统技术方案

Geek_zhangjian

Week4  互联网系统的技术和手段

TiK

极客大学架构师训练营

架构师训练营 - 第四周 - 学习总结

韩挺

维基百科(Wikipedia)网站架构设计分析

架构5班杨娟Jessie

极客大学架构师训练营

架构师训练营 - 第四周 - 作业

韩挺

Python中的浅拷贝和深拷贝

王坤祥

Python 编程 计算机

Week 04 命题作业

卧石漾溪

极客大学架构师训练营

《了不起的我》:关于「改变」的心理学

强劲九

心理 读书 书籍推荐 看书

架构师训练营第四周作业

子豪sirius

一个典型的大型互联网应用系统的技术方案&手段

Amy

极客大学架构师训练营 作业 第四周

互联网架构总结

Lane

极客大学架构师训练营

【架构师训练营】第四周总结

Mr.hou

极客大学架构师训练营

「架构师训练营」学习笔记:第 4 周 系统架构知识

Amy

学习 极客大学架构师训练营 第四周 系统架构知识

第四周作业

胡江涛

极客大学架构师训练营

第四周总结

胡江涛

极客大学架构师训练营

架构师训练营第四周-系统架构综述

草原上的奔跑

架构师训练营 No.4 作业

连增申

可复用架构之分离关注点

松花皮蛋me

java面试 Java 分布式 可复用架构

架构师训练营第四周学习总结

fenix

大型互联网系统使用的技术和方案

李广富

本周的一些总结

Geek_zhangjian

架构师训练营第4周学习总结

不谈

Mybatis执行过程源码分析

编号94530

Java 源码分析 mybatis

【架构师训练营】第四周作业

Mr.hou

极客大学架构师训练营

架构师训练营 Week 04 总结

Wancho

互联网架构演化

李广富

第四周作业

王鑫龙

极客大学架构师训练营

架构师训练营-week4-作业

晓-Michelle

极客大学架构师训练营

Redis(一)分布式缓存的作用

奈何花开

Java redis 分布式缓存

极客时间架构师训练营 - week4 - 作业 2

jjn0703

Week 04 学习总结

卧石漾溪

极客大学架构师训练营

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

大数据总线平台DBus设计思路与工作原理-InfoQ