抚州地区哪家公司能提供专业静态网站定制服务?
摘要:抚州做网站的公司,静态网站末班,WordPress部署百度广告,婚嫁类网站ZAB是什么ZAB(Zookeeper Atomic Broadcast):
抚州做网站的公司,静态网站末班,WordPress部署百度广告,婚嫁类网站ZAB是什么ZAB#xff08;Zookeeper Atomic Broadcast#xff09;#xff1a;Zookeeper原子广播ZAB是为了保证Zookeeper数据一致性而产生的算法#xff08;指的是Zookeeper集群模式#xff09;。它不仅能解决正常情况下的数据一致性问题#xff0c;还可以保证主节点发生宕…ZAB是什么ZABZookeeper Atomic BroadcastZookeeper原子广播ZAB是为了保证Zookeeper数据一致性而产生的算法指的是Zookeeper集群模式。它不仅能解决正常情况下的数据一致性问题还可以保证主节点发生宕机后的数据一致性问题。Zookeeper集群模式Zookeeper集群模式为主从复制模型即有一个主节点其他的都为从节点。主、从节点在数据读写场景下满足以下三条规则1. 所有的数据更新操作都只能由主节点完成2. 主节点更新完数据后将副本发送给从节点进行更新3. 任何从节点都可进行数据的读操作。图1 Zookeeper主从复制模型图由图1可得Zookeeper有两种节点。1. 主节点也称Leader2. 从节点也称FollowerZookeeper启动时选取Leader讲选举前先讲一下Zookeeper的数据存储结构对理解下文有前置知识印象。图2 Zookeeper数据存储结构由图2可得Zookeeper的数据存储结构是一棵树更准确地说底层使用文件目录格式对数据进行存储同时Zookeeper将这种存储数据的节点称为Znode。Znode包含图中所指的四个部分1. data存储数据2. child存储所有的子节点引用3. ACL存储访问权限例如哪些IP可以访问该节点4. stat存储元数据SID、ZXID【epochcounter】等SID、ZXID在选举Leader中起决定性作用因此我详细解释一下它们是什么SIDZookeeper节点的标识符节点指的是服务器不是上面的Znode相当于数据库表的唯一IDZXID最新事务标识符值越大说明数据越新。它由两部分组成epoch指当前leader为第 ${epoch} 任counter每交互一条proposalcounter值就会1proposal可以理解成更新操作图3 初始的Zookeeper节点由图3可得初始Zookeeper集群有3个服务节点选举Leader过程如下Leader选举优先级epochcounterSID1. 节点与集群中的各个节点进行拉票操作此时节点处于Looking状态2. 投票以SID值大小为标准每个节点都会投票给SID最大的那个3. 当服务节点获得的票数超过集群节点数一半时Leader产生Leader节点状态变为Leading、Follower节点状态变为Following自此Leader的选举过程就结束了后面新加入的节点也只能作为Follower节点不会再次进行Leader选举除非Leader出现意外Zookeeper故障时选举Leader上一章了解了启动时Leader的选举过程。那么当集群中Leader出现问题时又该如何选举新的Leader呢讲选举新的Leader之前什么时候触发选举1. 心跳检测Leader会周期性的给每个Follower发送心跳机制。同时Follower在收到Leader心跳检测信息时会给予Leader一个回复。如果Leader此时收到的恢复少于集群节点的一半此时则会触发新的Leader选举为什么是少于一半就会触发因为成为Leader必须满足赞成票为集群节点的一半以上。少于一半有理由怀疑那些不回应的节点是不是重新拉帮派然后选举了一个新的Leader。2. proposal检测客户端发出的数据更新操作都会给到Leader去执行Leader更新数据且写入本地日志后会发送proposal给Follower其实就是数据副本叫Follower节点也更新数据Follower收到后会发送ACK给到Leader表示已经更新副本数据。Leader节点收到ACK报文超过集群节点一半时会通知Follower将proposal状态改为commit状态如果收到ACK报文少于集群节点一半会触发新的Leader选举。图4为正常情况下的proposal阶段图5为ACK回复报文少于集群节点一半的proposal阶段图4 正常的集群proposal阶段图5 非正常ACK情况下的集群proposal阶段了解了何时触发新的Leader选举之后接下来就是如何选举新的Leader过程。
