Databus--低延迟的分布式数据库同步系统(Canal类似)

1、简介

Databus是一个低延迟、可靠的、支持事务的、保持一致性的分布式数据库同步系统。它提供可靠的数据捕获、流转和数据处理功能。Databus通过挖掘数据库日志的方式,将数据库变更实时、可靠的从数据库拉取出来,业务可以通过定制化client实时获取变更并进行其他业务逻辑。 github地址是:https://github.com/linkedin/databus

2、Databus有以下  特点&功能&特性

  • 数据源和消费者之间的隔离
  • 来源独立:Databus支持多种数据来源的变更抓取,包括Oracle和MySQL。
  • 可扩展、高度可用:Databus能扩展到支持数千消费者和事务数据来源,同时保持高可用性
  • 数据传输能保证顺序性和至少一次交付的高可用性。
  • 事务按序提交:Databus能保持来源数据库中的事务完整性,并按照事务分组和来源的提交顺序交付变更事件。
  • 从变化流的任意时间点进行消费,包括通过bootstrap获取所有数据。
  • 源一致性保存,消费不成功会一直消费直到消费成功
  • 低延迟、支持多种订阅机制:数据源变更完成后,Databus能在毫秒级内将事务提交给消费者。同时,消费者使用Databus中的服务器端过滤功能,可以只获取自己需要的特定数据。
  • 无限回溯:对消费者支持无限回溯能力,例如当消费者需要产生数据的完整拷贝时,它不会对数据库产生任何额外负担。当消费者的数据大大落后于来源数据库时,也可以使用该功能。

3、应用场景:

主要应用场景:跨部门之间或者跨机房之 间进行数据库的数据订阅。同类产品有阿里的canal。支持Oracle和Mysql数据库。

BUSSINESS1 和 BUSSINESS2 是两个不同的业务逻辑,他们的变更需要同时写入到 DB 和 CACHE 


      Databus和canal一样,数据都是基于数据库日志挖掘来做的。我之前的文章也提到了,当今的数据处理大致可以分为两类:联机事务处理OLTP(OnLine Transaction Processing)和联机分析处理OLAP(OnLine Analytical Processing)。
  OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,增删改查、例如银行交易。但是平常所说的OLTP是集成到SQL Server中的数据库引擎组件。但是OLTP实际上可以称之为:面向交易的实时处理系统。性能指标是TPS。
  OLAP是快速响应多维分析的一种解决方案。面向的数据源是数据仓库。支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
  Databus最重要的特点是其无限回溯功能。当消费者完整数据拷贝,或者消费者的已有数据和主OLTP数据库相差很大时能够低延时的进行同步。

4、 系统整体架构与主要组件

4、实现原理:

databus使用了open-replocator作为获取数据库变更事件的组件。功能是实时获取mysql的binlog日志,并封装成Event对象,然后调用已注册的listener进行处理。

技术架构:

1 系统整体架构


核心组件:

  • Databus Relay
    • 从源数据库中的Databus源中读取变化的行并序列化为Databus变化事件保存到内存缓冲区中。
    • 监听Databus客户端的请求(包括引导程序的请求)并传输Databus数据变化事件给客户端。
  • Databus Client
    • 在Relay上检查新的数据变化事件和处理特定的业务逻辑的回调。
    • 如果它们在relay后面落下太远,到引导程序服务运行一个追溯查询。
    • 单独的客户端可以处理全部的Databus流,它们也可以作为集群的一部分而每个客户端处理一部分流。
  • Databus Bootstrap Producer
    • 只是一个特殊的客户端。
    • 检查Relay上的新的数据变化事件。
    • 保存数据变化事件到Mysql数据库,Mysql数据库用于引导程序和为了客户端追溯数据。
  • Databus Bootstrap Server
    • 监听来自Databus客户端的请求并为了引导和追溯返回一个超长的回溯的数据变化事件。

猜你喜欢

转载自blog.csdn.net/qq_22473611/article/details/108816702