当前位置: 首页 > ops >正文

DataBus(数据同步组件)

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客户端的请求并为了引导和追溯返回一个超长的回溯的数据变化事件。

http://www.xdnf.cn/news/11392.html

相关文章:

  • mysql中使用逻辑判断,20.5-20.9 shel:l脚本中的逻辑判断,文件目录属性判断,if特殊用法 ,case判断...
  • centos 下安装ati显卡驱动方法
  • Java开源工具库使用之性能测试JMH
  • windows 2000 系统安装和配置
  • 【SQL注入】(1)原理,框架
  • elk logstash 详解
  • 网站建设经验分享:如何进行网站内容更新与维护?
  • 缓冲区(buffer)与缓存(cache)
  • 关于 ByteHouse 你想知道的一切,看这一篇就够了
  • 软件开发面试题(C#语言,.NET框架)
  • TextMate 小小心得
  • windows socket函数详解
  • WDA学习(25):DateNavigator使用
  • Android 三方APP调用系统隐藏API
  • 什么是可视化编程?为什么它如此重要?
  • 电脑C盘不知不觉满了?学会这6种解决方法!
  • 51 单片机基础
  • 手把手教你Apache2.4 + PHP8.39的安装(windows)及避坑问题点
  • 字节跳动-后台开发岗 面经
  • Model、Map、ModelAndView、HttpServletRequest区别
  • 更好的Java虚拟机Zing: 更好的性能,无停顿,更快的启动
  • 腾讯云 AI 代码助手保姆级使用教程
  • Sql-server 2008的安装
  • fdsfds
  • Git克隆操作
  • 【抓包工具】HttpWatch(功能详细介绍)
  • PulseAudio 设计和实现浅析
  • APB协议解读及历代协议对比
  • System.currentTimeMillis()用法以及计算方式
  • 医学案例|配对样本t检验