zookeeper的应用

目录

1、服务器的动态列表实现思路

2、分布式锁


1、服务器的动态列表实现思路

当客户端访问集 群服务的时候,需要有一个服务器列表,此时如果集群中追加了新的主机,或者有主机宕机,则列表要动态且及时的进行处理;此时就可以使用ZK,在ZK中有一个心跳机制,描述的是这个主机是否存活的主要依据

代码实现原理:在服务启动时通过监听或其他形式在程序启动时判断是否存在父节点,没有则创建父节点,有则创建临时子节点,这样的话每次启动新实例都会添加到ZK中,同样由于是临时节点,如果服务器挂掉则会被删除;

2、分布式锁

        多个服务想要访问同一个资源的时候就需要分布式锁来解决;实现分布式锁可以使用协调组件来完成-ZK,可以使用临时的序列化节点来实现

JKD1.5提供的类CountDownLatch

 多台主机或者集群在访问同一个资源的时候,连接ZK并创建临时序列化节点,在创建节点时,节点名称需要做下标记,标记这个节点是哪个线程/客户端/主机的节点;然后获取该父节点下所有的子节点,并排序,取出序列化值最小值的节点,并判断当前线程是否和该最小值相等,如果相等则执行业务代码并删除掉该临时节点;如果不相等则表示该线程不是最先要执行该资源,(等待最小值的线程执行)循环调用该方法直到相等并执行完后关闭节点;

        相当于给执行操作的线程创建一个队列,排队执行,先来的先执行;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值