• [x] 开篇词 | 想成为分布式高手?那就先把协议和算法烂熟于心吧

  • [x] 学习路径 | 分布式协议与算法你应该这么学

    image.png

    一般来讲,我们将一致性分为三类。 强一致性:保证写操作完成后,任何后续访问都能读到更新后的值。 弱一致性:写操作完成后,系统不能保证后续的访问都能读到更新后的值。 最终一致性:保证如果对某个对象没有新的写操作了,最终所有后续访问都能读到相同的最近更新的值。

    系统状态的一致性和数据访问的一致性? 作者回复: 加一颗星:),系统状态的一致性,可以理解为操作要么全部成功,要么全部失败,各节点处于一个一致的状态;数据访问的一致性,可以理解为写操作完成后,能否读取到最新数据,如果写操作完成后,读操作都能读取到最新数据,那么就是强一致性。

    分布式的脑裂问题、羊群问题能讲讲吗?面试中经常问到

    1. 脑裂问题(split-brain),一般是因leader选举而导致某种情况下集群中出现了两个leader,比如说老的leader因为通讯或者其它故障未定时上报状态。一般会通过fencing的策略,来拒绝老的leader操作以避免数据不一,比如说HDFS中会利用epoch(可以简单理解为版本号)来避免老的leader向Journal Node中写入改动。
    2. 羊群效应(herd effect),第一次接触这个概念是在Zookeeper的leader选举中,当未能成为/election/路径下最小的瞬时节点时,这个时候就需要监听leader node对应的路径,但如果客户端同时监听的话,当leader node释放或者是挂掉的时候,多个客户端会同时收到通知,这个就称之为羊群效应。Zookeeper的改进方案是,未能成leader客户端,监听/election路径下比自己小的znode。

    我觉得不应该把 2PC 和 Paxos、raft 这些放一起说,它们本质上是不同的,共识只是 log replication的,它和 2PC 完全不一样

  • [ ] 01 | 拜占庭将军问题:有叛徒的情况下,如何才能达成共识?

  • [ ] 加餐 | 拜占庭将军问题:如何基于签名消息实现作战计划的一致性?

  • [x] 02 | CAP理论:分布式系统的PH试纸,用它来测酸碱度

  • [x] **03 | ACID理论:CAP的酸,追求一致性**

  • 分布式事务相关

  • [x] 04 | BASE理论:CAP的碱,追求可用性

  • 有这些方式能够尽可能地保证系统的基本可用:

  • [x] 05 | Paxos算法(一):如何在多个节点间确定某变量的值?

  • [x] 06 | Paxos算法(二):Multi-Paxos不是一个算法,而是统称

  • [x] 07 | Raft算法(一):如何选举领导者?

  • [x] 08 | Raft算法(二):如何复制日志?

  • [x] 09 | Raft算法(三):如何解决成员变更的问题?

  • [x] 10 | 一致哈希算法:如何分群,突破集群的“领导者”限制?

  • Raft 集群和一致性哈希之间的联系 + Raft 集群和分区问题

  • [x] 11 | Gossip协议:流言蜚语,原来也可以实现一致性

  • [x] 12 | Quorum NWR算法:想要灵活地自定义一致性,没问题!

  • [ ] 13 | PBFT算法:有人作恶,如何达成共识?