zookeeper的实际应用场景案例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28893679/article/details/83785978

1、数据发布订阅/配置中心

1、原理:发布者将数据发布到zookeeper的节点上,订阅者获取节点上的数据,从而实现发布订阅的目的。实现配置信息的集中式管理和数据的动态更新
2、实现配置中心有两种模式:push (推送:服务器端推送)、pull(拉取:客户端主动拉取),客户端向服务端注册要关注的节点,一旦节点发生变化,服务端就会给客户端发送通知。
3、zookeeper采用的是推拉相结合的方式。 客户端向服务器端注册自己需要关注的节点。一旦节点数据发生变化,那么服务器端就会向客户端发送watcher事件通知。客户端收到通知后,主动到服务器端获取更新后的数据
4、注意点:
a.数据量比较小
b.数据内容在运行时会发生动态变更
c.集群中的各个机器共享配置在这里插入图片描述

2、负载均衡

请求/数据分摊多个计算机单元上
实现原理:
在zookeeper的根节点上,每个客户端都创建一个子节点,当请求过来的时候,通过负载均衡算法,路由到对应的子节点对应的客户端,从而实现负载均衡。
在这里插入图片描述

3、分布式锁

1、目的:使用分布式锁,主要为了解决分布式环境下,多个计算机单元对一个共享资源的竞争的关系。防止一个资源在同一时刻被多个计算机单元进行更改。

2、使用redis实现的原理:
在这里插入图片描述
在这里插入图片描述

3、使用数据库实现的原理:
创建一个表,通过索引唯一的方式—新增一个表的时候,将其中一个字段设置为唯一索引,当访问统一资源的时候,先insert一条数据,那么只有第一个插入成功的才认为获取到了锁,而其他插入如果出现唯一索引异常的,则等待,当处理完成以后,需要将该数据删除,以便后来的客户端能获取到锁。

4、使用zookeeper来实现的原理:
排他锁方式:
做一个节点Locks,在该节点下再创建一个Lock的临时节点。客户端在该Locks下中去创建Lock的临时节点。则同时只能有一个能创建成功。
在这里插入图片描述
共享锁方式:有序节点的顺序性
有序的临时节点,每个客户端写了节点后,因为会存在一个最小节点,只有最小节点有优先级获取数据。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_28893679/article/details/83785978