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

CodePathfinder
• 阅读 3254

一、背景

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

  • 各个数据使用方在业务低峰期各种抽取所需数据(缺点是存在重复抽取而且数据不一致)
  • 由统一的数仓平台通过sqoop到各个系统中抽取数据(缺点是sqoop抽取方法时效性差,一般都是T+1的时效性)
  • 基于trigger或时间戳的方式获得增量的变更(缺点是对业务方侵入性大,带来性能损失等)

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

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

二、系统架构和工作原理

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

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

2.1 DBUS源端数据采集

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

  • 读取RDBMS增量日志的方式来 实时获取增量数据日志,并支持全量拉取;
  • 基于logtash,flume,filebeat等抓取工具来实时获得数据,以可视化的方式对数据进行结构化输出。

以下为具体实现原理

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

主要模块如下:

  • 日志抓取模块:从RDBMS的备库中读取增量日志,并实时同步到kafka中;
  • 增量转换模块:将增量数据实时转换为UMS数据,处理schema变更,脱敏等;
  • 全量抽取程序:将全量数据从RDBMS备库拉取并转换为UMS数据;
  • 日志算子处理模块:将来自不同抓取端的日志数据按照算子规则进行结构化处理;
  • 心跳监控模块:对于RDMS类源,定时向源端发送心跳数据,并在末端进行监控,发送预警通知;对于日志类,直接在末端监控预警。
  • web管理模块:管理所有相关模块。

2.2 多租户数据分发

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

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

主要功能:

  • 无侵入方式接入多种数据源: 业务系统无需任何修改,以无侵入性读取数据库系统的日志获得增量数据实时变化。目前RDBMS支持mysql,oracle数据源(Oracle数据源请参考Oracle相关协议), 日志方面支持基于logstash,flume和filebeat的多种数据日志抽取方案。
  • 海量数据实时传输: 使用基于Storm的流式计算框架,秒级延时,整体无单点保证高可用性。
  • 多租户支持: 提供用户管理、资源分配、Topology管理、租户表管理等丰富的功能,可根据需求,为不同租户分配不同的源端表数据访问权限,应用不同的脱敏规则,从而实现多租户资源隔离、差异化数据安全。

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

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

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

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

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

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

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

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

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

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

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

  • 可靠多路消息订阅分发: 使用Kafka存储和传递消息保证可靠性和便捷的多用户订阅
  • 支持分区表/系列表数据汇集: 支持分区表的数据汇集到一个“逻辑表” 。也可将用户自定义的系列表数据汇集到一个“逻辑表“。例:

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

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

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

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

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
sqoop从hive导入数据到mysql时出现主键冲突
今天在将一个hive数仓表导出到mysql数据库时出现进度条一直维持在95%一段时间后提示失败的情况,搞了好久才解决。使用的环境是HUE中的Oozie的workflow任何调用sqoop命令,该死的oozie的日志和异常提示功能太辣鸡了,最后发现是重复数据导致数据进入mysql表时出现主键冲突进而导致数据同步失败。(1)众所周知hive表是没有主键与索引
Wesley13 Wesley13
3年前
java实现任务调度
最近的一个小项目是做一个简单的数据仓库,需要将其他数据库的数据抽取出来,并通过而出抽取成页面需要的数据,以空间换时间的方式,让后端报表查询更快。因为在抽取的过程中,有一定的先后顺序,需要做一个任务调度器,某一优先级的会先执行,然后会进入下一个优先级的队列任务中。先定义了一个Map的集合,key是优先级,value是任务的集合,某一个优先级内的任务是并发执
Chase620 Chase620
4年前
数据治理十步法
以下文章来源于谈数据,作者石秀峰1、找症状,明确目标任何企业实施数据治理都不是为了治理数据而治理数据,其背后都是管理和业务目标的驱动。企业中普遍存在的数据质量问题有:数据不一致、数据重复、数据不准确、数据不完整、数据关系混乱、数据不及时等。(https://imghelloworld.osscnbeijing.aliyuncs.c
Stella981 Stella981
3年前
Django之Django模板
1、问:html页面从数据库中读出DateTimeField字段时,显示的时间格式和数据库中存放的格式不一致,比如数据库字段内容为2012082616:00:00,但是页面显示的却是Aug.26,2012,4p.m.答:为了页面和数据库中显示一致,需要在页面格式化时间,需要添加<td{{dayrecord.p\_time|date:
Wesley13 Wesley13
3年前
MYSQL数据库 LIMIT限定特定行数
最近在运行Informatica全量抽取时候,系统报了很多莫名的错误,日志也没有显示警告信息。按有限的日志信息查询,可能的原因一般是磁盘空间不够,内存不够,或者是数据量量太大,缓存爆了。经排查,是加载的数据量过大,导致了数据加载的失败。只好通过限制每次的加载数量,分批多次进行跑数据了。业务系统使用的是Mysql数据库,因此在ODS层抽数时候,使用
Stella981 Stella981
3年前
DBus数据库表结构变更处理方案
导读:DBus是我们要介绍的在敏捷大数据(AgileBigData)背景下的第一个平台。企业中大量业务数据保存在各个业务系统数据库中,为同时解决数据同步的一致性和实时性问题,DBus(数据总线)平台应运而生。DBus专注于数据的实时采集和实时分发,是一种基于日志的解决方案,同时能够提供消息订阅的方式给下游系统使用。本篇文章主要介绍在DBus的设计中,它
Stella981 Stella981
3年前
Linux应急响应(二):捕捉短连接
0x00前言​短连接(shortconnnection)是相对于长连接而言的概念,指的是在数据传送过程中,只在需要发送数据时,才去建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。在系统维护中,一般很难去察觉,需要借助网络安全设备或者抓包分析,才能够去发现。0x01应急场景​
Easter79 Easter79
3年前
SwiftUI 跨组件数据传递
作者:Cyandev,iOS和MacOS开发者,目前就职于字节跳动0x00前言众所周知,SwiftUI的开发模式与React、Flutter非常相似,即都是声明式UI,由数据驱动(产生)视图,视图也会与数据自动保持同步,框架层会帮你处理“绑定”的问题。在声明式UI中不存在命令式地让一个视图变成xxx
Vitess全局唯一ID生成的实现方案 | 京东云技术团队
为了标识一段数据,通常我们会为其指定一个唯一id,比如利用MySQL数据库中的自增主键。但是当数据量非常大时,仅靠数据库的自增主键是远远不够的,并且对于分布式数据库只依赖MySQL的自增id无法满足全局唯一的需求。因此,产生了多种解决方案,如UUID,Sn
营销系统黑名单优化:位图的应用解析 | 京东云技术团队
背景营销系统中,客户投诉是业务发展的一大阻碍,一般会过滤掉黑名单高风险账号,并配合频控策略,来减少客诉,进而增加营销效率,减少营销成本,提升营销质量。营销系统一般是通过大数据分析建模,在CDP(客户数据平台,以客户为核心,围绕数据融合、人群圈选、用户洞察等
网页爬虫开发:使用Scala和PhantomJS访问知乎
引言随着大数据时代的到来,网页爬虫作为一种高效的数据收集工具,被广泛应用于互联网数据抓取和信息抽取。而知乎是一个知识分享平台,拥有大量的用户生成内容。通过爬虫获取知乎数据,企业和研究人员可以进行深入的数据分析和市场研究,了解用户的需求、兴趣和行为模式,从而
CodePathfinder
CodePathfinder
Lv1
有情知望乡,谁能鬒不变?
文章
2
粉丝
0
获赞
0