zab

Hello-Brand4 个月前
分布式·raft·cap·分布式算法·paxos·zab
架构与思维:4大主流分布式算法介绍(图文并茂、算法拆解)之前的文章中,我们介绍过分布式事务的基础知识,也了解了分布式场景下常见一致性问题和解决方案,对分布式锁和CAS模式有一定的了解,有兴趣的同学可以通过下面链接到作者的两篇相关文章。
coffee_babe4 个月前
java·分布式·一致性·共识算法·一致性算法·zab
分布式与一致性协议之ZAB协议(四)首先我们来看看ZooKeeper是如何实现成员身份的? 在ZooKeeper中,成员状态是在QuorumPeer.java中实现的,为枚举型变量
coffee_babe4 个月前
java·分布式·一致性·一致性算法·zab
分布式与一致性协议之ZAB协议(三)众所周知,系统在运行中不可避免会出现各种各样的问题,比如进程崩溃了、服务器死机了,这些问题会导致很严重的后果,让系统没办法继续运行。在ZAB协议中,写请求是必须在主节点上处理的,而且提案的广播和提交也是由主节点来完成的。既然主节点那么重要,如果它突然崩溃(宕机)了,该怎么办呢? 答案是选举出新的领导者(也就是新的主节点)。 在我看来,领导者选举关乎节点故障容错能力和集群可用性,是ZAB协议非常核心的设计之一。想象一下,如果没有领导者选举,主节点故障了,那么整个集群将无法写入,这将是极其严重的灾难性故障。理
coffee_babe4 个月前
java·分布式·一致性·一致性算法·zab
分布式与一致性协议之ZAB协议(八)相比写操作,读操作的处理要简单很多,因为接收到度请求的节点只需要查询本地数据,然后响应数据给客户端就可以了。读操作的核心流程如图所示。
coffee_babe4 个月前
java·分布式·一致性·一致性算法·zab
分布式与一致性协议之ZAB协议(七)你应该有这样的体会,如果你想了解一个网络服务,执行的第一个功能肯定是写操作,然后才会执行读操作。比如,你要了解ZooKeeper,那么肯定会在zkClient.sh命令行中执行写操作(比如create /geekbang 123)写入数据,然后再执行读操作(比如get /geekbang)查询数据。这样一来,你才会直观地理解ZooKeeper的使用方法。
coffee_babe4 个月前
java·分布式·一致性·共识算法·zab
分布式与一致性协议之ZAB协议(六)成员发现是通过跟随者和领导者交互来完成的,目标是确保大多数节点对领导者的关系没有异议,也就是确立领导者的领导地位。成员发现的实现流程如图所示。
coffee_babe4 个月前
java·分布式·一致性·共识算法·zab
分布式与一致性协议之ZAB协议(五)如果我们想把ZAB集群恢复到正常状态,那么新领导者就必须确立自己的领导关系,成为唯一有效的领导者,然后作为主节点"领导"各备份节点一起处理读写请求
coffee_babe4 个月前
java·分布式·一致性·一致性算法·zab
分布式与一致性协议之ZAB协议(二)如果用一句话解释ZAB协议到底是什么,我觉得它是能保证操作顺序性的、基于主备模式的原子广播协议。 接下来,还是以指令X、Y为例具体演示一下,帮助你更好地理解为什么ZAB协议能实现操作的顺序性(为了演示,我们假设节点A为主节点,节点B、C为备份节点)。 首先,在ZAB协议中,写操作必须在主节点(比如节点A)上执行。如果客户端访问的节点是备份节点(比如节点B),则备份节点会将写请求转发给主节点,如图所示。 接着,当主节点接收到写请求后,它会基于写请求中的指令(也就是X、Y)来创建一个提案(Proposal),