Zookeeper的启动入口在org.apache.zookeeper.server.quorum.QuorumPeerMain。
在这个类的main方法里进入了zookeeper的启动过程,首先我们会解析配置文件,即zoo.cfg和myid。
这样我们就知道了dataDir和dataLogDir指向哪儿了,然后就可以启动日志清理任务了(如果配置了的话)。
DatadirCleanupManager purgeMgr = new DatadirCleanupManager(config .getDataDir(), config.getDataLogDir(), config .getSnapRetainCount(), config.getPurgeInterval()); purgeMgr.start();
接下来会初始化ServerCnxnFactory,这个是用来接收来自客户端的连接的,也就是这里启动的是一个tcp server。在Zookeeper里提供两种tcp server的实现,一个是使用java原生NIO的方式,另外一个是使用Netty。默认是java nio的方式,一个典型的Reactor模型。因为java nio编程并不是本文的重点,所以在这里就只是简单的介绍一下。
//首先根据配置创建对应factory的实例:NIOServerCnxnFactory 或者 NettyServerCnxnFactory
ServerCnxnFactory cnxnFactory = ServerCnxnFactory.createFactory();
//初始化配置
cnxnFactory.configure(config.getClientPortAddress(),config.getMaxClientCnxns());
创建几个SelectorThread处理具体的数据读取和写出。
先是创建ServerSocketChannel,bind等
this.ss = ServerSocketChannel.open(); ss.socket().setReuseAddress(true); ss.socket().bind(addr); ss.configureBlocking(false);
然后创建一个AcceptThread线程来接收客户端的连接。
这一部分就是处理客户端请求的模块了,如果遇到有客户端请求的问题可以看看这部分。
接下来就进入初始化的主要部分了,首先会创建一个QuorumPeer实例,这个类就是表示zookeeper集群中的一个节点。初始化QuorumPeer的时候有这么几个关键点:
1. 初始化FileTxnSnapLog,这个类主要管理Zookeeper中的操作日志(WAL)和snapshot。
2. 初始化ZKDatabase,这个类就是Zookeeper的目录结构在内存中的表示,所有的操作最后都会映射到这个类上面来。
3. 初始化决议validator(QuorumVerifier->QuorumMaj) (其实这一步,是在配置)。这一步是从zoo.cfg的server.n这一部分初始化出集群的成员出来,有哪些需要参与投票(follower),有哪些只是observer。还有决定half是多少等,这些都是zookeeper的核心。在这一步,对于每个节点会初始化一个QuorumServer对象,并且放到allMembers,votingMembers,observingMembers这几个map里。而且这里也对参与者的个数进行了一些判断。
4. leader选举 这一步非常重要,也是zookeeper里最复杂而最精华的一部分。
相关推荐
4. **启动Zookeeper服务**:在安装完成后,可以通过执行以下命令启动Zookeeper服务: ``` % $ZOOKEEPER_HOME/bin/zkServer.sh start ``` #### Zookeeper核心概念 1. **Zookeeper服务**:Zookeeper提供了一种...
通常情况下,HBase 可以与独立的 ZooKeeper 服务进行集成,但为了简化部署过程,特别是对于小型测试环境或开发环境,我们可以选择配置 HBase 内置的 ZooKeeper。 #### 二、配置步骤详解 ##### 1. 准备阶段 首先...
当集群中半数以上的Zookeeper实例启动时,leader就会被确定。后续新增的Zookeeper实例会默认变成follower。 Zookeeper数据同步机制是指Zookeeper集群中的数据同步机制。Zookeeper集群中的数据会根据leader中的数据...
### Zookeeper 数据迁移从单例到集群 Linux 命令过程详解 #### 一、概述 Zookeeper 是一个分布式协调服务框架,它为分布式应用程序提供了一套完整的协调服务功能,如配置维护、命名服务、集群管理等。在实际生产...
本文介绍了 ZooKeeper 在 MAC OSX 中的安装和启动过程。 ZooKeeper 是一个功能强大且高效的分布式协调服务,能够满足大规模分布式系统的需求。用户可以根据需要安装和配置 ZooKeeper,以满足不同的业务需求。
1. `dataDir`: 指定Zookeeper保存数据的目录,例如"data",这个目录会在Zookeeper启动时创建,用于存储快照和事务日志。 2. `clientPort`: 设置Zookeeper服务器监听客户端连接的端口,默认为2181。 四、初始化数据...
在运维和开发过程中,为了更方便地管理和监控Zookeeper,出现了许多可视化工具。这些工具通过图形用户界面(GUI)提供对Zookeeper状态的直观展示,帮助用户查看节点信息、操作数据、监控集群状态以及进行故障排查。 ...
### Zookeeper伪分布式集群环境搭建过程 #### 一、Zookeeper简介 ZooKeeper是一个分布式的、开源的应用程序协调服务,被广泛应用于多种分布式场景之中,例如配置维护、域名服务、分布式同步、组服务等。它能够提供...
会话是客户端与 Zookeeper 服务器之间的一次交互过程,如果服务器与客户端的连接断开,临时节点将被自动删除。Watcher 是一种事件监听机制,可以注册在 Znode 上,当 Znode 发生变化时,Watcher 将接收到通知。 在 ...
通过对Zookeeper集群从3.3.4版本升级至3.4.8版本的过程进行详细的规划与实施,不仅可以提高系统的性能与稳定性,还能够更好地支持业务发展。在整个升级过程中,需要注意备份、测试验证、逐步割接等关键环节,以确保...
"解压即用"提示用户,只需解压缩文件,就可以开始使用Zookeeper的服务,简化了部署过程。 标签中的"zookeeper"和"linux"进一步强调了这个软件包与Zookeeper项目以及Linux平台的关系,表明这是一款在Linux环境下运行...
4. **启动ZooKeeper**:在`bin`目录下,使用`./zkServer.sh start`命令启动ZooKeeper服务器。 5. **检查状态**:通过`./zkServer.sh status`命令确认ZooKeeper是否已成功启动。 6. **停止ZooKeeper**:当不再需要...
总的来说,ZooInspector作为Zookeeper的客户端工具,极大地简化了Zookeeper的管理和调试过程,提升了开发和运维效率。通过深入理解和熟练使用ZooInspector,我们可以更好地驾驭Zookeeper,为分布式系统构建坚实的...
通过上述步骤,我们完成了在 CentOS 7.0 上安装和配置 Zookeeper 的过程。Zookeeper 的安装相对简单,但配置文件的设置对于保证其稳定运行非常重要。此外,合理的环境变量设置也是提高使用便捷性的关键。希望这些...
通常,可以在Zookeeper的bin目录下找到启动脚本,例如`zkServer.sh start`。 6. **验证集群状态** 使用`zkServer.sh status`命令检查Zookeeper服务的状态,确认集群正常运行。 通过以上步骤,可以在Linux环境下...
在Linux集群环境中搭建Zookeeper集群是一个涉及到多台服务器间协调工作的复杂过程,需要对Zookeeper的工作原理和配置有深入的了解。本篇详细阐述了从下载安装到集群配置的全过程。 首先,Zookeeper集群部署的前提...
此外,Zookeeper的监控和日志管理也是运维过程中不可忽视的部分,通过`jmxremote`可以远程监控Zookeeper的状态,而日志文件则可以帮助我们排查问题和优化性能。 总结来说,Zookeeper 3.4.6是分布式环境中的重要基石...
启动 Zookeeper 需要在每个节点上执行以下命令: * zkserver.sh start Zookeeper 状态 可以使用以下命令查看 Zookeeper 的状态: * zkserver.sh status Zookeeper 的架构 Zookeeper 采用主从架构,一主多从,...
描述中的信息进一步说明了这个客户端工具的便捷性:它是一个桌面应用,用户可以直接运行,而不需要复杂的安装过程。压缩包内还附带了详细的使用步骤,这有助于新用户快速上手并了解如何操作这个工具。由于依赖JDK...