建设银行江西分行官方网站,快消品网站建设,wordpress云采集,上海专业网站建设公司排名目录
一、ZooKeeper是什么
二、ZooKeeper的工作机制
三、ZooKeeper特点
四、ZooKeeper数据结构
五、ZooKeeper应用场景
5.1统一命名服务
5.2统一配置管理
5.3统一集群管理
5.4服务器动态上下线
5.5软负载均衡
六、ZooKeeper的选举机制
6.1第一次启动选举机制
6.2非…目录
一、ZooKeeper是什么
二、ZooKeeper的工作机制
三、ZooKeeper特点
四、ZooKeeper数据结构
五、ZooKeeper应用场景
5.1统一命名服务
5.2统一配置管理
5.3统一集群管理
5.4服务器动态上下线
5.5软负载均衡
六、ZooKeeper的选举机制
6.1第一次启动选举机制
6.2非第一次启动选举机制
七、zookeeper集群部署 一、ZooKeeper是什么
Zookeeper是一个开源的分布式的为分布式框架提供协调服务的Apache项目
二、ZooKeeper的工作机制
Zookeeper从设计模式角度来理解是一个基于观察者模式设计的分布式服务管理框架它负责存储和管理大家都关心的数据然后接受观察者的注册一旦这些数据的状态发生变化Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。也就是说
Zookeeper 注册中心文件系统 通知机制 工作机制 1、每个服务端上线时需要到zookeeper集群注册信息 2、客户端从zookeeper集群获取在线服务端信息列表并监听 3、服务端上线下线时zookeeper需要更新列表信息并通知客户端 4、客户端接收到通知重新获取zookeeper在线服务器列表 三、ZooKeeper特点
1Zookeeper一个领导者Leader多个跟随者Follower组成的集群 2Zookeeper集群中只要有半数以上节点存活Zookeeper集群就能正常服务所以Zookeeper适合安装奇数台服务器 3全局数据一致每个Server保存一份相同的数据副本Client无论连接到哪个Server数据都是一致的。 4更新请求顺序执行来自同一个Client的更新请求按其发送顺序依次执行即先进先出。 5数据更新原子性一次数据更新要么成功要么失败。 6实时性在一定时间范围内Client能读到最新数据。
四、ZooKeeper数据结构
ZooKeeper数据模型的结构与Linux文件系统很类似整体上可以看作是一棵树每个节点称做一个ZNode。每一个ZNode默认能够存储1MB的数据每个ZNode都可以通过其路径唯一标识。 五、ZooKeeper应用场景 提供的服务包括 统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等 5.1统一命名服务
在分布式环境下经常需要对应用/服务进行统一命名便于识别。例如IP不容易记住而域名容易记住。
5.2统一配置管理
1分布式环境下配置文件同步非常常见。一般要求一个集群中所有节点的配置信息是一致的比如Kafka集群。对配置文件修改后希望能够快速同步到各个节点上。 2配置管理可交由ZooKeeper实现。可将配置信息写入ZooKeeper上的一个Znode。各个客户端服务器监听这个Znode。一旦Znode中的数据被修改ZooKeeper将通知各个客户端服务器。
5.3统一集群管理
1分布式环境中实时掌握每个节点的状态是必要的。可根据节点实时状态做出一些调整。 2ZooKeeper可以实现实时监控节点状态变化。可将节点信息写入ZooKeeper上的一个ZNode。监听这个ZNode可获取它的实时状态变化。
5.4服务器动态上下线
客户端能实时洞察到服务器上下线的变化
5.5软负载均衡
在Zookeeper中记录每台服务器的访问数让访问数最少的服务器去处理最新的客户端请求这边最小连接调度算法嘛
六、ZooKeeper的选举机制
6.1第一次启动选举机制 1服务器1启动发起一次选举。服务器1投自己一票。此时服务器1票数一票不够半数以上
3票选举无法完成服务器1状态保持为LOOKING
2服务器2启动再发起一次选举。服务器1和2分别投自己一票并交换选票信息此时服务器1
发现服务器2的myid比自己目前投票推举的服务器1大更改选票为推举服务器2。此时服务器
1票数0票服务器2票数2票没有半数以上结果选举无法完成服务器12状态保持LOOKING
3服务器3启动发起一次选举。此时服务器1和2都会更改选票为服务器3
此次投票结果服务器1为0票服务器2为0票服务器3为3票。
此时服务器3的票数已经超过半数服务器3当选Leader。
服务器12更改状态为FOLLOWING服务器3更改状态为LEADING
4服务器4启动发起一次选举。此时服务器123已经不是LOOKING状态不会更改选票信息。
交换选票信息结果服务器3为3票服务器4为1票。此时服务器4服从多数更改选票信息为服务器3并更改状态为FOLLOWING
5服务器5启动同4一样当小弟 比较服务器的myid大小谁的myid越大则获取其他节点的选票当选票数量超过服务器节点数量的半数以后则当选leader其他节点为follower。即使有新的更大myid节点加入集群也不变此时比票数 1. 1服务器1启动后发起一次选举。 2服务器1投自己一票此时服务器1只有一票不够半数以上选举无法完成 3此时服务器1状态为Looking
------------------------------------------------
2. 1服务器2启动再发起一次选举。 2服务器1和2分别投服务器2一票服务器更改刚刚投自己的一票 3此时服务器1为0票服务器2为2票没有半数选举不成功 4此时服务器1和2状态为Looking
------------------------------------为什么1会投2因为服务器2的id比服务器1大所以服务器1会投服务器2
------------------------------------------------------
3. 1服务器3启动发起选举。 2服务器1和2会更改选票投给服务器3 3此时服务器3为3票以超过半数服务器3当选为领导者 4此时服务器1和2状态为跟随者服务器3为领导者
-------------------------------------------------------
4. 1之后服务器启动会发起选举 2虽然后面的服务器myid都比服务器3大 3但是此时服务器3已经是领导者了服务器123不会更改选票信息了 4之后的服务器都将是服务器3的跟随者 6.2非第一次启动选举机制
1.EPOCH大的直接胜出
2.EPOCH相同事务id大的胜出
3.事务id相同服务器id大的胜出
SID服务器ID。用来唯一标识一台ZooKeeper集群中的机器每台机器不能重复和myid一致。表示服务器的唯一标志id
ZXID事务ID。ZXID是一个事务ID用来标识一次服务器状态的变更。在某一时刻集群中的每台机器的ZXID值不一定完全一致这和ZooKeeper服务器对于客户端“更新请求”的处理逻辑速度有关。表示处理任务的数量
Epoch每个Leader任期的代号。没有Leader时同一轮投票过程中的逻辑时钟值是相同的。每投完一次票这个数据就会增加表示参与选举的次数
七、zookeeper集群部署