概要结构如下图。

图中显示:Search Index和Read Replicas等系统是Databus的消费者。当主OLTP数据库发生写操作时,连接其上的中继系统会将数据拉到中继中。签入在Search Index或是缓存中的Databus消费者客户端,就会从中继中拉出数据,并更新索引或缓存。

Databus提供如下功能:

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

上图中介绍了Databus系统的构成,包括中继Relay、bootstrap服务和客户端库。Bootstrap服务中包括Bootstrap Producer和Bootstrap Server。快速变化的消费者直接从Relay中取事件。如果一个消费者的数据更新大幅落后,它要的数据就不在Relay的日志中,而是在 Bootstrap Producer里面,提交给它的,将会是自消费者上次处理变更之后的所有数据变更快照。

Databus Relay中继的功能主要包括:

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

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

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

Databus Bootstrap Producer只是一种特定的Databus客户端,它的功能有:

  1. 检查中继上的新数据变更事件
  2. 将变更存储在MySQL数据库中
  3. MySQL数据库供Bootstrap和客户端使用

Databus Bootstrap Server的主要功能,就是监听来自Databus客户端的请求,并返回长期回溯数据变更事件。

在LinkedIn,Databus支持的系统有:

  • 社会化图谱索引(Social Graph Index),服务LinkedIn所有图谱查询
  • 人员搜索索引(People Search Index),支持搜索所有LinkedIn用户
  • 用户档案数据(Member Profile)多个冗余的读取查询

转自:http://www.infoq.com/cn/news/2013/03/linkedin-databus

转载于:https://www.cnblogs.com/bonelee/p/6476136.html

linkedin databus介绍——监听数据库变化,有新数据到来时通知其他消费者app,新数据存在内存里,多份快照...相关推荐

  1. 【做一下1】python 监听数据库变化

    前言 用的yolov5,作者自己写的loadStream函数就是依据 streams.txt里面的rtsp流地址列表来新建线程,然后实现多路监控的. 大体就是这个图里面说的,我已经是为了个整体业务,去 ...

  2. 基于Canal+kafka监听数据库变化的最佳实践

    1.前言 工作中,我们很多时候需要根据某些状态的变化更新另一个业务的逻辑,比如订单的生成,成交等,需要更新或者通知其他的业务.我们通常的操作通过业务埋点.接口的调用或者中间件完成. 但是状态变化的入口 ...

  3. 01 canal监听数据库变化

    1.cannal 1.1 canal简介 canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据. canal是应阿里巴巴存在杭州和美国的双机房部署,存在跨机房同步的业务需求而提出的 ...

  4. 监听文件变化并自动运行 npm script

    监听文件变化并自动运行 npm script 软件工程师做的事情基本都是在实现自动化,比如各种业务系统是为了业务运转的自动化,部署系统是为了运维的自动化,对于开发者本身,自动化也是提升效率的关键环节, ...

  5. android 监听图库变化,Android ContentObserver 监听图库变化

    电脑环境是XP,软件是gVim7.3,安装在C盘的 Program Files 下.如何设置gVim的字体和背景颜色:C---Program Files---Vim---_vimrc文件,用文本编辑器 ...

  6. Java实现监听文件变化的三种方法,推荐第三种

    背景 在研究规则引擎时,如果规则以文件的形式存储,那么就需要监听指定的目录或文件来感知规则是否变化,进而进行加载.当然,在其他业务场景下,比如想实现配置文件的动态加载.日志文件的监听.FTP文件变动监 ...

  7. python监听文件最后修改人_Python持续监听文件变化代码实例

    在日常的工作中,有时候会有这样的需求,需要一个常驻任务,持续的监听一个目录下文件的变化,对此作出回应. pyinotify就是这样的一个python包,使用方式如下: 一旦src.txt有新的内容,程 ...

  8. vue 组件监听页面切换_vue项目如何监听窗口变化,达到页面自适应?

    [自适应]向来是前端工程师需要解决的一大问题--即便作为当今非常火热的vue框架,也无法摆脱--虽然elementui.iview等开源UI组件库层出不穷,但官方库毕竟不可能满足全部需求,因此我们可以 ...

  9. Angular.js中使用$watch监听模型变化

    $watch简单使用 $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEqua ...

最新文章

  1. Plugin with id 'com.novoda.bintray-release' not found的解决方法
  2. php语言使用statsd统计指标模板
  3. 设计模式:组合模式(Composite)
  4. unix 只有root 可以使用chown吗_chmod 777 是开发的常规操作吗?
  5. Java RandomAccessFile skipBytes()方法与示例
  6. XP 多国语言包 .
  7. Nero 2014 Platinum 白金版 V 15.0.02200 官方版
  8. BUUCTF misc 专题(82)[WUSTCTF2020]alison_likes_jojo
  9. OpenCV + CPP 系列(九)颜色空间
  10. JanusGraph删除shema操作Java api
  11. mysql sql where or_SQL的WHERE子句中包含多个AND和OR
  12. 2021年线上线下融合会议需求增长,Hilton EventReady Hybrid Solutions将启动
  13. FL Studio21云盘水果FL21版有什么新功能?
  14. Plants vs. Zombies 解题报告
  15. 计算机班内排名公式,巧用Excel数组公式统计各班优秀人数EXCEL基本教程 -电脑资料...
  16. (附源码)springboot码头作业管理系统 毕业设计 341654
  17. “人文素养老师”——马小平老师
  18. anti-Nim游戏(反Nim游戏)简介
  19. 使用雪碧图Css Sprite精灵 | 加速网页响应速度
  20. Python网上商城源代码,基于Django+MySQL+Redis,支持支付宝付款

热门文章

  1. 进程间共享内存(信号量实现同步)
  2. 山东大学计算机考博难度,山大博士发11篇SCI,坦言刚读研时自己也很迷茫
  3. 迷你世界电锯机器人_迷你世界:会旋转的机器人,安装多个火箭炮,全方位轰炸敌人...
  4. 与aspect长得像的单词_长相差不多的单词,你能一眼识别吗?
  5. visual studio写python_微软发布Visual Studio的Python开发插件
  6. mybatis sql标签_这谁顶得住?Mybatis 十八连环问
  7. oracle 考试技巧,从 TPCH 测试学习性能优化技巧之 Q14
  8. 【深度学习】Transfomer在文本处理上的应用(风格识别)
  9. 机器学习(MACHINE LEARNING)使用ARIMA进行时间序列预测
  10. ORACLE not available如何解决