初步了解Chubby

Chubby是一个面向松耦合分布式系统的锁服务。目的是允许他的客户端进程同步彼此的操作,并对当前所处环境的基本状态信息达成一致。

通过使用Chubby锁服务,用户可以确保数据操作过程中的一致性。

Chubby作为一个稳定的存储系统存储包括元数据在内的小数据。

故事案例:

paxos算法

 角色介绍

proposer:向集群提出提案(proposal),提案包括编号(n)和内容(value

acceptor对提案进行投票。当提案获得多数acceptor的接受时,称该提案被批准(chosen

learner获取被批准的提案,对集群的一致性不会产生影响

算法最终目标:每个proposeracceptorlearner都认为同一个提案中的内容被选中

三个条件

提案内容(value)只有在被proposers提出后才能被批准

在一次paxos算法的执行中,只会批准(chosen)一个决议

learners只能获取被批准的决议

两大阶段 

prepare阶段

  prepareN)请求proposer提出一个proposal,编号为N(该编号大于等于所有已经提出的提案编号),并向所有的acceptor广播(只发送编号,不发送提案内容

  promisenvalue)返回:如果N大于acceptor此前接收的所有提案编号,就接收并承诺不再接收比N小的提案;否则拒绝。如果acceptor存在已经同意的议案,则返回该议案的编号和内容;否则返回空值表示接收

accept阶段

  acceptNvalue)请求proposer收到多于一半的promise返回之后,如果存在编号大的提案(被拒绝)则此次提案失败,继续提出新的proposal;如果收到提案编号和内容(表明存在已经同意的提案,可能会收到多个),则选取编号大的提案的内容,并返回;否则返回本次提案的内容(value

  acceptedN)返回:在此期间,acceptor如果没有收到任何编号大于N的提案,就接受该提案;否则拒绝(保证决议的唯一性)。当proposer收到超过半数的acceptor的接受后,达成共识。

案例分析

Chubby系统设计

设计目标:

Chubby的基本架构 

常用的句柄函数及作用

Chubby中的Paxos 

Chubby服务器的基本架构

1、最底层是容错日志系统,通过paxos协议保证集群上的日志完全一致

2、日志之上是KV类型的容错数据库,通过下层的日志来保证一致性和容错性

3、最上层是对外提供的分布式锁服务和小文件存储服务

Chubby文件系统

chubby文件系统提供了分布式锁服务的同时,还可以用于存储小型文件和元数据以及协调和管理分布式系统中的配置信息和锁定状态

特点和用途:

1.分布式锁服务:Chubby允许多个客户端通过锁来协调它们的活动,以避免竞争条件和确保一致性。
2.小型文件存储:Chubby提供一个分层的命名空间,允许客户端存储和检索小型文件和元数据。这些文件通常包含配置信息、状态数据和其他关键信息。
3.高可用性:Chubby通过在多个数据中心部署服务器实现高可用性,以防止单点故障。
4.强一致性:Chubby提供强一致性,确保锁服务的可靠性和数据一致性。
5.持久性:Chubby文件系统确保写入的数据是持久的,即使在服务器故障的情况下也不会丢失。

一致性协议 

    一致性协议并不是锁需求直接相关的,假设有一个永不宕机的节点和永不中断的网络,那么一个单点的存储即可支撑上层锁的实现及使用。但这种假设在互联网环境中是不现实的,所以才引入了一致性协议,来保证可以通过副本的方式容忍节点或网络的异常,同时又不引起正确性的风险。

Chubby采用一个有强主的Multi-Paxos,其概要实现如下:

1、多个副本组成一个集群,副本通过一致性协议选出一个Master,集群在一个确定的租约时间内保证这个Master的领导地位

2Master周期性的向所有副本延长自己的租约时间

3、 每个副本通过一致性协议维护一份数据的备份,而只有Master可以发起读写操作

4Master故障或脱离集群后,其他副本发起选主,得到一个新的Master

故障恢复

     主服务器出现故障的时候,如果很快就选出了新的主服务器,那么客户端可以在租约期过期前联系上新的主服务器;否则,在租约期过期后,客户端会利用宽限期来让会话在故障期间得以维持直到选出新的主服务器。

正确性与性能 

Chubby 的 ACL 机制 

    Chubby文件系统具有一个访问控制列表(ACL)机制,用于控制哪些用户或实体可以访问Chubby中的资源(如锁和小型文件)以及他们可以执行的操作。

    ChubbyACL机制通常包括以下关键组成部分:

1.用户/实体标识:ACL定义了可以访问Chubby资源的用户或实体的标识。标识可以是用户名、组名、角色或其他实体的标识符。
2.权限:ACL规定了每个用户或实体可以执行的操作。包括读取、写入、修改、删除等权限。
3.访问控制规则:ACL通常以规则的形式表示,每个规则指定了一个用户或实体和他们被授予的权限。例如,一个ACL规则可以是"用户A有读取权限"
4.继承性:某些ACL系统允许权限的继承,这意味着如果某个实体拥有特定权限,那么它可能也会将这些权限授予其他实体。
5.默认权限:ACL可以定义资源的默认权限,以确保资源的安全性。例如,可以指定一个资源的默认权限是不允许访问,然后通过规则授予特定用户或实体访问权限。

    ChubbyACL机制允许管理员或资源所有者根据其需求灵活地管理资源的访问控制。这有助于确保资源只被授权的用户或实体访问,并且只有授权的操作可以执行。这对于维护数据的机密性和完整性非常重要,特别是在需要处理敏感信息的环境中。 

Logo

更多推荐