写点什么

Airbnb 的 Mussel V2:下一代的键值存储,以统一流和批处理

作者:Leela Kumili

  • 2025-10-29
    北京
  • 本文字数:1154 字

    阅读完需:约 4 分钟

大小:592.15K时长:03:22
Airbnb的Mussel V2:下一代的键值存储,以统一流和批处理

Airbnb 的工程团队推出了Mussel v2,这是对其内部键值引擎的一次彻底重构,旨在统一流式处理和批量摄取,同时简化运维并扩展到更大的工作负载。据报道,新系统能够维持每秒超过 100,000 次流式写入,支持超过 100TB 的表,p99 读取延迟在 25 毫秒以下,并且能够批量摄取数十 TB 的数据,使调用团队能够专注于产品创新而不是管理数据管道。

 

早期版本的Mussel v1为 Airbnb 的内部数据服务提供了动力,但随着数据量和产品集成的增加,其局限性日益显现。它的静态哈希分区设计运行在Amazon EC2上,并通过Chef脚本进行管理。独立的批处理和流式路径增加了运维开销,并使得确保一致性变得很困难。



Mussel V1 架构(图片来源:Airbnb工程博客

 

Mussel v2 通过将 NewSQL 后端与Kubernetes原生控制平面结合,解决了这些限制,提供了对象存储的弹性、低延迟缓存的响应性以及现代服务网格的可操作性,所有这些都集成在一个单一平台上。系统使用 Kubernetes 清单和自动部署,动态范围分片与预分割以缓解热点问题,以及命名空间级别的配额和仪表板以提高成本透明度。调度器(Dispatcher)层是无状态的,并且可以水平扩展,能够路由客户端 API 调用,处理重试,并支持双重写入和影子读取模式以促进迁移。

 

写入首先会被持久化到Kafka中以确保持久性,下游的重放器(Replayer)和写入调度器(Write Dispatcher)组件按顺序将它们应用到后端数据库。批量加载会继续通过 Airbnb 的数据仓库来使用Airflow作业和 S3 暂存,保留了合并或替换的语义。工程团队还引入了一个拓扑感知的过期服务,将数据命名空间分片成基于范围的子任务,由多个工作者并发处理。过期记录会基于调度进行并行删除,以限制对实时查询的影响,而写入密集型表使用最大版本限制和有针对性的删除。根据团队的说法,这些增强功能在保持 v1 保留功能的同时,提高了效率、透明度和可扩展性。



Mussel V2 架构(图片来源:Airbnb工程博客

 

根据 Airbnb 的工程团队的说法,从 v1 迁移到 v2 带来了重大挑战。团队使用了具有表级别粒度的蓝绿方法、持续验证和回退机制。由于 v1 缺乏原生变更数据捕获或表快照,表通过备份和抽样数据引导到 v2 以计划预分割。在引导摄取和验证校验和之后,再应用滞后的 Kafka 事件,并启用双重写入。在切换过程中,读取逐渐转移到 v2,而影子流量监控一致性,如果错误率激增则回退到 v1。Kafka 在整个迁移过程中充当公共日志。



从 Mussel V1 到 V2 的数据迁移管道(图片来源:Airbnb工程博客

 

Airbnb 的工程师报告说,从最终一致性后端迁移到强一致性后端涉及到运维的复杂性,包括写入去重和控制重试。他们对查询执行和工作负载分配进行了调整,而 Kafka 充当持久化日志。每个表的暂存、自动回退和监控使得在没有停机的情况下迁移了超过 1PB 的数据。

 

查看英文原文:Airbnb’s Mussel V2: Next-Gen Key Value Storage to Unify Streaming and Bulk Ingestion

2025-10-29 10:363390

评论

发布
暂无评论

算法题每日一练---第2天:棋盘放麦子

知心宝贝

算法 前端 后端 7月月更

h5实现一个刮刮卡的动画效果

南极一块修炼千年的大冰块

7月月更

Linux下玩转nginx系列(七)---nginx如何实现限流功能

anyRTC开发者

nginx Linux 音视频 服务器 限流

Qt播放音视频文件报错DirectShowPlayerService::doRender: Unresolved error code 0x80040266

小肉球

qt 7月月更

查找——B+树

乔乔

7月月更

Qt | 通过创建一个简单项目了解Qt Creator

YOLO.

qt Qt Creator 7月月更

LeetCode-101. 对称二叉树(java)

bug菌

Leet Code 7月月更

JAVA编程规范之注释规约

源字节1号

后端开发

2022可信区块链生态大会落幕——旺链科技参与《区块链供应链金融系统评测方法》制定

旺链科技

区块链 产业区块链 供应链金融

国际顶会OSDI首度收录淘宝系统论文,端云协同智能获大会主旨演讲推荐

阿里巴巴大淘宝技术

人工智能 #开源

Unity实战问题-WebGL问题集锦-下篇

芝麻粒儿

android Unity 7月月更

【LeetCode】数组能形成多少数对Java题解

Albert

LeetCode 7月月更

【深度】新派LaaS协议Elephant:重振DeFi赛道发展的关键

西柚子

Android root相关调研

沃德

android 程序员 7月月更

OneFlow v0.8.0正式发布

OneFlow

版本更新

启新聚势 云谱新篇|海泰方圆与四川联通达成生态战略合作

电子信息发烧客

【深度】新派LaaS协议Elephant:重振DeFi赛道发展的关键

小哈区块

拷贝构造函数剖析【C++】

攻城狮杰森

c++ 7月月更 拷贝构造函数

STM32+BH1750光敏传感器获取光照强度

DS小龙哥

7月月更

直播短视频源码——直播短视频源码的开发步骤顺序五步走

开源直播系统源码

软件开发 直播系统源码 开源源码 短视频直播源码

聚焦数据|海泰方圆直击证券行业数据安全治理建设思路

电子信息发烧客

如何使用 SAP Intelligent Robotic Process Automation 自动操作 Excel

汪子熙

机器学习 RPA 机器人流程自动化 SAP 7月月更

在 IDEA 里下个五子棋不过分吧?

沉默王二

Java Netty IDEA idea插件 idea plugin

mysql进阶(八)排序问题方案探究

No Silver Bullet

MySQL 排序 中文编码 7月月更

vivo官网APP全机型UI适配方案

vivo互联网技术

App UI

iOS 内存管理(基本概念及引用计数)

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

C# 基于MessageBox类的消息对话框讲解

IC00

C# 7月月更

面对复杂问题时,系统思考助你理解问题本质

阿里技术

系统性思考 复杂事件处理 业务逻辑

strcpy()

謓泽

7月月更

java零基础入门-java8新特性(完结篇)

喵手

Java 7月月更

CSS动画篇之404动画

南城FE

CSS 前端 7月月更

Airbnb的Mussel V2:下一代的键值存储,以统一流和批处理_后端_InfoQ精选文章