分布式锁服务Chubby
分布式锁服务Chubby以及paxos算法
初步了解Chubby
Chubby是一个面向松耦合分布式系统的锁服务。目的是允许他的客户端进程同步彼此的操作,并对当前所处环境的基本状态信息达成一致。
通过使用Chubby的锁服务,用户可以确保数据操作过程中的一致性。
Chubby作为一个稳定的存储系统,存储包括元数据在内的小数据。
故事案例:
paxos算法
角色介绍
proposer:向集群提出提案(proposal),提案包括编号(n)和内容(value)
acceptor:对提案进行投票。当提案获得多数acceptor的接受时,称该提案被批准(chosen)
learner:获取被批准的提案,对集群的一致性不会产生影响
算法最终目标:每个proposer、acceptor、learner都认为同一个提案中的内容被选中
三个条件
提案内容(value)只有在被proposers提出后才能被批准
在一次paxos算法的执行中,只会批准(chosen)一个决议
learners只能获取被批准的决议
两大阶段
prepare阶段:
prepare(N)请求:proposer提出一个proposal,编号为N(该编号大于等于所有已经提出的提案编号),并向所有的acceptor广播(只发送编号,不发送提案内容)
promise(n,value)返回:如果N大于acceptor此前接收的所有提案编号,就接收并承诺不再接收比N小的提案;否则拒绝。如果acceptor存在已经同意的议案,则返回该议案的编号和内容;否则返回空值表示接收
accept阶段:
accept(N,value)请求:proposer收到多于一半的promise返回之后,如果存在编号大的提案(被拒绝)则此次提案失败,继续提出新的proposal;如果收到提案编号和内容(表明存在已经同意的提案,可能会收到多个),则选取编号大的提案的内容,并返回;否则返回本次提案的内容(value)
accepted(N)返回:在此期间,acceptor如果没有收到任何编号大于N的提案,就接受该提案;否则拒绝(保证决议的唯一性)。当proposer收到超过半数的acceptor的接受后,达成共识。
案例分析
Chubby系统设计
设计目标:
Chubby的基本架构
常用的句柄函数及作用
Chubby中的Paxos
Chubby服务器的基本架构
1、最底层是容错日志系统,通过paxos协议保证集群上的日志完全一致
2、日志之上是KV类型的容错数据库,通过下层的日志来保证一致性和容错性
3、最上层是对外提供的分布式锁服务和小文件存储服务
Chubby文件系统
chubby文件系统提供了分布式锁服务的同时,还可以用于存储小型文件和元数据以及协调和管理分布式系统中的配置信息和锁定状态
特点和用途:
一致性协议
一致性协议并不是锁需求直接相关的,假设有一个永不宕机的节点和永不中断的网络,那么一个单点的存储即可支撑上层锁的实现及使用。但这种假设在互联网环境中是不现实的,所以才引入了一致性协议,来保证可以通过副本的方式容忍节点或网络的异常,同时又不引起正确性的风险。
Chubby采用一个有强主的Multi-Paxos,其概要实现如下:
1、多个副本组成一个集群,副本通过一致性协议选出一个Master,集群在一个确定的租约时间内保证这个Master的领导地位
2、 Master周期性的向所有副本延长自己的租约时间
3、 每个副本通过一致性协议维护一份数据的备份,而只有Master可以发起读写操作
4、 Master故障或脱离集群后,其他副本发起选主,得到一个新的Master
故障恢复
主服务器出现故障的时候,如果很快就选出了新的主服务器,那么客户端可以在租约期过期前联系上新的主服务器;否则,在租约期过期后,客户端会利用宽限期来让会话在故障期间得以维持直到选出新的主服务器。
正确性与性能
Chubby 的 ACL 机制
Chubby文件系统具有一个访问控制列表(ACL)机制,用于控制哪些用户或实体可以访问Chubby中的资源(如锁和小型文件)以及他们可以执行的操作。
Chubby的ACL机制通常包括以下关键组成部分:
Chubby的ACL机制允许管理员或资源所有者根据其需求灵活地管理资源的访问控制。这有助于确保资源只被授权的用户或实体访问,并且只有授权的操作可以执行。这对于维护数据的机密性和完整性非常重要,特别是在需要处理敏感信息的环境中。
更多推荐
所有评论(0)