Databus简介「建议收藏」

Databus简介「建议收藏」1.背景在互联网架构中,数据系统通常分为真实数据(source-of-truth)系统,作为基础数据库,存储用户产生的写操作;以及衍生数据库或索引,提供读取和其他复杂查询操作。后者常常衍生自主数据存储,会对其中的数据做转换,有时还要包括复杂的业务逻辑处理。缓存中的数据也来自主数据存储,当主数据存储发生变化,缓存中的数据就需要刷新,或是转为无效。这样架构自然而然的一个问题就是如何保障基础数

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1.背景
在互联网架构中,数据系统通常分为真实数据(source-of-truth)系统,作为基础数据库,存储用户产生的写操作;以及衍生数据库或索引,提供读取和其他复杂查询操作。后者常常衍生自主数据存储,会对其中的数据做转换,有时还要包括复杂的业务逻辑处理。缓存中的数据也来自主数据存储,当主数据存储发生变化,缓存中的数据就需要刷新,或是转为无效。这样架构自然而然的一个问题就是如何保障基础数据库和其它数据存储方的数据一致性。一个想法是双写,在有数据进来的时候就同时更新基础数据库和衍生数据库(或缓存),但这种方式如果没有很强的协议来保证,就还是会有一致性问题,比如说主数据库写入成功但是衍生数据库(或缓存)写入失败。另外的一个方案就是只写基础数据库,其它衍生数据库(缓存)通过监听基础数据库的变化来进行数据变更,这个方案要求能有一个工具能监听基础数据库的变更并且能够及时的通知衍生数据库(缓存)具体的变化,而Databus就是这样的一个系统。

2.简介
Databus是一个实时的低延时数据抓取系统。它将数据库作为唯一真实数据来源,并将变更从事务或提交日志中提取出来,然后通知相关的衍生数据库或缓存。
Databus传输层端到端的延迟是微秒级别的,这意味着每台服务器每秒可以处理数千次数据吞吐变更事件,同时还支持无限回溯能力和丰富的变更订阅功能,目前从实践中来看,单个DB写入QPS达到1.5k就要进行拆库,而到达2k就会出现比较明显的主从延迟,而relay虽然要串行解析单个库的binlog,但是也可以扛到2.2k。下面的图是大概的结构:
这里写图片描述
上图展示Search Index、Read Replicas系统是Databus的消费者。当Primary DB发生数据变更的时候,连接其上的中继系统会将数据拉取到中继上去。嵌入在Search Index或缓存中的Databus消费者客户端就会从中继拉取数据并更新缓存或数据库。
DataBus提供以下功能:

  • 来源独立:Databus提供多种数据来源的变更抓取,包括mysql和oracle。oracle的适配器在开源版本中有提供,mysql的将在后面提供。
  • 可扩展和高度可用:Databus能扩展到支持数千消费者和事务数据来源,并保持高度可用性。
  • 事务按序提交:Databus能保持来源数据库中的事务完整性,并按照事务分组和来源的提交顺寻交付变更事件。
  • 低延迟、支持多种订阅机制:数据源变更完成后,Databus能在微秒级内将事务提交给消费者。同时,消费者使用Databus中的服务器端过滤功能,可以只获取自己需要的特定数据。
  • 无限回溯:这是Databus最具创新性的组件之一,对消费者支持无限回溯能力。当消费者需要产生数据的完整拷贝时(比如新的搜索索引),它不会对主OLTP数据库产生任何额外负担,就可以达成目的。当消费者的数据大大落后于来源数据库时,也可以使用该功能。

