交流
商城
MCN
登入
注册
首页
提问
分享
讨论
建议
公告
动态
发表新帖
发表新帖
第7 章:集群启动
分享
未结
0
926
李延
LV6
2021-09-12
悬赏:20积分
# 1. 算法 zookeeper集群采用的是paxos算法进行选主,zookeeper集群节点主要分为以下几种角色: - leader :客户端的写请求一定会到这个节点,然后这个节点会同步到follower节点 - follower:客户端的读请求会经过一定的算法分部到不同的flower节点,如果leader节点挂掉,follower会参与投票选举出新的leader - observer:observer不参与投票,只接收投票结果 ## 1.1 选举过程 选举过程中,总是优先让myid最大的节点作为注解点 1. 首先每个会先投自己一票做为临时主节点。 2. 在投完自己后会将结果全部广播给其他节点,告诉他们。我投了xxx做为主节点。 3. 其他节点接受到广播后,先检查myid是否比自己选的主节点id大,如果没有自己的大,则拒接它的选举,告诉它自己这边有更大的。让它投这个节点。 4. 在上一步如果myid比自己的大,则与自己投了的主节点,进行比较:peerEpoch、zxid、myid 三个数值一次比较。 5. 如果新的myid适合做为主节点,则更新自己的投票为新的节点,并将结果广播出去。 6. 最终选票超过一半的节点为主节点,其他节点为从节点。 # 2.源码解析 ## 2.1 整体流程   ## 2.2 主要接口与组件 FastLeaderElection 选举类,投票结果的保存与投票结算过程都在当前这个类中。 子类: WorkerSender 投票类 WOrkerReceiver 选票接收类 在FastLeaderElection启动时,会同时开启两个线程WorkerSender与WOrkerReceiver。分别接收和发送选票。 QuorumPeer 子类: Listener 监听器,开启3888端口,与其他节点进行通信 SendWOrkerMap 每有一个与其他节点的连接,都会维护一组:SendWorker和recvWorker 分别负责与该节点数据的接收与发送
回帖
消灭零回复
提交回复
热议榜
java 相关知识分享
8
好的程序员与不好的程序员
6
写给工程师的十条精进原则
5
spring boot以jar包运行配置的logback日志文件没生成
5
一步一步分析SpringBoot启动源码(一)
5
MockMvc测试
5
【吐槽向】是不是有个吐槽的板块比较好玩
4
logstash jdbc同步mysql多表数据到elasticsearch
3
IntelliJ IDEA 优质License Server
3
.gitignore忽略规则
3
SpringBoot启动源码分析
3
一步一步分析SpringBoot启动源码(三)
3
2
一步一步分析SpringBoot启动源码(二)
2
积分不够将无法发表新帖
2
官方产品
Meta-Boot - 基于MCN
MCN - 快速构建SpringBoot应用
微信扫码关注公众号