Cassandra - A Decentralized Structured Storage System——论文阅读

SIGOPS 2010 Paper 分布式元数据论文阅读笔记整理

问题

Facebook生产环境中,在大量基础设施(数千个组件)上运行的分布式存储系统可能面临各种故障,因此,软件系统需要以一种将故障视为规范而非例外的方式进行构建,如何在这种情况下保证可靠性和可扩展性,同时保证不牺牲读性能下保证高写入吞吐量。

背景

在生产环境中运行的存储系统的体系结构非常复杂,除了实际的数据持久性组件外,该系统还需要具有以下特性;负载平衡、成员身份和故障检测、故障恢复、副本同步、过载处理、状态转移、并发和作业调度、请求编组、请求路由、系统监控和报警、配置管理的可扩展和稳健的解决方案。

本文重点关注Cassandra中使用的核心分布式系统技术:分区、复制、成员身份、故障处理和扩展。所有这些模块同步工作以处理读/写请求。通常,对密钥的读/写请求会被路由到Cassandra集群中的任何节点,节点确定该密钥的副本。对于写入,系统将请求路由到副本,并等待仲裁的副本来确认写入的完成。对于读取,基于客户端所需的一致性保证,系统将请求路由到最近的副本,或者将请求路由至所有副本,并等待仲裁响应。

本文方法

提出Cassandra,一种分布式存储系统,用于管理分布在许多商品服务器上的大量结构化数据,提供无单点故障的高可用性服务。

  • 管理持久状态,提高了依赖该服务的软件系统的可靠性和可扩展性。

  • 不支持完整的关系数据模型,为客户端提供了一个简单的数据模型,支持对数据布局和格式的动态控制。

划分

使用一致性哈希和环划分数据到不同节点。为了负载均衡,分析环上信息,并让轻负载节点在环上移动,以减轻重负载节点。

复制

每个数据都在N个主机上复制,包括多种复制策略:Rack Unaware、Rack Aware(在数据中心内)、datacenter Aware。

成员

成员基于Scuttletter19,一种基于反熵Gossip的机制,具有非常高的CPU利用率和gossip频道利用率。

故障检测

通过故障检测,节点可以本地确认其他节点的接入和离开, 同时避免与无法访问的节点通信。通过节点的故障检测块发送值来判断,不发出值则节点处于接入或离开状态,发出的值表示节点的网络和负载状态。

自举

节点首次启动时会在环中选择随机位置,并获得令牌,随后令牌在集群中传播以通知其他节点。

集群缩放

新节点加入后会从旧节点分取部分数据,并通过内存复制技术传到新节点。

本地持久化

依赖本地文件系统实现数据持久性,利用顺序写入的提交日志实现。

查找时首先查询布隆过滤器,随后查询索引,最后查找磁盘上的文件。

实现细节

单机上主要包含以下进程:分区模块、成员身份和故障检测模块、存储引擎模块。系统控制消息利用UDP传输,用于复制和请求路由的应用程序消息利用TCP传输。

数据请求流程:(1)识别拥有数据的节点(2)将请求路由到节点并等待响应到达(3)如果响应没有在配置的超时值内到达,则使请求失败并返回到客户端(4)基于时间戳计算出最新响应(5)如果它们没有最新的数据,则在任何副本处安排数据修复。

清除提交日志项的机制:滚动提交日志,在旧的提交日志超过特定的、可配置的大小后,将滚动新的提交日志。默认用128MB。

基于主键对所有数据进行索引,磁盘上的数据文件分解为一系列块,每个块最多包含128个键,并且由块索引来划分。

总结

对Facebook中分布式存储系统Cassandra进行介绍,介绍各种实现的大概思路,包括:数据划分、复制、成员身份和故障检测、集群缩放、本地持久化、数据请求流程。

相关推荐
chnyi6_ya1 天前
论文阅读笔记 | The Script is All You Need: 对话到电影级视频生成的 Agentic 框架
论文阅读·笔记
iiiiii111 天前
【论文阅读笔记】Reparameterization Proximal Policy Optimization (RPO):将PPO的稳定性引入可微分强化学习
论文阅读·人工智能·笔记·深度学习·机器学习·机器人·具身智能
实验如有神祝女士2 天前
不同参数规模大模型在医学翻译场景的适配差异
论文阅读·人工智能·深度学习·学习·算法·语言模型·论文笔记
IT阿瑞2 天前
学术论文 PDF 翻译:双栏、公式、图注的三个处理难点
论文阅读·人工智能·ai
chnyi6_ya3 天前
论文阅读笔记 | One Sentence, One Drama: 基于多智能体系统的个性化短剧生成
论文阅读·笔记
小马哥crazymxm3 天前
Arxiv论文周选 (2026-W28)
论文阅读·人工智能·科技
m4Rk_3 天前
【论文阅读】Agent 记忆机制(20):RecMem——只在信息反复出现时进行长期记忆巩固
论文阅读·人工智能·学习·开源·github
m4Rk_4 天前
【论文阅读】Agent 记忆机制(22):FluxMem——根据对话结构动态选择记忆组织方式
论文阅读·人工智能·学习
万里鹏程转瞬至5 天前
论文简读:Boogu-Image 图像生成与编辑模型
论文阅读·深度学习·aigc
Rocky Ding*7 天前
一文读懂Kimi k1.5大模型核心基础知识
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·kimi k1.5