写点什么

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:363743

评论

发布
暂无评论

“广度”和“深度”,是我最终选择蚂蚁的理由

DT极客

JVM-技术专题-Class文件加载虚拟机

码界西柚

JVM Class字节码

Java学习之路 -- Java怎么学?

秦怀杂货店

Java 编程 基础 书籍

【技术面对面】基于场景图的多物体图像生成技术

京东科技开发者

云计算

python中find_element()和find_elements()的区别

Geek_6370d5

Python

Java 并发系列(二):DCL — Double Check Lock

TroyLiu

Java volatile 多线程 synchronized DCL

Python+OpenCV检测灯光亮点

不脱发的程序猿

Python OpenCV 28天写作 3月日更 检测灯光亮点

【签约计划】技术编辑能力考核成绩公布

InfoQ写作社区官方

签约计划 热门活动

百度飞桨中国行南京站开启!共研AI赋能产业新模式

百度大脑

百度 AI 飞桨

常用的视频剪辑软件介绍,自媒体必备工具!

奈奈的杂社

软件架构中的模块与组件

Simon

架构实战营

2021突击银四必备:BAT900道Java面试清单!免费开放

比伯

Java 编程 架构 面试 计算机

一次客户需求引发的K8s网络探究

京东科技开发者

云计算

面试官:说说JavaScript中的事件模型

我家有萌🐱

JavaScript 面试 大前端 js

中国唯一入选 Forrester 领导者象限,阿里云 Serverless 全球领先

Serverless Devs

阿里云 Serverless 云原生

EGG NETWORK阿凡提超级公链  EFT流量通证信息完全公开源

币圈那点事

LDO和DC-DC有什么不同?如何选型?

不脱发的程序猿

28天写作 3月日更 LDO DC-DC 电源转换

Mongodb特定场景性能数十倍提升优化实践(记一次十亿级mongodb核心集群雪崩故障)

gmoy-tencent

MySQL 数据库 mongodb 架构 分布式数据库mongodb

你真了解开源许可证吗?

郭旭东

开源

微服务时代组件化和服务化的抉择

vivo互联网技术

微服务 组件化 服务化 服务调用

在开源的公链上实现隐私保护?静看NA公链 NAC公链创新之路应如何蜕变

区块链第一资讯

Elasticsearch详细剖析

大数据技术指南

ES 3月日更

实战案例丨分布式系统中如何用python实现Paxos

华为云开发者联盟

Python 算法 分布式系统 PAXOS 集群库

Rust从0到1-基础概念-注释

rust 代码注释

科技赋能城市建设,英特尔正式发布智慧社区解决方案参考架构

E科讯

区块链溯源,茶叶溯源平台的搭建

13828808769

#区块链#

Python基础之:Python中的异常和错误

程序那些事

Python Python3 程序那些事

银四30天,苦心啃透java高级工程师面试1000题,涨薪10K很难吗?

Java 编程 程序员 架构 面试

首站重庆聚焦智慧物流、呈现最新AI能力

百度大脑

AI 百度大脑

一位入职蚂蚁金服,年薪180万的大佬扔给我的笔记,看完发现差距不止一点点!

Java架构追梦

Java 阿里巴巴 架构 面试

Hudi on Flink 快速上手指南

Apache Flink

flink

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