LinkedIn开源低延时变化数据捕获系统Databus

MagicQIT 2013-02-28

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)。

LinkedIn开源低延时变化数据捕获系统Databus

如上图所述,类似于Search Index及Read Replica这些作为Databus的Consumer(类节点)使用的将是Client Library(客户端库)。当对一个主OLTP数据库做写操作时,连接了这个数据库的Relay们将会把改变存入Relay中;Databus这些被嵌入内存或者索引的Consumer将会把它从Relay或Bootstrap(引导程序)中取出,并且根据情况修改索引或者缓存,这就做到了根据源数据库的状态实时的更新索引。

Databus工作原理简述

Databus重要特性如下:

数据源独立:Databus支持从多样的数据源中捕捉变化数据,包括Oracle及MySQL。Oracle转接器已经被开源,不久后也将会开源MySQL转接器。

可扩展和高有效性:在保证高有效性的同时,Databus可以扩展到上万个Consumer和事务型源数据库上。

事务有序的进行交付:Databus为源数据库保存了事务保障,并且根据源提交顺序分组的对改变事务进行交付。

低延时以及丰富的subscription功能:一旦数据源发生改变,Databus可以在几毫秒内将事务交付到Consumer。Consumer同样可以使用Databus服务器端的筛选对数据流的指定部分进行检索。

无限制的lookback:Databus中最革新的部分就是Consumer可以无限制的lookback。Consumer对完整数据做拷贝时(比如说一个新的搜索索引)不会给主OLTP数据库带来额外的负载,这一点在Consumer性能大幅度下降时同样会有所帮助。

LinkedIn开源低延时变化数据捕获系统Databus