浅谈分布式存储技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浅谈分布式存储技术
目录
• 分布式存储架构概述
• 分布式一致性协议及算法
• 分布式存储关键技术
⼀一、分布式存储架构概述
⽆无中⼼心全对称分布式架构
Swift对象存储采⽤用该架构
Ceph架构概述
块/⽂文件切分成多个Object对象
通过hash算法将object映射⾄至
PG,PG是虚拟资源池
通过CRUSH算法将Object从虚
拟PG映射⾄至实际的OSD组,
Object在OSD中的具体位置信
息在每个OSD设备中维护
GFS架构概述
² Master维护了了file与chunk之间的映射关系,chunk与CS之间的映射关系² 采⽤用Append Write的⽅方式实现更更新数据追加,简化⼀一致性模型
² 根据对延迟、带宽的不不同业务需求,采⽤用不不同的数据追加⽅方式
² 通过Lease机制来降低Master的负担
² 采⽤用多副本的⽅方式实现数据冗余
⼆二、分布式⼀一致性协议及算法
CAP定理理
Consistency
Availability Partition Tolerance
CA CP
AP ² Partition Tolerance
ü 分区容错,分布式系统都存在多个⼦子
⽹网络,每个⼦子⽹网叫做⼀一个区,区间通
信可能会失败。对于分布式系统设计,
分区容错是⽆无法避免的
² Consistency
ü ⼀一致性,在多副本情况下,如果存在
故障、异常,会导致部分副本写⼊入成
功,部分副本写⼊入失败,导致数据不不
⼀一致。
² Availability
ü 可⽤用性。每个操作总能在⼀一定时间内
返回结果,可⽤用性和⼀一致性之间很难
两者都满⾜足
BASE理理论 —— ⼀一致性和可⽤用性之间的权衡
² BASE(Basically Available、Soft State、Eventually Consistent)ü 即使⽆无法做到强⼀一致性,业务根据⾃自身特点,采⽤用适当的⽅方式达到最终⼀一致
• 基本可⽤用 - 分布式系统在出现不不可预知故障时,允许损失部分可⽤用
性
• 软状态 - 允许系统存在中间状态,在中间状态不不会影响系统整体可
⽤用性,即允许副本之间数据同步存在延迟
• 最终⼀一致性- 系统副本经过⼀一定时间之后,最终能够达到⼀一致的状
态
² BASE强调数据在⼀一段时间内不不⼀一致,但最终达到⼀一致性,⼀一定程度上牺牲⼀一致性来获得可⽤用性
数据库事务⼀一致性(ACID)
² ACID保证多个事务并发执⾏行行互补⼲干扰,并且可以得到⼀一致的结果
ü Atomicity
• 原⼦子性体现事务对数据的修改,要么全部执⾏行行成功,要么全都没有执⾏行行ü Consistency
• 事务在多个节点上的操作结果具有⼀一致性
ü Isolation
• 多个事务在并发操作的过程中,需要保证事务之间不不可⻅见ü Durability
• 事务完成之后,操作结果是永久性的,即使系统出现异常,结果保持不不变
分布式系统⼀一致性模型
² 强⼀一致性
ü 当更更新操作完成之后,任何多个后继进程或者线程的访问都会返回最新的结果。这种⽅方式对⽤用户最为友好,写⼀一次写⼊入的数据,下⼀一
次保证能读到,并唯⼀一。这种实现⽅方式,需要⼀一定程度上牺牲可⽤用
性。
² 弱⼀一致性
ü 系统并不不保证跨进程或者线程的访问都会返回最新的更更新过的值,数据写⼊入成功之后,并不不承诺⽴立即可以读到最新写⼊入的数据。在数
据达到⼀一致状态之间会存在⼀一段时间。
² 最终⼀一致性
ü 弱⼀一致性的特定形式,系统最终返回⼀一致更更新的操作值
弱⼀一致性实践要求
² 读写⼀一致性(Read-Your-Write)
ü 如果A写⼊入了了最新数据,A后继的读操作都会获得最新值,但是其他⽤用户需要过⼀一段时间之后才会获得⼀一致的最新数据
² 会话⼀一致性(Session)
ü 客户端和存储系统交互的整个会话期间保证读写⼀一致性
² 单调读⼀一致性(Monotonic Read)
ü 如果客户已经读取了了某个值,那么系统不不会再返回更更早的值
² 单调写⼀一致性(Monotonic Write)
ü 对于同⼀一个客户端的操作,存储系统的多个操作需要按照与客户端相同的顺序执⾏行行
分布式事务 —— 两阶段提交协议
Paxos⼀一致性算法
² C lient
ü 产⽣生提议者
² P roposer
ü 提议者,接收变量量值,发出写请求
的线程
² A cceptor
ü 接收写请求,持久化变量量值的线程,
Acceptor的数量量必须是奇数个
² M ajority
ü 半数以上accepter的集合
² L earner
ü 变量量“稳态值”的接收者
Basic Paxos Instance算法过程
① Proposer选择⼀一个提案号n
② Proposer向Acceptors⼴广播提案n,⽆无需提交⽇日志内容
③ Acceptor接收者⽐比较n和minProposal,如何
n>minProposal,表示有更更新的提议,如果发⽣生这种
情况,接收者会接受n最⼤大的提案,并更更新
minProposal⾄至n。如果已经accept过proposal,那么
返回acceptedProposal和acceptedValue
④ Proposer从多数派中接收到应答请求之后,如果应答
⽇日志内容为空,那么向所有acceptor发送⽇日志同步请
求;如果应答存在有效⽇日志,那么需要回退重试
⑤ Proposers⼴广播accept(n, value)⾄至所有节点
⑥ Acceptor⽐比较n和minProposal,如果
n>=minProposal,更更新acceptedProposal、
minProposal、AcceptedValue,本地持久化数据,
否则拒绝该请求
⑦ Proposer接收到半数应答之后,如果
acceptedProposal>n,表示有其他更更新的提案被接
受,回到1重新提案,否则表示提案被成功接受,达
成⼀一致