ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

zookeeper使用场景

2021-07-17 20:59:06  阅读:183  来源: 互联网

标签:场景 zookeeper curator 节点 线程 使用 监听 客户端


zookeeper 分布式锁

非公平锁
zookeeper中节点一但创建再去创建就会报错 当一个节点下的子节点被修改或者删除了就会通知监听这个节点的客户端 利用这个机制 创建一个节点 当一个线程把节点创建好了 就表示它得到锁了 可以为所欲为 而其它的线程都要等着它把这个节点给删了 只要它一删除其他的节点就会收到监听消息 然后其它的线程重新争抢锁 然后再循环 这样的实现方式叫做非公平锁 这样性能会很差 就比如 有1000个线程 其中有一个拿到了锁 另外999个线程都要等待它然后999个线程抢锁释放锁 想想就很慢

公平锁
请求进来之后直接创建一个临时顺序节点 判断自己是不是 最小的节点 是最小的节点就获取锁 不是就监听它前一个节点 当第一个节点释放了锁它后一个节点会收到第一个节点被删除的监听信息 然后让它 判断自己是不是最小的节点如果是 就获取锁 如果不是就监听它前一个节点 公平锁避免了并发竞争锁 缓解服务端的压力 让每个线程派对加锁

Leader Election

有好几个服务同时往zookeeper放数据 但是数据都是一样的 只要有一个去zookeeper放数据就可以 为了避免这种浪费可以使用Leader Election 它会给我们选出一个客户端去放数据 其实就是加了一个分布式锁 让别的客户端进入阻塞状态

以上使用的curator客户端

http://curator.apache.org/getting-started.html  // curator官网

zookeeper与数据 数据不一致问题

zookeeper也是能当缓存来用 当缓存就会有与数据读写不一致问题

也是使用分布式锁解决 这里使用读写锁(共享锁) 当读的请求就放行 写的请求就阻塞住 而zookeeper的curator客户端给我实现了这种锁公平锁也实现了
读写锁大体流程 当是一个读请求不用管 当遇到写请求 它后面的请求都会阻塞

zookeeper 注册中心

注册中心 顾名思义 就是让众多服务都在zookeeper中进行注册 注册就是把一些服务的信息比如ip、端口等 这样有服务需要这种数据可以直接再zookeeper上面获取 当一个模块需要另一个模块中的数据(ip、端口) 只有两个模块写在配置文件中就可以 但是如果有多个模块互相需要对方的数据 再写道配置文件中就很难维护了 这样我们就可以写到zookeeper中 利用它的节点跟监听机制 当有新服务启动就在被监听的节点下创建一个节点通知它们获取数据

标签:场景,zookeeper,curator,节点,线程,使用,监听,客户端
来源: https://blog.csdn.net/qq_36301061/article/details/118862372

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有