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

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

问题

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

背景

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

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

本文方法

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

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

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

划分

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

复制

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

成员

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

故障检测

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

自举

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

集群缩放

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

本地持久化

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

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

实现细节

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

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

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

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

总结

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

相关推荐
热情的Dongming5 小时前
【课程总结】day34:多模态大模型之ViT模型、CLIP模型论文阅读理解
论文阅读
chencjiajy7 小时前
向量模型Jina Embedding: 从v1到v3论文笔记
论文阅读·embedding·向量模型
HollowKnightZ11 小时前
论文阅读笔记:DRCT: Saving Image Super-Resolution away from Information Bottleneck
论文阅读·笔记
苦瓜汤补钙11 小时前
论文阅读:DynamicDet: A Unified Dynamic Architecture for Object Detection
论文阅读·人工智能·目标检测
Maker~1 天前
18、论文阅读:AOD-Net:一体化除雾网络
网络·论文阅读·计算机视觉
新手小白勇闯新世界1 天前
论文阅读-用于图像识别的深度残差学习
论文阅读·人工智能·深度学习·学习·计算机视觉
大拨鼠1 天前
【多模态读论文系列】LLaMA-Adapter V2论文笔记
论文阅读·人工智能·llama
小嗷犬1 天前
【论文笔记】Dense Connector for MLLMs
论文阅读·人工智能·语言模型·大模型·多模态
新手小白勇闯新世界1 天前
论文阅读- --DeepI2P:通过深度分类进行图像到点云配准
论文阅读·深度学习·算法·计算机视觉
0x2111 天前
[论文阅读]BERT-based Lexical Substitution
论文阅读·人工智能·bert