3.简单架构
这里写图片描述
粗略的来说databus主要模块是两个,一个是relay,负责从mysql/oracle拉取变更事件,并存储到本地的内存buffer;一个是client,负责从relay拉取变更事件,并做业务定制化的处理。
上面的图片是Databus的大致架构,可以看到包括中继Relay、Bootstrap服务和客户端库三大模块;其中Bootstrap包括BootStrap Producer和BootStrap Server。快速变化的消费者从relay中拉取数据,但如果一个消费者的数据大幅度落后,relay就不能提供它要的数据,转而由Bootstrap Producer提供给它自上次处理后变更的所有数据快照。下面来具体的介绍下这几个模块的主要功能:
Databus Relay中继主要功能:

  1. 从Databus来源读取变更行,并在内存缓存中将其序列化为DataBus事件。
  2. 监听来着Databus客户端(包括Bootstrap)的请求,并传输新的Databus变更事件

Databus客户端的功能主要包括:

  1. 检查Relay上新的数据事件的变更,并执行特定业务逻辑的回调
  2. 如果落后Relay太多,则向BootStrap Server发起查询
  3. 新的DataBus客户端会先向BootStrap Server发起bootstrap查询,然后再切换到向中继发起查询,以完成最新的数据变更
  4. 单一客户端可以处理整个Databus数据流,或者可以成为消费者集群的一部分,其中每个消费者只处理一部分流数据

Bootstrap Server可以看成一种特定的Databus客户端,它的功能有:

  1. 监听中继数据变革
  2. 将变更存储到mysql数据库中
  3. mysql数据库供Bootstrap和客户端使用

Databus Bootstrap Server的主要功能,就是监听来自Databus客户端的请求,并返回长期回溯数据变更事件。
目前databus的主要应用:1.是主数据库和衍生数据库的同步,一般是为了对主数据库数据按另外维度进行组织,提供给查询使用 2.是用来将数据库数据同步到缓存中,这样主要是为了减轻数据库读压力。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181048.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • objdump 反汇编_so文件反汇编

    objdump 反汇编_so文件反汇编objdump反汇编,反汇编与源代码混合显示,C++符号逆向解析。

    2025年7月21日
    1
  • Python –函数学习3 (将函数存储在模块中)

    Python –函数学习3 (将函数存储在模块中)

    2021年7月6日
    100
  • java实现redis分布式锁实例[通俗易懂]

    无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里以跳转到教程java实现redis分布式锁应用场景:多并发特点:分布式锁、动态解决由redis宕机产生死锁的情况,基于wait()、notify()有效提高效率节省资源Junit类,其中testTryLock包含多线…

    2022年4月12日
    66
  • SSM整合Activiti工作流[通俗易懂]

    SSM整合Activiti工作流[通俗易懂]学完Activiti所有的知识点了,现在可以用一个小项目实战一下。本来自己想写一个简单点的流程,但是发现项目太小有些知识点用不上,所有就写了一个流程比较长、复杂点。把我前面博客中写的知识点多用上了,也巩固一下前面所掌握的。通过首先介绍一下项目的流程:1.员工发起请假申请——>项目组长进行初步审批——>就进入并行网关未通过就直接结束流程2.并行网关:…

    2022年5月3日
    52
  • PotPlayer基本使用!

    PotPlayer基本使用!目录一、下载二、个人设置三、直播源四、快捷键一、下载 PotPlayer链接1或者PotPlayer链接2,也可以自行百度。 二、个人设置 建议不自动更新(左上角PotPlayer>>配置/语言/其他>>基本设置) 里面很多基本设置看个人需要调,没什么要求基本默认。 皮肤设置 导入皮肤:首先是导入下载的皮肤放入到安装目录的Skins下面,之后打开设置选择皮肤。 设置播放无边框..

    2022年5月21日
    139
  • 项目部署流程_SSH服务

    项目部署流程_SSH服务本次部署流程中,需要一台服务端服务器和一台客户端服务器(backup服务器充当服务端服务器,nfs存储服务器充当客户端服务器)服务端部署步骤:(backup服务器)第一个里程:确认软件服务是否安装[root@backup~]rpm-qarsync(查看是否安装)rsync-3.0.6-12.el6.x86_64第二个里程:如果未安装则进行安装rsync软件操作[root@backup~]#安装rsync软件[root@backup~]yuminstall-yrsync

    2022年10月13日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号