一、源码
1.1、源码下载
1.2、源码介绍
1.3、maven执行install
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.xerial.snappy</groupId>
<artifactId>snappy-java</artifactId>
<!--<scope>provided</scope>-->
</dependency>
复制
二、源码调试
2.1、解析参数
VM options:
-Dlog4j.configuration=file:conf\log4j.properties
Program arguments:
conf\zoo_sample.cfg
复制
记不记得我们在linux中安装zk的时候,做的一步操作是把zoo_sample.cfg复制一份改成zoo.cfg,然后我们就可以通过./zkServer.sh start启动zk了,如果不做这步操作,那启动的时候需要指定配置文件./zkServer.sh start ../conf/zoo_sample.cfg,为什么?我们去linux上看下zkServer.sh这个启动脚本里的内容
vi zkEnv.sh
# 心跳时间,用于配置服务器最小时间的单位,默认值3000ms,心跳检测时间通常是该单位的倍数。如客户端与服务端之间的会话超时时间在2tickTime~20tickTime之间
tickTime=2000
# 用于配置leader服务器等待Follewer服务器启动,并完成数据同步的时间,默认为10,表示10*tickTime
initLimit=10
# 用于配置leader服务器和Follewer服务器之间进行心跳检测的最大延时时间,默认为5,表示5*tickTime
syncLimit=5
# 用于配置zookeeper服务器存储快照文件(zookeeper 节点数据)的目录,无默认值
dataDir=conf/data
# 用于配置服务器存储事务日志文件的目录,有默认值dataDir,但是建议将两个目录分别配置,防止磁盘的并发读写,影响服务器性能。可将其配置在一个单独的磁盘上
#dataLogDir=
# 用于配置当前服务器对客户端暴露的端口,一般配置为2181,无默认值
clientPort=2182
# 从socket层面限制单个客户端和单台服务器之间的最大并发连接数,即以IP地址粒度来进行连接数的限制,如果为0,表示不作限制,默认为60
#maxClientCnxns=60
# 这个参数和autopurge.purgeInterval搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个
autopurge.snapRetainCount=3
# Purge task interval in hours
# 3.4.0及之后版本,ZK提供了自动清理事务日志和快照文件的功能,这个参数指定了清理频率,单位是小时,需要配置一个1或更大的整数,默认是0,表示不开启自动清理功能
autopurge.purgeInterval=1
复制
注:为了避开默认值的干扰,这里将端口修改为2182,证明配置加载正常
2.2、数据清理器DatadirCleanupManager
2.2.1、初始化一个DatadirCleanupManager
2.2.2、启动DatadirCleanupManager
这块就不细说了,很简单,就是创建这两个文件夹,然后校验下这两个文件夹有没有创建成功,有没有对这两个文件夹的写权限等,默认生成的文件夹名字是version-2,
可以上linux上看下这个文件夹里的内容(因为我的linux上的zk中有数据)
2.3、执行启动流程
2.3.1、分析单机模式的启动
if (config.getClientPortAddress() != null) {
cnxnFactory = ServerCnxnFactory.createFactory();
cnxnFactory.configure(config.getClientPortAddress(), config.getMaxClientCnxns(), config.getClientPortListenBacklog(), false);
cnxnFactory.startup(zkServer);
zkServer has been started. So we don't need to start it again in secureCnxnFactory.
needStartZKServer = false;
}
复制
2.3.2、分析集群模式的启动
文章转载自Java Miraculous,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
数据库国产化替代深化:DBA的机遇与挑战
代晓磊
1275次阅读
2025-04-27 16:53:22
2025年4月国产数据库中标情况一览:4个千万元级项目,GaussDB与OceanBase大放异彩!
通讯员
751次阅读
2025-04-30 15:24:06
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
617次阅读
2025-04-14 09:40:20
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
522次阅读
2025-04-17 17:02:24
一页概览:Oracle GoldenGate
甲骨文云技术
484次阅读
2025-04-30 12:17:56
GoldenDB数据库v7.2焕新发布,助力全行业数据库平滑替代
GoldenDB分布式数据库
475次阅读
2025-04-30 12:17:50
优炫数据库成功入围新疆维吾尔自治区行政事业单位数据库2025年框架协议采购!
优炫软件
364次阅读
2025-04-18 10:01:22
给准备学习国产数据库的朋友几点建议
白鳝的洞穴
337次阅读
2025-05-07 10:06:14
XCOPS广州站:从开源自研之争到AI驱动的下一代数据库架构探索
韩锋频道
297次阅读
2025-04-29 10:35:54
国产数据库图谱又上新|82篇精选内容全览达梦数据库
墨天轮编辑部
281次阅读
2025-04-23 12:04:21