3-Zookeeper使用场景
2021-06-13 21:32:00 0 举报
AI智能生成
Zookooper使用场景
作者其他创作
大纲/内容
集群模式
三种节点
<ul><li>Leader:处理所有<b><font color="#c41230">写请求</font></b>,可以<font color="#f68b1f">读请求</font>,<b><font color="#c41230">只有一个</font></b></li></ul>
<ul><li>Follower:只处理<b><font color="#c41230">读请求</font></b>,宕机<b><font color="#c41230">参与选举</font></b></li></ul>
looking状态:Leader宕机,Follower节点变为Look参与选举
<ul><li>Observer:只处理<font color="#c41230"><b>读请求</b></font></li></ul>
<b><font color="#c41230">leader选举</font></b>
选票格式(<b><font color="#c41230">优先比较zxid</font></b>)
vote(myid,zxid);myid为Follower<font color="#c41230">节点序号</font>(配置文件中),zxid为<font color="#c41230">最大事务id</font><br>
两种选举模式(假设5台机器:server1、2、3、4、5)
启动选举(myid)
1、myid = 1服务启动,<font color="#c41230">给自己投一票</font>;其他服务未启动,处于looking选举状态<br>
2、myid= 2服务启动,<font color="#c41230">给自己投一票</font>;比较myid=1;<font color="#c41230">myid=2胜出</font>
3、myid =3 服务启动,比较myid=2;myid =3 胜出,<b><font color="#c41230">此时过半</font></b>,myid=3成为leader
4、myid = 4或5,直接成为follower
宕机选举(zxid)
1、server3宕机;剩余server1:zxid = 100 、server2:zxid = 110、server4:zxid =120、server5:zxid=130
2、server1,2,4,5,<font color="#c41230">依次比较zxid</font>;当server4胜出,<font color="#c41230">此时过半</font>,成为leader<br>
3、server5直接成为flowwer
选举多层队列架构
分为选举<font color="#c41230">应用层和消息传输层</font>,应用层有自己的队列统一接收和发送选票,传输层也设计了自己的队列,但 是<font color="#c41230">按发送的机器分了队列</font>,避免给每台机器发送消息时相互影响,避免<font color="#f68b1f">某台机器如果出问题发送不成功则不会影响对正常机器的消息发 送</font>。
使用场景
1、<b><font color="#c41230">分布式锁</font></b>
非公平锁
<font color="#f68b1f">羊群效应(</font><font color="#c41230">并发高、效率低</font><font color="#f68b1f">)</font>:所有连接监听同一节点,当有节点删除,这时所有连接再次并发竞争<br>
公平锁
原理
1、请求进来,直接在/lock下创建一个<font color="#f15a23">临时顺序节点</font><br>
2、判断是否节点中的<b><font color="#c41230">最小</font></b>顺序节点<br>
是:获取锁<br>
否:对前一个节点监听
3、<font color="#c41230">获取锁,处理业务;释放锁,delete节点</font>;后续节点监听到,重复2步骤<br>
读写锁(共享锁)
原理
1、请求进来,直接在/lock下创建一个<font color="#f68b1f">临时顺序节点;</font><font color="#c41230">读读不加锁</font>
2、所有的<font color="#f68b1f">读请求</font>,监听<b><font color="#c41230">最近的写请求</font></b>;等待写请求,写完在读
3、所有的<font color="#f68b1f">写请求</font>,监听<b><font color="#c41230">上一个请求(读、写)请求</font></b>,等该请求执行完;再进行写
2、分布式注册中心
3、分布式配置中心
4、分布式队列
5、集群选举
6、分布式屏障
7、发布、订阅
0 条评论
下一页