大连免费建站模板,网络工程专业毕业设计,电子商务网站怎么做数据库,建设一个微网站要花多少钱上一篇#xff1a;05-Zookeeper典型使用场景实战 一、为什么要看源码
提升技术功底#xff1a;学习源码里的优秀设计思想#xff0c;比如一些疑难问题的解决思路#xff0c;还有一些优秀的设计模式#xff0c;整体提升自己的技术功底深度掌握技术框架#xff1a;源码看多…上一篇05-Zookeeper典型使用场景实战 一、为什么要看源码
提升技术功底学习源码里的优秀设计思想比如一些疑难问题的解决思路还有一些优秀的设计模式整体提升自己的技术功底深度掌握技术框架源码看多了对于一个新技术或框架的掌握速度会有大幅提升看下框架demo大致就能知道底层的实现技术框架更新再快也不怕快速定位线上问题遇到线上问题特别是框架源码里的问题(比如bug)能够快速定位这就是相比其他没看过源码的人的优势对面试大有裨益面试一线互联网公司对于框架技术一般都会问到源码级别的实现知其然知其所以然对技术有追求的人必做之事使用了一个好的框架很想知道底层是如何实现的拥抱开源社区参与到开源项目的研发结识更多大牛积累更多优质人脉
二、看源码方法
先使用先看官方文档快速掌握框架的基本使用抓主线找一个demo入手顺藤摸瓜快速静态看一遍框架的主线源码画出源码主流程图切勿一开始就陷入源码的细枝末节否则会把自己绕晕凭经验猜画图做笔记总结框架的一些核心功能点从这些功能点入手深入到源码的细节边看源码边画源码走向图并对关键源码的理解做笔记把源码里的闪光点都记录下来后续借鉴到工作项目中理解能力强的可以直接看静态源码也可以边看源码边debug源码执行过程观察一些关键变量的值整合总结所有功能点的源码都分析完后回到主流程图再梳理一遍争取把自己画的所有图都在脑袋里做一个整合
三、从源码启动zookeeper
zookeeper源码下载地址
//选择分支3.5.8
https://github.com/apache/zookeeper.git 源码导入idea后org.apache.zookeeper.Version类会报错需要建一个辅助类
package org.apache.zookeeper.version;public interface Info {int MAJOR 1;int MINOR 0;int MICRO 0;String QUALIFIER null;int REVISION -1;String REVISION_HASH 1;String BUILD_DATE 2020-10-15;
}然后在根目录编译执行
mvn clean install -DskipTests开源项目找入口类一般都是从启动脚本去找可以从bin目录下的zkServer.sh或zkServer.cmd里找到启动主类运行即可
org.apache.zookeeper.server.quorum.QuorumPeerMain注意 将conf文件夹里的zoo_sample.cfg文件复制一份改名为zoo.cfg将zoo.cfg文件位置配置到启动参数里 启动之前需要先将zookeeper-server项目里pom.xml文件里依赖的包(除了jline)的scope为provided这一行全部注释掉 将conf文件夹里的log4j.properties文件复制一份到zookeeper-server项目的 \target\classes 目录下这样项目启动时才会打印日志
用客户端命令连接源码启动的server
bin/zkCli.sh -server 192.168.50.190:2181从源码里运行客户端(org.apache.zookeeper.ZooKeeperMain)注意需要加入启动参数见下图 四、从源码启动zookeeper集群
复制3个zoo.cfg文件修改对应集群配置并在data目录里分别建各自的myid文件填入机器id并创建三个不同配置的启动节点见下图
分别运行每个节点集群启动完毕
五、启动或leader宕机选举leader流程 六、leader选举多层队列架构
整个zookeeper选举底层可以分为选举应用层和消息传输层应用层有自己的队列统一接收和发送选票传输层也设计了自己的队列但是按发送的机器分了队列避免给每台机器发送消息时相互影响比如某台机器如果出问题发送不成功则不会影响对正常机器的消息发送。 七、Leader选举源码流程图 高清原图获取 链接https://pan.baidu.com/s/1_io3aTGIrswEtFSeYxSRHA?pwdy2yz 提取码y2yz
【送人玫瑰手留余香感谢你的点赞】 下一篇07-Zookeeper分布式一致性协议ZAB源码剖析