ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

zookeeper总结

2022-08-22 13:01:53  阅读:215  来源: 互联网

标签:总结 zk zookeeper leader soft 节点 分布式


zk是分布式协调服务。架构角色,分为leader follower observer。follower参与选举。observer提供读操作。

特点:
1、高可用,主从架构,官方测试主节点挂了,200ms完成恢复,也就是主节点选举对外提供服务。
2、高并发,三个节点的主从结果可以支持10万左右的读。
3、保证顺序一致性:单主节点写入,保证客户端更新将按照发送顺序处理
4、原子性:更新成功或者失败,没有部分结果。
5、单系统映像:无论服务链接到哪个服务器,客户端都将看到相同访问视图。
6、可靠性:持久性。
7、及时性:系统的客户视图保证特定时间范围内是最新的(最终一致性)。

临时节点,天然可做分布式锁应用。session完成锁即是否。

用于:
1、分布式锁,基于临时节点功能。锁依托一个父节点且具备-s 代表父节点下可以有多把锁,次锁可以用于队列式或者事务的锁。
2、HA(高可用)选主功能。
3、发布与订阅功能。

安装步骤:
准备多台linux虚拟机
1、安装jdk,配置环境变量
2、下载 zookeeper https://zookeeper.apache.org/
3、tar xf zookeeper.*.tar.gz
4、mkdir /opt/soft
5、mv zookeeper /opt/soft
6、vi /etc/profile
配置环境变量:
export ZOOKEEPER_HOME=/opt/soft/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin

7、cd zookeeper/conf
8、cp zoo.sem*.cfg zoo.cfg
9、vi zoo.cfg
dataDir=
server01=node01:2888:3888

10、mkdir -p /var/soft/zk
11、echo 1 > /var/soft/zk/myid
12、cd /opt && scp -r ./soft/ node02.pwd
13、node02~node04修改创建myid
14、启动验证,顺序1,2,3,4
15、zkServer.sh start-foreground

客户端链接zkCli.sh
help
create /node1
create -s /node2

要说zk,一致性算法需要先说Paxos算法。
Paxos是基于消息传递的一致性算法。Paxos被认为目前为止唯一的分布式一致性算法。其他算法都是对Paxos算法的改进或者简化。
Paxos总结:数据一致性,过半通过,两阶段提交。

ZAB协议:作用在可用状态有leader时。原子广播协议。

步骤:
1、客户端调用create /ooxx 创建节点
2、服务端主节点或者从节点接收到请求,如果是从节点转发至主节点。
3、主节点发起广播,进行日志纪录
4、从节点返回结果
5、主节点判断过半返回客户端结果。

leader服务器挂掉,选举过程。
发生场景:
1、第一次启动
2、集群重启,leade挂掉。

zk服务器节点会有两个id ① myid ② Zxid(事务id)
新leader被选举
某节点发起投票,都会触发准leader发起自己的投票
推选制,先比较Zxid,如果zxid相同,再比较myid。

分布式锁实现
zk实现分布式,需要解决的问题
1、争抢锁,同一时刻只有一个线程获取到锁。
2、获取锁的线程出问题,因为临时节点(session),伴随着节点的消失锁进而消失,不会存在死锁的问题。
3、获取锁的线程成功,如何释放锁。
4、释放锁,删除,其他线程如何知道。
4-1:主动轮询,心跳,存在问题,延迟,压力。
4-2:watch:解决延迟问题,弊端:压力。
4-3:sequence+watch:watch前一个,最小的获取锁。最小的释放锁,zk只有第二个发事件回调。

分布式锁

标签:总结,zk,zookeeper,leader,soft,节点,分布式
来源: https://www.cnblogs.com/stubborn-dude/p/16319649.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有