前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zookeeper应用场景

Zookeeper应用场景

作者头像
BUG弄潮儿
发布2022-06-30 15:04:24
7160
发布2022-06-30 15:04:24
举报
文章被收录于专栏:JAVA乐园

Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,主要是用来解决分布式应用中经常遇到的一些数据管理问题。

如:集群管理、统一命名服务、分布式配置管理、分布式消息队列、分布 式锁、分布式通知协调等。

越来越多的分布式计算开始强依赖ZK,比如Storm、Hbase

Zookeeper对分布式开发带来很多便利,用ZK的独有特性巧妙地解决了很多难题; 很多分布式技术用到Zookeeper或多或少特性,尤其是新生代分布式技术几乎都会依赖Zookeeper特性,如Hbase、火爆的Storm。

zookeeper名字空间由节点znode构成,其组织方式类似文件系统,其中各个节点相当于目录和文件,通过路径作为唯一标识。与文件系统不同的是,每个节点具有与之对应的数据内容,同时也可以具有子节点。

zookeeper用于存储协调数据,如状态、配置、位置等信息,每个节点存储的数据量很小,KB级别。

节点维护一个状态stat结构(包括数据变化的版本号、ACL变化、时间戳),以允许缓存验证与协调更新。每当节点数据内容改变,多一个版本号,类似HBase。客户端获取数据的同时也会获取数据版本号。节点的数据内容以原子方式读写。

节点具有一个访问控制列表(AccessControl List - ACL)来约束访问操作,即具有权限控制。

Watches:Zookeeper对Node的增、删、改、查都可触发监听

watch事件是一次性触发器,当watch监视的数据发生变化时,通知设置了该watch的client,即watcher

watch事件异步发送至观察者

watch是一次性触发的并且在获取watch事件和设置新watch事件之间有延迟,所以不能可靠的观察到节点的每一次变化

客户端监视一个节点,总是先获取watch事件,再发现节点的数据变化

watch事件的顺序对应于zookeeper服务所见的数据更新的顺序

流行的应用场景

1、分布式应用配置管理

发布与订阅即所谓的配置管理,顾名思义就是将数据发布到zk节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,地址列表等就非常适合使用。

2、Name Service

这个主要是作为分布式命名服务,通过调用zk的create node api,能够很容易创建一个全局唯一的path,这个path就可以作为一个名称。序列化节点

3、分布式通知/协调

ZooKeeper中特有watcher注册与异步通知机制,能够很好的实现分布式环境下不同系统之间的通知与协调,实现对数据变更的实时处理。

使用方法:通常是不同系统都对ZK上同一个znode进行watch,监听znode的变化(包括znode本身内容及子节点的),其中一个系统update了 znode,那么另一个系统能够收到通知,并作出相应处理。

3、分布式锁

分布式锁,这个主要得益于ZooKeeper为我们保证了数据的强一致性,zk集群中任意节点(一个zk server)上的相同znode的数据是一定是相同的。

锁服务可以分为两类,一个是保持独占,另一个是控制时序。

4、集群管理

Hbase Master选举则是zookeeper经典的使用场景;

Storm集群管理

5、分布式队列

队列方面,一种是常规的先进先出队列,另一种是要等到队列成员聚齐之后的才统一按序执行。对于第二种先进先出队列,增加分布式锁服务以控制时序场景

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BUG弄潮儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档