ToB企服应用市场:ToB评测及商务社交产业平台

标题: Day16_Zookeeper [打印本页]

作者: 去皮卡多    时间: 2024-10-11 15:17
标题: Day16_Zookeeper
Zookeeper

zookeeper和dubbo的关系

ZooKeeper注册中心:在Dubbo架构中,ZooKeeper作为注册中心,为Dubbo提供了服务注册和发现的功能,而Dubbo则利用这些功能实现了服务间的长途调用和通信。
Dubbo则担任高性能RPC(长途过程调用)框架的一个角色,Dubbo提供了长途过程调用、负载平衡和服务管理等核心能力。
Raft协议推举算法

  1. 启动了之后,一般来说,3台机器,每个人都会投票给自己,选举自己当选为leader,他对自己的投票会发给其他的机器。这样投票下来发现选不出来leader的
  2. Raft协议,如果一轮投票,发现大家没有选举出来一个leader,此时如何呢?大家都走一个随机时间的等待,timeout时间过后,再次发起第二轮选举。机器01选择休眠等待3秒钟,机器02选择休眠等待1.5秒钟,机器03选择休眠等待4秒钟
  3. 第二轮选举的时候,机器02先苏醒过来,发现进入了第二轮投票,他发现此时没有人发送选票给他,他就还是选举自己当做leader,发送给了机器01和机器03
  4. 机器01醒来收到选票结果发现已经有人投票给02了,它也投票给02;机器03醒来发现机器02都两个选票了,它也投票给机器02
  5. 大家发现选票都投完了,发现超过半数的人(全票)都投给了机器02,此时机器02当选为leader,Raft协议本质就是通过随机休眠时间保证说一定会在某一轮中投票出来一个人当选为leader
复制代码
Zookeeper的推举算法是什么?

答: Zookeeper使用的推举算法是基于Paxos协议的ZAB协议。在一个Zookeeper集群中,有一个Leader节点和多个Follower节点。Leader节点负责处理客户端的读写请求,Follower节点负责与Leader节点保持数据同等性。假如Leader节点故障,则集群会自动推举一个新的Leader节点。
我们不想要raft的就寝机制(这种太随机了,我们渴望存放数据最新的master作为controller),所以zk采取的是ZAB协议推举leader
ZAB协议推举模式:刚启动就给其他的节点去发送投票,每个人刚开始都是投票给他自己的,也会收到别人的投票,第一轮选票选不出controller;第二轮投票时,比较节点的id巨细,master集群总共部署了20台机器,此中就3台机器作为controller候选节点,3台机器启动就会发起推举的投票,优先会把id更大的节点推举为contorller(id越大,说明这个节点是后来才启动的,它启动时同步过来的数据是很新的,优先推举这个节点作为controller)。新的Leader节点会与其他Follower节点进行数据同步,在数据同步完成后,集群就可以开始对外提供服务了。
什么是ZAB协议?

ZAB协议,全称Zookeeper Atomic Broadcast(Zookeeper原子广播协议),是Zookeeper设计的一种支持瓦解恢复和原子广播的协议。集群间通过Zab协议(Zookeeper Atomic Broadcast)来保持数据的同等性;
Zab协议包罗两个阶段:Zab协议包罗两个阶段:leader election阶段和Atomic Brodcast阶段(推举模式和广播模式)。
a) 集群中将推举出一个leader,其他的机器则称为follower,全部的写操作都被传送给leader,并通过brodcast将全部的更新告诉给follower。
b) 当leader瓦解大概leader失去大多数的follower时,必要重新推举出一个新的leader,让全部的服务器都恢复到一个精确的状态。
c) 当leader被推举出来,且大多数服务器完成了 和leader的状态同步后,leadder election 的过程就竣事了,就将会进入到Atomic brodcast的过程。
d) Atomic Brodcast同步leader和follower之间的信息,保证leader和follower具有形同的系统状态。
ZAB协议推举模式:刚启动就给其他的节点去发送投票,每个人刚开始都是投票给他自己的,也会收到别人的投票,第一轮选票选不出controller;第二轮投票时,比较节点的id巨细,master集群总共部署了20台机器,此中就3台机器作为controller候选节点,3台机器启动就会发起推举的投票,优先会把id更大的节点推举为contorller(id越大,说明这个节点是后来才启动的,它启动时同步过来的数据是很新的,优先推举这个节点作为controller)。新的Leader节点会与其他Follower节点进行数据同步,在数据同步完成后,集群就可以开始对外提供服务了。
四种类型的数据节点 Znode


  1. import org.apache.zookeeper.CreateMode;  
  2. import org.apache.zookeeper.KeeperException;  
  3. import org.apache.zookeeper.ZooDefs;  
  4. import org.apache.zookeeper.ZooKeeper;  
  5. import org.apache.zookeeper.data.Stat;  
  6.   
  7. public class ZNodeExample {
  8.      
  9.     private static final String CONNECT_STRING = "localhost:2181"; // ZooKeeper 服务器地址  
  10.     private static final int SESSION_TIMEOUT = 30000; // 会话超时时间,单位毫秒  
  11.   
  12.     public static void main(String<
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4