赞
踩
zStorage
一、引言
zStorage 是云和恩墨自研的一款高性能全闪分布式块存储,其在设计选择上有很大的自由度。如何确保数据一致性和达成可用性指标,是 zStorage 架构设计的主要挑战之一。本文描述 zStorage 为什么选择Raft,以及如何使用Raft。
zStorage
二、为什么选择Raft?
2.1 如何保证数据可靠性
为了保证数据的可靠性,一般采取多副本模式(比如3副本)存储数据。在多副本模式下,如何保证副本间数据一致是分布式系统要解决的问题之一。
同时对分布块存储系统还有以下要求:
写请求返回成功,后续读请求必须返回新值。
写请求未返回成功,后续读请求可以返回旧值或旧值。只要返回了某值(新或旧),以后读请求都稳定返回该值。
2.2 如何实现多副本模式
在分布式3副本集群中,当需要在逻辑块地址(LBA)为3的位置写入数据9时,关于何时向主机返回写操作成功,存在不同的策略。下面以同步写入不同副本数为例进行比较。
同步写入1个副本,剩余2个副本异步写入:
如果集群掉电重启,在只有1份新数据时,无法判断后续读请求返回5还是9;
如果副本A故障,写入的数据9就丢失了,没达到多副本冗余的效果。
同步写2个副本,剩余1个副本异步写入:
由于要同步写入2个副本才返回,写时延由第2个写入成功的副本决定;
如果集群掉电重启,有2份最新数据,通过判断大多数副本都是9能返回正确数据,但读性能太差;
在副本A和副本C两个副本故障时,才会丢数据。
同步写3个副本:
由于要同步写入3个副本才返回,写时延由最慢的副本决定;
读请求只需要读1个副本就可以返回成功,读性能好;
还存在其他问题,比如:在写入2个副本时掉电,恢复后面临与写2副本一样的问题。
并发写问题:
同时有两个写请求,会出现副本间写入顺序不一致的情况;
如果通过串行控制写入顺序,不能利用磁盘的并发写入性能。
2.3 如何解决多副本一致性问题
在分布式存储系统中,复制状态机模型是一种常用的用于保证副本间同步问题的方法。复制状态机表现为一组分别部署于不同节点上的状态机副本,这些副本按照完全相同的指令序列执行操作,从而确保各个副本状态保持一致。
通过先写日志,保证副本间日志序列一致,再把日志按序应用到状态机。以此方法,不同副本的状态机数据就能保持一致。
通过给日志编号定序,可以避免并发写乱序问题;同时,日志还可以解决写操作的原子性问题。
2.4 选择Raft的理由
同步写日志的副本数量是一个关键决策。典型的做法是将日志同步写入所有副本,如开源分布式存储系统Ceph便采取了此种策略。另一方面,诸如Paxos和Raft这类共识算法,则选择了基于“大多数”原则来决定日志的写入副本数。
下面以3副本为例,比较两种策略的差异:
平均时延:写2副本与中间副本时延对齐,而写3副本时延与最慢副本对齐。
P99时延:写2副本与中间副本时延对齐,能避免单个副本磁盘异常时延的影响,而写3副本却不能。
Hang IO时长:在故障1个副本时,写2副本能继续工作。但写3副本要控制面探测到故障并调整集群配置后才能继续工作,Hang IO时长可能达到10秒、20秒等。
Paxos以其理论基础为分布式一致性提供了一个框架,其在实际理解和实现上相对复杂。Raft更注重易理解和工程实现,通过明确的领导者选举机制与日志管理,简化了分布式一致性问题的解决过程。
下面以Paxos的两个变体Basic-Paxos和Multi-Paxos以及Raft的差异:
鉴于对数据一致性、可靠性、可用性以及工程实现等因素的综合考虑,zStorage 选择采用Raft协议作为其在多副本间实现数据同步的核心机制。
zStorage
三、如何使用Raft?
在 zStorage 中,Raft协议主要用在数据面的ChunkServer中,通过Raft协议保证数据副本间的一致性。为了分散负载以及让系统可以水平扩展,我们采用了多个Raft组,每个Raft组负责部分数据的同步。
有4个Raft组,每个Raft组有3个副本,所有副本分布在3个不同的ChunkServer上。每个Raft组有1个Leader副本(蓝色),两个Follower副本。
zStorage
四、总结
在 zStorage 系统中,通过应用Raft协议保证数据一致性和可用性。针对可能出现的硬件故障或软件异常,系统能做到最长Hang IO时长不超过10秒。在特定故障场景下,例如OSD故障、ChunkServer崩溃等场景,Hang IO时长不超过1秒。
关于 zStorage
zStorage 是云和恩墨针对数据库应用开发的高性能全闪分布式块存储。三节点 zStorage 集群可以达到200万IOPS随机读写性能,同时平均时延<300μs、P99时延小于800μs。
zStorage 支持多存储池、精简配置、快照/一致性组快照、链接克隆/完整克隆、NVMeoF/NVMeoTCP、iSCSI、CLI和API管理、快照差异位图(DCL)、慢盘检测、亚健康管理、16KB原子写、2副本、强一致3副本、Raft 3副本、IB和RoCE、TCP/IP、后台巡检、基于Merkle树的一致性校验、全流程TRIM、QoS、SCSI PR、SCSI CAW。
zStorage 是一个存储平台,可作为数据库产品和存储产品的底座,欢迎发邮件至 marketing@enmotech.com 咨询。
关于作者
吴红伟,云和恩墨 zStorage 产品的Raft子系统架构师,领导Raft开发组,负责2副本、3副本、Erasure Code、故障恢复、后台巡检等存储业务模块的设计、开发和维护。
数据驱动,成就未来,云和恩墨,不负所托!
云和恩墨创立于2011年,是业界领先的“智能的数据技术提供商”。公司总部位于北京,在国内外35个地区设有本地办公室并开展业务。
云和恩墨以“数据驱动,成就未来”为使命,致力于将创新的数据技术产品和解决方案带给全球的企业和组织,帮助客户构建安全、高效、敏捷且经济的数据环境,持续增强客户在数据洞察和决策上的竞争优势,实现数据驱动的业务创新和升级发展。
自成立以来,云和恩墨专注于数据技术领域,根据不断变化的市场需求,创新研发了系列软件产品,涵盖数据库、数据库存储、数据库云管和数据智能分析等领域。这些产品已经在集团型、大中型、高成长型客户以及行业云场景中得到广泛应用,证明了我们的技术和商业竞争力,展现了公司在数据技术端到端解决方案方面的优势。
在云化、数字化和智能化的时代背景下,云和恩墨始终以正和多赢为目标,感恩每一位客户和合作伙伴的信任与支持,“利他先行”,坚持投入于数据技术核心能力,为构建数据驱动的智能未来而不懈努力。
我们期待与您携手,共同探索数据力量,迎接智能未来。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。