zoukankan      html  css  js  c++  java
  • 分布式实时同步系统

    Databus是一个实时的、可靠的、支持事务的、保持一致性的数据变更抓取系统。 2011年在LinkedIn正式进入生产系统,2013年开源。


    Databus 分布式数据库同步系统

    互联网技术栈 2018-01-22 19:28:55

    Databus 分布式数据库同步系统

    社区wiki主页:https://github.com/linkedin/Databus/wiki

    背景

    一个大型分布式系统往往存在多种的存储系统,mysql,tair,redis,memcache,hbase等等。一些重要的或者需要事务支持的数据操作,通常都会放到mysql处理。但是,为了满足高性能的访问需求或者做一些服务定制化的查询,业务上通常又会把mysql的数据再写到tair或者redis等外部存储中一份。

    以业务将tair作为mysql的高速缓存为例,通常业务在代码中会有这么一段逻辑,读取tair,数据不存在,从mysql读取数据,然后写入tair。用户变更mysql,然后会同时刷新tair,或者将tair数据删除。为了降低客户端复杂度并且防止缓存穿透,常会引入MQ进行异步同步,如下图所示:

    Databus 分布式数据库同步系统

    但是无论客户端同步方式还是MQ方式,其实都会存在数据一致性问题,这些场景,如果没有一个强一致协议(比如两阶段提交,paxos等)是很难解决掉的。

    现在,有了Databus,上面提到的这些一致性问题就都没有了,并且,那些冗长的双写逻辑也可以去掉了。

    功能介绍

    Databus是一个实时的、可靠的、支持事务的、保持一致性的数据变更抓取系统。 2011年在LinkedIn正式进入生产系统,2013年开源。

    Databus通过挖掘数据库日志的方式,将数据库变更实时、可靠的从数据库拉取出来,业务可以通过定制化client实时获取变更。

    Databus的传输层端到端延迟是微秒级的,每台服务器每秒可以处理数千次数据吞吐变更事件,同时还支持无限回溯能力和丰富的变更订阅功能。

    功能&特性

    • 来源独立:Databus支持多种数据来源的变更抓取,包括Oracle和MySQL。

    • 可扩展、高度可用:Databus能扩展到支持数千消费者和事务数据来源,同时保持高度可用性。

    • 事务按序提交:Databus能保持来源数据库中的事务完整性,并按照事务分组和来源的提交顺寻交付变更事件。

    • 低延迟、支持多种订阅机制:数据源变更完成后,Databus能在微秒级内将事务提交给消费者。同时,消费者使用Databus中的服务器端过滤功能,可以只获取自己需要的特定数据。

    • 无限回溯:这是Databus最具创新性的组件之一,对消费者支持无限回溯能力。当消费者需要产生数据的完整拷贝时(比如新的搜索索引),它不会对数据库产生任何额外负担,就可以达成目的。当消费者的数据大大落后于来源数据库时,也可以使用该功能。

    设计

    架构设计

    Databus概要结构:

    Databus 分布式数据库同步系统

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

    系统结构设计

    Databus 分布式数据库同步系统

    上图中介绍了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的功能有:

    1. 检查中继上的新数据变更事件

    2. 将变更存储在MySQL数据库中

    3. MySQL数据库供Bootstrap和客户端使用

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

    业务应用

    Databus在linkedin

    在LinkedIn,Databus支持的系统有:

    • 社会化图谱索引(Social Graph Index),服务LinkedIn所有图谱查询

    • 人员搜索索引(People Search Index),支持搜索所有LinkedIn用户

    • 用户档案数据(Member Profile)多个冗余的读取查询


    该文章来自今日头条


        吾之爱,心之念。
               携子手,到白头。

  • 相关阅读:
    Which is the best software for MANET simulation?
    CORE—Common Open Research Emulator—INSTALL—Network Emulator
    Open-Source Network Simulators—CORE—Cloonix—GNS3—IMUNES
    mutt—linux命令行发带附件邮件—message file too big
    幼儿园复读生
    【codeforces 779D】String Game
    【BZOJ 1014】 [JSOI2008]火星人prefix
    【t004】切割矩阵
    【BZOJ 1015】 [JSOI2008]星球大战starwar
    【BZOJ 1016】[JSOI2008]最小生成树计数(搜索+克鲁斯卡尔)
  • 原文地址:https://www.cnblogs.com/JC-0527/p/8397422.html
Copyright © 2011-2022 走看看