50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

LinkedIn 实时低延迟数据抓取系统 Databus 开源

  • 2013-03-03
  • 本文字数:2265 字

    阅读完需:约 7 分钟

去年的架构师峰会上,来自 LinkedIn 的高级软件工程师 Lei Gao 做了一场名为《LinkedIn 的数据处理架构》的演讲,着重介绍LinkedIn 内部的数据基础设施的演变,其中提到Databus 数据总线项目,当时就引起大家诸多好奇。前不久,LinkedIn 工程团队官方博客发布消息:Databus 项目开源。

在互联网架构中,数据系统通常分为真实数据(source-of-truth)系统,作为基础数据库,存储用户产生的写操作;以及衍生数据库或索引,提供读取和其他复杂查询操作。后者常常衍生自主数据存储,会对其中的数据做转换,有时还要包括复杂的业务逻辑处理。缓存中的数据也来自主数据存储,当主数据存储发生变化,缓存中的数据就需要刷新,或是转为无效。

LinkedIn 内部有很多专用的数据存储和服务系统,构成了一个多种多样的生态系统。基础的 OLTP 数据存储用来处理面向用户的写操作和部分读操作。其他专用系统提供负责查询,或者通过缓存用来加速查询结果。因此,整个生态系统中就需要一个可靠的、支持事务的、保持一致性的数据变更抓取系统。

Databus 就是一个实时的低延迟数据抓取系统。从 2005 年就已经开始开发,2011 年在 LinkedIn 正式进入生产系统。

在 Databus 的 Github 页面上,介绍了他们选择目前解决方案的决策过程。

处理这种需求有两种常用方式:

应用驱动双向写:这种模式下,应用层同时向数据库和另一个消息系统发起写操作。这种实现看起来简单,因为可以控制向数据库写的应用代码。但是,它会引入一致性问题,因为没有复杂的协调协议(比如两阶段提交协议或者 paxos 算法),所以当出现问题时,很难保证数据库和消息系统完全处于相同的锁定状态。两个系统需要精确完成同样的写操作,并以同样的顺序完成序列化。如果写操作是有条件的或是有部分更新的语义,那么事情就会变得更麻烦。

数据库日志挖掘:将数据库作为唯一真实数据来源,并将变更从事务或提交日志中提取出来。这可以解决一致性问题,但是很难实现,因为 Oracle 和 MySQL 这样的数据库有私有的交易日志格式和复制冗余解决方案,难以保证版本升级之后的可用性。由于要解决的是处理应用代码发起的数据变更,然后写入到另一个数据库中,冗余系统就得是用户层面的,而且要与来源无关。对于快速变化的技术公司,这种与数据来源的独立性非常重要,可以避免应用栈的技术锁定,或是绑死在二进制格式上。

在评估了两种方式的优劣之后,我们决定选择日志挖掘,将一致性和单一真实数据来源作为最高优先级,而不是易于实现。

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

图中显示: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)多个冗余的读取查询

对 Databus 项目感兴趣的同学,可以去 Github 上查看更多信息和相关源码。

2013-03-03 19:3322738
用户头像

发布了 479 篇内容, 共 179.4 次阅读, 收获喜欢 53 次。

关注

评论

发布
暂无评论
发现更多内容

1688商品评论API调用全流程:从注册到Python实现

tbapi

1688商品评论接口 1688商品评论API 1688API 1688评论API 1688商品评论采集

“凭什么说你比我先?”——没有上帝时钟,如何判断“谁先谁后”?

poemyang

分布式 分布式系统

一家“小而杂”的零售SaaS公司,为什么把数据库从 MySQL “搬”上平凯数据库(TiDB 企业版)敏捷模式?

TiDB 社区干货传送门

TiDB MCP Server 实践和思考

TiDB 社区干货传送门

TiDB第四届征文-运维开发之旅

AI 玩转网页自动化无压力:基于函数计算 FC 构建 Browser Tool Sandbox

