LinkedIn于2月26日开源了其低延时变化数据捕获系统Databus,该系统可以在MySQL以及Oracle数据 源上捕获数据,当下LinkedIn只开源了Oracle上的连接器。Databus作为LinkedIn生态系统中的一致性保障组件,在低延时的情况下 仍然具有高有效性;而其最大的特点莫过于无限制lookback能力及丰富的subscription功能。 以下为LinkedIn上Databus简述译文: 何为Databus LinkedIn拥有一个针对数据储存和服务系统的多样化生态系统。首要的OLTP数据存储是针对于写和读操作开发。其它的专业系统则聚焦于复杂查询以及通过缓存对查询进行加速。举个例子:通过Search Index系统来服务搜索查询,这会需要系统不间断给主数据库数据做索引。 这将导致对可靠性的特殊需求,事务一致性需求将贯穿整个系统 —— 从主数据源中捕获变化数据并发送给派生数据系统。针对这个需求,LinkedIn建立了Databus,添为LinkedIn数据处理管道的重要组成部 分。Databus传输层实现了毫秒级终端到终端的数据传输,在具备无限制的lookback(还原)能力及丰富subscription(截取)的功能 同时,还保障了单服务器每秒数以万计的改变事件(change event)。 如上图所述,类似于Search Index及Read Replica这些作为Databus的Consumer(类节点)使用的将是Client Library(客户端库)。当对一个主OLTP数据库做写操作时,连接了这个数据库的Relay们将会把改变存入Relay中;Databus这些被嵌 入内存或者索引的Consumer将会把它从Relay或Bootstrap(引导程序)中取出,并且根据情况修改索引或者缓存,这就做到了根据源数据库 的状态实时的更新索引。 Databus工作原理简述 Databus重要特性如下:
如上图所示,Databus系统由Relay、Bootstrap Service和Client Library组成。Relay从源数据库中捕获改变内容,并将事件储存在一个高性能的日志存储中。Bootstrap Service会通过Relay改变流申请为源数据库储存一个流动的快照。应用程序使用Databus Client Library从Relay或者Bootstrap中抽取改变流,并且通过Consumer(实现了库内定义的回调API)对改变事件进行处理。 快速的从Databus Relay中转移Consumer需要的检索事件。如果一个Consumer的性能下降到它所请求的事件已经不再保存在Relay的日志里,这个 Consumer需要交付一个快照 —— 保存了该Consumer上一次处理完成至今所发生的改变合集;如果一个新的(没有之前版本数据集)Consumer建立,这样新加入的Consumer 可以快速的保持一致。 Databus相关下载 Databus能在LinkedIn服役多年其独到之处无需质疑,现LinkedIn将其开源并广邀感兴趣的开发人员参与。 转载请保留固定链接: https://linuxeye.com/news/1310.html |