分布式系统之使用ZooKeeper的几种业务场景

本文介绍了分布式系统中常见的业务场景,包括Master选举、分布式锁等,并详细解释了如何利用ZooKeeper来实现这些功能。

分布式系统有几种常见的业务场景,比如说Master选举、分布式锁、分布式队列、分布式屏障等等。掌握这些算法来解决分布式系统功能中的问题显得尤为重要。接下来一一介绍这些场景。

Master选举

为了保证系统的高可用。我们常常会将一个工程代码集群部署。在这种情况下当我们需要定时处理一个非常耗时,耗CPU的运算业务算法时。我们不可能让集群中的每一个工程代码都运行一次该业务。这时我们就要在集群中的机器中选出一台机器来运行该业务。将结果计算出来后同步到其他机器上。选机器的算法我们常用Master选举算法。下面介绍基于ZooKeeper实现Master算法的思路。

1.所有客户端在ZooKeeper上创建/master_election/bingding临时节点。只有一个客户端能够创建这个临时节点。那么创建这个节点的客户端就成了Master。同时,其他没有ZooKeeper上成功创建节点的客户端。就在节点/master_election/上创建一个子节点变更Watchar用于监听当前Master机器是否存活。

2.当接受到ZooKeeper上子节点变更的Watcher。说明Master挂了。那么其余客户端重新执行1步骤。

上面算法就可以实现简单的Master选举了。

分布式锁

在分布式环境下单个JVM锁就显得无力了。因为在这种场景下计算单元分布到不同的实例。JVM只能控制同一个JVM的线程同步。接下来介绍基于Zookeeper实现分布式锁的功能。

排他锁实现思路

1.在需要获取排他锁时,所有客户端通过调用create()接口创建/exclusive_lock/lock节点。创建成功被认为获取锁成功,没有获取到锁的客户端在/exclusive_lock/上创建子节点变更的Watcher监听。以便实时监听到lock的变更情况。

2.当获取锁的客户端宕机临时节点自动移除或者正常执行完业务逻辑客户端主动删除临时节点,被认为是锁释放。同时其他客户端执行1的逻辑获取锁。

共享锁


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值