写点什么

每日 24 亿事件处理:Airbnb 的 Riverbed 技术解析

  • 2023-10-18
    北京
  • 本文字数:934 字

    阅读完需:约 3 分钟

大小:464.63K时长:02:38
每日24亿事件处理:Airbnb的Riverbed技术解析

Airbnb开发的Riverbed是一个Lambda风格的数据框架,用于生成和管理分布式物化视图。该框架支持 50 多个涉及重度数据读取的应用场景,在这些场景中,数据来自 Airbnb 面向服务架构(SOA)平台的多个数据源。它分别使用 Apache Kafka 和 Apache Spark 作为在线和离线处理组件。


Airbnb 观察发现,一些跨多个不同数据存储的复杂查询是导致该平台主要功能出现延迟的罪魁祸首。开发团队不能使用数据库提供的标准的物化视图,因为计算物化视图所需的数据不在单个数据库中。


开发团队尝试使用一种技术来创建分布式物化视图,该技术使用了变更数据捕获(CDC)、流处理和专门用来存储最终结果的数据库。他们仔细权衡了数据处理架构:


Lambda 和 Kappa 是两种实时数据处理架构。Lambda 结合了批处理和实时处理,可以有效地处理大数据量,而 Kappa 仅专注于流处理。Kappa 的简单性提供了更好的可维护性,但在实现回填机制和确保数据一致性方面存在挑战,特别是对于乱序事件。


Riverbed 框架采用了 Lambda 架构,并提供了一种声明式的方式,使用GraphQL为在线(实时事件)和离线(数据回填)组件定义数据查询和计算逻辑。该框架负责并发、版本控制和数据正确性保证,以及与基础设施组件的集成。



Riverbed 的流式处理(来源:Airbnb工程博客)


对于实时处理,Riverbed 使用Apache Kafka消费数据源发出的变更数据捕获(CDC)事件来进行消息传递。来自 CDC 的事件通过执行用 GraphQL 定义的聚合逻辑来更新物化视图,结果文档存储在物化视图数据库中。为了提高效率,处理是高度并行化和批量化的。


流式管道避免了竞态条件,因为 CDC 事件在 Apache Kafka 中基于物化视图文档的标识符被重新分区,因此对物化视图的更新是顺序完成的。此外,在在线(实时)和离线(批处理)处理之间使用乐观并发控制来避免并发写和潜在的数据不一致。



Riverbed 的批处理(来源:Airbnb工程博客)


Riverbed 支持数据回填和协调,以防出现因丢失 CDC 事件导致的实时处理问题。这一部分使用Apache Spark来处理存储每日快照的数据仓库中的数据。该框架基于在 Riverbed 中配置的 GraphQL 定义生成Spark SQL


Riverbed 目前每天处理 24 亿个事件,写入 3.5 亿个文档,处理与 Airbnb 的支付、搜索、评论、行程和内部产品等功能相关的 50 多个物化视图。


原文链接

https://www.infoq.com/news/2023/10/airbnb-riverbed-introduction/

2023-10-18 08:0012240

评论

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

免费分享入门学习Java的优秀图书

Java入门到架构

Java 书籍 Java入门

如何实现跨设备的双向连接? Labo涂鸦鸿蒙亲子版分布式开发技术分享

科技汇

IPFS挖矿靠谱吗?IPFS挖矿合法吗?

区块链 IPFS

为技术系统打“疫苗”,爱奇艺攻防演练平台的探索实践

爱奇艺技术产品团队

架构 安全攻防 开发 混沌工程

字节跳动实习生删库高操作

学神来啦

Linux 程序员 职场搞笑 linux运维

AQS介绍和原理分析(下)

追风少年

并发编程 AQS

国内市场主流音视频产品主要功能分析

anyRTC开发者

音视频 WebRTC 语音通话 实时通讯 视频通话

新能源车的发展趋势

石云升

学习 新能源汽车 7月日更

花2个月备战字节,3轮面试拿下总包60W Offer!

Java架构师迁哥

从特斯拉召回事件,窥探OTA汽车进化真面目

脑极体

网络攻防学习笔记 Day62

穿过生命散发芬芳

网络攻防 7月日更

利用 IComparable<T> 以及 IComparer<T> 定义顺序关系

喵叔

7月日更

强!上线3天获10w浏览量,京东T8纯手码Redis缓存手册,我粉了

Java 数据库 redis 架构 面试

CVPR2021竞赛结果出炉,阿里淘系多媒体算法包揽3项国际冠军

阿里巴巴大淘宝技术

CVPR

2022秋春招/提前批面经分享总结(字节、腾讯、阿里)

学无止境的阿奔

腾讯 面试 阿里 字节 校招

在企业软件中负责任地使用开放源代码

BeeWorks

Vitalik Buterin眼中的区块链信任模型

CECBC

大专的我,闭关苦学56天,含泪拿下阿里offer,五轮面试,六个小时灵魂拷问

Java架构师迁哥

Python协程 & 异步编程(asyncio) 入门介绍

行者AI

#python

云原生负载均衡和网关应用实践

火山引擎开发者社区

云原生 后端

全表遍历并处理数据有点慢?放开!我来!

林一

jpa Stram @QueryHints

模块1

cherrycheek

什么是数据仓库

奔向架构师

数据库 数据仓库 数据架构 话题讨论 7月日更

iOS 15隐私升级及注意事项

阿里巴巴大淘宝技术

ios WWDC21

Linux常用命令-文件操作

正向成长

linux命令

为什么AI需要大大大大大模型?

白洞计划

🏆「推荐收藏」【Spring源码专题】彻底让你明白【IOC容器初始化】运行原理和源码流程

洛神灬殇

spring 容器 源码分析 7月日更

科创人|容联七陌CEO陈光:90后街舞少年的CEO修炼手册

科创人

人工智能 创业 程序员

Flink知识点总结

五分钟学大数据

flink 7月日更

数字新金融到底是什么样的金融

CECBC

将 FeignClient 的请求记录成 cURL 格式

哈德韦

微服务 前后端分离 log4j curl Spring boot Feign

每日24亿事件处理:Airbnb的Riverbed技术解析_业务架构_Rafal Gancarz_InfoQ精选文章