ZK java客户端
zk官方客户端没有和服务端分离,同一个jar文件,我们直接引入zk的maven即可。注意版本匹配兼容
Curator
curator java语言编程的zk客户端框架,curator项目是现在zk客户端中使用最多。
将我们平时使用的zk服务开发进行了封装,例如leader选举, 分布式计数器,分布式锁、减少开发时间。
ZK集群
leader 处理写请求 和读请求
follower 处理读请求
observer 读,不参与选举
zk使用场景
1. 非公平
并发严重情况下,性能下降严重。所有节点对同一节点进行监听,当服务器检测到删除操作,通知所有连接。
再次并发竞争,这就是羊群效应
2. /公平锁
请求进来,默认创建一个临时顺序节点, 判断是不是lock节点下,最小的节点。 yes。获取锁,no,监控等待.
循环操作上述流程
3. 共享锁
并不是所有请求都需要加锁。 读读请求就不需要。 读写需要加读锁,通知其他线程不能进行修改, 直至读完成。写也不允许,加写锁,其他线程不能进行读和写操作。
4. leader在分布式场景中的应用
5 .spring cloud zk 注册中心实战
当服务较少时,可以直接通过点对点进行请求。请求过多扩展服务数量,通过nginx进行转发
如果服务过多
引入zk,监控各个服务的状态