DataBus(数据同步组件)

  • Post author:
  • Post category:其他


DataBus(数据同步组件)

github: https://github.com/linkedin/databus/wiki

Databus是一个低延迟、可靠的、支持事务的、保持一致性的数据变更抓取系统。由LinkedIn于2013年开源。Databus通过挖掘数据库日志的方式,将数据库变更实时、可靠的从数据库拉取出来,业务可以通过定制化client实时获取变更并进行其他业务逻辑。



Databus有以下特点:

数据源和消费者之间的隔离。

数据传输能保证顺序性和至少一次交付的高可用性。

从变化流的任意时间点进行消费,包括通过bootstrap获取所有数据。

分区消费

源一致性保存,消费不成功会一直消费直到消费成功



2. 功能&特性

来源独立:Databus支持多种数据来源的变更抓取,包括Oracle和MySQL。

可扩展、高度可用:Databus能扩展到支持数千消费者和事务数据来源,同时保持高度可用性。

事务按序提交:Databus能保持来源数据库中的事务完整性,并按照事务分组和来源的提交顺寻交付变更事件。

低延迟、支持多种订阅机制:数据源变更完成后,Databus能在毫秒级内将事务提交给消费者。同时,消费者使用Databus中的服务器端过滤功能,可以只获取自己需要的特定数据。

无限回溯:对消费者支持无限回溯能力,例如当消费者需要产生数据的完整拷贝时,它不会对数据库产生任何额外负担。当消费者的数据大大落后于来源数据库时,也可以使用该功能。

系统整体架构与主要组件



3.1 系统整体架构

在这里插入图片描述

上图中介绍了Databus系统的构成,包括Relays、bootstrap服务和Client lib等。Bootstrap服务中包括Bootstrap Producer和Bootstrap Server。快速变化的消费者直接从Relay中取事件。如果一个消费者的数据更新大幅落后,它要的数据就不在Relay的日志中,而是需要请求Bootstrap服务,返回的将会是自消费者上次处理变更之后的所有数据变更快照。

Source Databases:MySQL以及Oracle数据源

Relays:负责抓取和存储数据库变更,全内存存储,也可配置使用mmap内存映射文件方式

Schema Registry:数据库数据类型到Databus数据类型的一个转换表

Bootstrap Service:一个特殊的客户端,功能和Relays类似,负责存储数据库变更,主要是磁盘存储

Application:数据库变更消费逻辑,从Relay中拉取变更,并消费变更

Client Lib:提供挑选关注变更的API给消费逻辑

Consumer Code:变更消费逻辑,可以是自身消费或者再将变更发送至下游服务



3.2 主要组件及功能

上图系统整体架构图画的比较简略,下载源码观察项目结构后不难发现databus的主要由以下四个组件构成:

Databus Relay:

从源数据库中的Databus源中读取变化的行并序列化为Databus变化事件保存到内存缓冲区中。

监听Databus客户端的请求(包括引导程序的请求)并传输Databus数据变化事件。

Databus Client:

在Relay上检查新的数据变化事件和处理特定的业务逻辑的回调。

如果它们在relay后面落下太远,到引导程序服务运行一个追溯查询。

单独的客户端可以处理全部的Databus流,它们也可以作为集群的一部分而每个客户端处理一部分流。

Databus Bootstrap Producer:

只是一个特殊的客户端。

检查Relay上的新的数据变化事件。

保存数据变化事件到Mysql数据库,Mysql数据库用于引导程序和为了客户端追溯数据。

Databus Bootstrap Server:

监听来自Databus客户端的请求并为了引导和追溯返回一个超长的回溯的数据变化事件。



版权声明:本文为weixin_43564627原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。