GFS为什么要三个副本全写成功才算成功?——基于paxos实现多数派逻辑的方案设计

本文探讨了为什么GFS采用三副本策略而非多数派机制,通过引入PAXOS算法详细阐述了一个实现多数派写入的方案,包括冻结触发条件、数据同步与一致性维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引子 

 GFS的三副本要求数据在三个副本都写成功,才会更新元数据,标志数据写入成功,为何不使用多数派机制呢?

 这是因为,写多少乍一想非常简单,但是要设计一个正确的、可容错的、严格一致性的多数派写入方案还是非常复杂的,本文给出一个可选的写入方案。

基本背景和名词解释:

1.基本架构和GFS一致,数据流被切分为多个record,写入数据分片,数据写三副本,并存在元数据服务器,数据分片称之为Partition,主称之为primary,备称之为secondary,主写满64MB后会冻结当前Partition,再新创建一个Partition,备发现主lease超时后,即便当前Partition还未写满64MB,也会主动发起冻结。

2.要求是,冻结后的多个副本是一致的,即每个副本record的数量和内容都是一致的


实现方案:

冻结可能在两种情况下触发:

  • primary写满(比如64MB)之后,主动发起冻结

  • secondary发现primary lease过期,并且元数据也没有处于冻结状态,也会发起冻结,并补齐多数派上的数据

为了在这一分布式事件中保持数据的一致性和完备性,并说明其正确性,还需引入paxos算法,下面对这一过程和paxos的对应关系和代码简要设计说明:

  1. paxos实例

在写入数据到三副本以及冻结的过程中,每个record就是一个实例,每个实例之间是没有关系的,实例的集合是recondid属于[0, 无穷大)


    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值