zookeeper集群模式
白之狐
这个作者很懒,什么都没留下…
展开
-
zookeeper集群模式(十二)zookeeper的followLeader流程
followLeader流程Leader选举出来之后,非Leader的zookeeper服务会创建一个Follower实例,然后调用followLeader()方法进行followLeader流程,接下来看一下followLeader()方法: void followLeader() throws InterruptedException { self.end_fle...原创 2019-07-31 18:02:13 · 1985 阅读 · 0 评论 -
zookeeper集群模式(十一)zookeeper之Leader与Learner网络交互之LearnerHandler
LearnerCnxAcceptor这个是Leader的一个内部类,Leader是通过它来与Learner建立连接的,接下来看看这个类: class LearnerCnxAcceptor extends ZooKeeperCriticalThread { private volatile boolean stop = false; public Le...原创 2019-07-26 19:13:14 · 2108 阅读 · 0 评论 -
zookeeper集群模式(十)zookeeper的lead流程
lead流程Leader选举出来之后,会创建一个Leader实例,然后调用lead()方法进行lead流程,接下来看一下lead()方法: void lead() throws IOException, InterruptedException { self.end_fle = Time.currentElapsedTime(); long electio...原创 2019-07-05 18:58:13 · 2365 阅读 · 0 评论 -
zookeeper集群模式(九)zookeeper的Leader选举之FastLeaderElection
基于TCP实现的Leader选举:FastLeaderElection从3.4.0版本开始,zookeeper官方就只推荐FastLeaderElection用作Leader选举的唯一方式了,因此对于Leader选举就只讲解这个类的一些核心方法和内部类.Notification static public class Notification { /* ...原创 2019-06-26 14:24:45 · 467 阅读 · 0 评论 -
zookeeper集群模式(八)zookeeper的Leader选举与事务投票之SyncedLearnerTracker与Proposal
投票统计器:SyncedLearnerTracker这个类的主要作用是为本轮选举或事务投票提供一些统计性的功能,如下:1.添加投票验证器以及初始化ackset,ackset是一个zookeeper服务发送ack应答列表2.添加ack应答到相应的列表中3.验证当前缓存的投票验证器中是否存在指定serverId的参与投票角色4.检验是否通过本轮选举或事务投票提案:Proposal ...原创 2019-06-26 14:23:59 · 480 阅读 · 0 评论 -
zookeeper集群模式(七)zookeeper的Leader选举与事务投票过半策略之QuorumHierarchical
基于权重实现的投票验证器:QuorumHierarchical上篇文章解析了基于机器数量实现的投票验证器,基于权重的有一个优点,就是可以让部署在性能更好的机器、网络更好的机房等能提供更稳定、更优质的zookeeper服务拥用更大的投票权.官方给出的一份权重配置:group.1=1:2:3group.2=4:5:6group.3=7:8:9weight.1=1weight.2=1...原创 2019-06-26 14:23:15 · 452 阅读 · 0 评论 -
zookeeper集群模式(六)zookeeper的Leader选举与事务投票过半策略之QuorumMaj
投票验证器QuorumVerifier投票验证器承担了事务投票、Leader选举等过程中是否保证过半的责任,接口结构如下:public interface QuorumVerifier { long getWeight(long id); boolean containsQuorum(Set<Long> set); long getVersion();...原创 2019-06-26 14:22:30 · 958 阅读 · 0 评论 -
zookeeper集群模式(五)zookeeper的Leader选举之QuorumPeer
QuorumPeer这个类就是zookeeper的Leader选举的启动类,负责创建选举算法,zk数据恢复,启动leader选举等zookeeper的服务器状态: public enum ServerState { LOOKING, FOLLOWING, LEADING, OBSERVING; }1.LOOKING状态:这个状态表示当前服务器还未选举出L...原创 2019-06-26 14:21:46 · 1312 阅读 · 0 评论 -
zookeeper集群模式(四)zookeeper进行leader选举跟Follower之间网络交互之QuorumCnxManager
QuorumCnxManager之前提到在QuorumPeer启动的时候会进行Leader选举的准备工作,主要实现方法是startLeaderElection():startLeaderElection() synchronized public void startLeaderElection() { try { if (getPeerSt...原创 2019-06-26 14:20:38 · 1393 阅读 · 0 评论 -
zookeeper集群模式(三)zookeeper数据库ZKDataBase的加载
QuorumPeer之重写继承自Thread之后的start()方法 @Override public synchronized void start() { if (!getView().containsKey(myid)) { throw new RuntimeException("My id " + myid + " not in ...原创 2019-06-26 14:19:36 · 1029 阅读 · 1 评论 -
zookeeper集群模式(二)zookeeper配置文件的解析
QuorumPeerConfig上文中说到initializeAndRun(String[] args)会进行zookeeper配置文件的解析,其实这个解析就是通过QuorumPeerConfig的parse(String path)这个方法来进行的,zookeeper默认path是/config/zoo.cfg,如下: public void parse(String path) ...原创 2019-06-26 14:18:27 · 1853 阅读 · 0 评论 -
zookeeper集群模式(一)zookeeper集群模式的启动
QuorumPeerMain这是zookeeper服务的启动类,它提供了一个main()方法用来启动zookeeper服务,如下: public static void main(String[] args) { QuorumPeerMain main = new QuorumPeerMain(); try { main.ini...原创 2019-06-26 14:16:40 · 780 阅读 · 0 评论 -
zookeeper集群模式(十三)zookeeper的observeLeader流程
observeLeader()流程Leader选举出来之后,处于OBSERVING状态的zookeeper服务会创建一个Observer实例,然后调用observeLeader()方法进行observeLeader流程,如下: void observeLeader() throws Exception { zk.registerJMX(new ObserverBean...原创 2019-08-13 15:26:16 · 730 阅读 · 1 评论