![](https://img-blog.csdnimg.cn/a65e9d2f280b47bd99d8f3156ab2be33.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ZooKeeper
文章平均质量分 86
ZooKeeper是一个集中的服务,用于维护配置信息、命名、提供分布式同步和提供组服务。
y_bccl27
这个作者很懒,什么都没留下…
展开
-
Zookeeper的介绍与集群搭建
Zookeeper从设计模式角度来看,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应,从而实现集群中类似Master/Slave管理模式(即主从管理模式)。6、znode可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个是Zookeeper的核心特性。除非有另外一个事务对其更改。原创 2022-09-30 16:40:22 · 789 阅读 · 0 评论 -
Zookeeper的实际使用
zookeeper客户端和服务器端会话的建立是一个异步的过程,也就是说在程序中,我们程序方法在处理完客户端初始化后立即返回(也就是说程序往下执行代码,这样,大多数情况下我们并没有真正构建好一个可用会话,在会话的生命周期处于"CONNECTING"时才算真正建立完毕,所以我们需要使用多线程中的工具类CountDownLatch)原创 2022-10-05 12:40:53 · 664 阅读 · 0 评论 -
Curator框架
为了更好的实现Java操作zookeeper服务器,后来出现Curator框架,非常的强大,目前已经是Apache顶级项目,里面提供了更多丰富的操作,例如session超时重连、主从选举、分布式计数器、分布式锁等等适用于各种复杂的zookeeper场景的API封装。原创 2022-10-05 17:13:59 · 1367 阅读 · 0 评论 -
ZooKeeper使用get命令无法获取节点版本信息
问题描述:在项目运行时需要给节点赋值,代码如下:Stat status = zkServer.getZookeeper().setData("/testnode", "xyz".getBytes(), 2);System.out.println(status.getVersion());由于版本号不对,因此在代码执行的时候控制台会报错使用get /testnode命令仅仅显示该节点的数据信息,没有显示版本信息解决方法:尝试使用 stat 命令查看版本信息stat /testn原创 2020-05-25 15:15:34 · 1494 阅读 · 3 评论 -
ZooKeeper实现分布式锁
以下订单为例,假设当前有10个库存,一次请求下订单(6个)的时候创建订单后去扣除库存速度变慢了,那么下一个请求过来的时候去查询库存就发现库存还是10个,然后也会去执行创建订单和扣除库存这么一个操作,最终两个请求都成功了,库存变为-2,和实际生活不一致,这个时候就需要引入分布式锁。监听子节点是否已被移除,如果是的话,则触发同步计数器(countdownlatch)的自减操作,当countdownlacth的值为0的时候,前面阻塞的线程就可以继续往下执行了,即分布式的请求可以执行了。...原创 2020-05-27 12:35:29 · 598 阅读 · 0 评论