阿里巴巴云原生

阿里云 Serverless 云原生

关于 decimal 精度问题

TiDB 社区干货传送门

8.x 实践

玩转n8n测试自动化:核心节点详解与测试实战指南

测吧(北京)科技有限公司

我和 TiDB 的故事,是偶然也是一种必然

TiDB 社区干货传送门

TiDB第四届征文-运维开发之旅

平凯数据库(TiDB 企业版)敏捷模式部署测试

TiDB 社区干货传送门

TiDB + AiOps,迈入智能运维新时代

TiDB 社区干货传送门

TiDB第四届征文-业务场景实战

豫见 AI,聚力前行 | 北大明天正式成为和鲸科技河南省总代理

ModelWhale

AI 人工智能+ 科研智能一体机

TEM on 腾讯云试用小结

TiDB 社区干货传送门

管理与运维 TEM 试用

两种 TiDB 备份方案任你选择:NFS or S3(内含操作实践/备份/恢复)

TiDB 社区干货传送门

TiDB第四届征文-运维开发之旅 TiDB第四届征文-业务场景实战

TiDB 多列索引功能:以更快响应速度、最小化表扫描和流畅性能应对大规模场景

TiDB 社区干货传送门

性能调优

【TiDB 高可用实践】基于Haproxy+keepalived实现负载均衡

TiDB 社区干货传送门

TiDB第四届征文-运维开发之旅 TiDB第四届征文-业务场景实战

从 1 台服务器起步!TiDB 企业版敏捷模式试用:低成本享分布式数据库核心能力

TiDB 社区干货传送门

集群管理 TEM 试用 部署与初始化

从 MySQL 到 TiDB:成本详解

TiDB 社区干货传送门

MySQL 迁移

利用YashanDB数据库构建企业的信息化管理系统

数据库砖家

国产化浪潮中如何评估一款国产数据库的真实实力

TiDB 社区干货传送门

技术趋势 国产化替代 TiDB第四届征文-运维开发之旅 TiDB第四届征文-业务场景实战

从 MySQL 到 TiDB:调研、测试、迁移、上线全流程实施方案

TiDB 社区干货传送门

MySQL 迁移

付费广告 VS 达人营销:哪个更适合出海品牌?

Wolink

跨境电商 出海 海外营销推广 沃链Wolink 达人营销

DeepSeek vs GLM激辩:华为开发者空间部署BISHENG平台轻松构建终极AI辩论赛

华为云开发者联盟

毕昇 企业 AI 应用 华为开发者空间

社区活动 | TiDB 社区第四届专栏征文大赛联合墨天轮开启,TiDB 业务场景实战、运维开发攻略两大赛道,BOSE 降噪耳机、大疆手持云台、投影仪、运动手环、礼品卡等重磅礼品等你来拿!

TiDB 社区干货传送门

社区活动

TiDB敏捷模式部署测试

TiDB 社区干货传送门

TEM 试用

平凯数据库敏捷模式体验:助力电商行业实现降本增效

TiDB 社区干货传送门

版本测评 性能测评 敏捷模式

平凯数据库(TiDB 企业版)敏捷模式数据库试用

TiDB 社区干货传送门

TEM 试用

TiDB集群运维管控试用

TiDB 社区干货传送门

TEM 试用

离线部署tidb-8.5.3

TiDB 社区干货传送门

# 学生视角下平凯数据库敏捷模式的学习与探索体验

TiDB 社区干货传送门

演讲案例|兆翔科技 x TiDB:利用TiDB 助力福建四大机场核心系统高效运营

TiDB 社区干货传送门

物流 / 交通

平凯数据库(TiDB 企业版)敏捷模式在消防管理平台的实践评估报告

TiDB 社区干货传送门

敏捷模式

LinkedIn实时低延迟数据抓取系统Databus开源_Oracle_郑柯_InfoQ精选文章