ZooKeeper 典型应用:数据发布与订阅|学习笔记

简介: 快速学习 ZooKeeper 典型应用:数据发布与订阅

开发者学堂课程【大数据 ZooKeeper 快速入门 ZooKeeper 典型应用:数据发布与订阅】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/549/detail/7574


ZooKeeper 典型应用:数据发布与订阅


 发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到 ZK 节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。

应用在启动的时候会主动来获取一次配置,同时,在节点上注册一个 Watcher,这样一来,以后每次配置有更新的时候,都会实时通知到订阅的客户端,从来达到获取最新配置信息的目的。比如:

分布式搜索服务中,索引的元信息和服务器集群机器的节点状态存放在 ZK 的一些指定节点,供各个客户端订阅使用。

注意:适合数据量很小的场景,这样数据更新可能会比较快。

比如现在有一个分布式应用电商网站,电商网站中有比较多的模块:订单、购物车、秒杀等等,这些模块在启动运行的时候都需要数据库的支持。传统方式是把数据库相关信息配置在某个模块中,比如订单模块,把它的数据库信息配置在文件当中,然后订单模块启动时就加载这些配置文件。

如果想要同一去管理这些配置文件就要利用到 ZooKeeper 特性,比如有一个 ZooKeeper 集群,要进行数据的发布与订阅首先需要将数据统一发送到 ZooKeeper 集群上。

注意:统一管理的数据不能太大。

因为 ZooKeeper 要求它不能保存过大的文件数据一般都在kb级别,因此可以把数据库相关信息保存,比如在 ZooKeeper 集群中创建一个路径:/emall/dbdata ,在这节点中存放一些数据,比如 db.地址、密码等信息,这样在节点中就有了相关信息。

所有应用第一次启动时要在 /emall/dbdata 上获取这个信息,如果不获取的话就不能启动,因此需要做一个相关注释:

第一步,所有订阅者初次启动的时候去zk指定的节点获取相关的订阅信息( 数据库相关信息)。这样获取了一次,获取方式就是在每个模块当中引入ZooKeeper代码就可以,可以通过 zk.getData(“/emall/dbdata”)这样每个模块都引入 ZooKeeper 的 API 进行操作,这样就可以获取数据。

获取数据的同时为了能够保证数据发生改变能够动态获取到还要设置监听,监听节点数据的变化。为了实现动态维护一定要设置监听,这时代码形式为:zk.getData(“/emall/dbdata,true”)

设置完监听后,后续统一管理人员需要把数据库做一个升级,比如密码修改等等,这时一旦节点数据发生改变,监听就会被触发,各个应用(订阅者,相对于 ZooKeeper 来说就是客户端)就会收到事件的通知,从而获取新的配置信息,这样就完成了动态获取数据的功能,如下:

image.png

为了保证后续再次获取到数据发生改变还要再次设置相同的监听,这样就可以保证监听一直有效,一旦数据发生改变,订阅者就会得到通知,获取之后再次监听,下一次改变还可以获取到,这样就完成了全局的数据发布与订阅,这时管理人员即可在 ZooKeeper 针对节点数据进行修改即可,下方各个应用都可以针对这个数据,即可以感受到这种变化,又可以针对这个变化进行修改,这就是数据发布与订阅。

相关文章
|
消息中间件 分布式计算 负载均衡
ZooKeeper应用案例
【2月更文挑战第24天】
|
人工智能 Serverless 测试技术
nacos常见问题之Serverless 应用引擎2.0不支持 MSE nacos如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
224 0
|
4月前
|
存储 运维 安全
金融级 ZooKeeper 来袭:性能提升100%,SLA 99.99%,数据防护升级
阿里云微服务引擎 MSE ZooKeeper 企业版正式发布,提供比专业版更高的稳定性与安全能力,SLA 达 99.99%,整体服务性能提升 100%。针对关键业务,企业版通过独享资源池实现更高规格配额,满足大规模需求。此外新增数据备份容灾、容量管理反脆弱限流等功能,提升整体企业级特性,助力企业应对复杂业务挑战。
373 137
金融级 ZooKeeper 来袭:性能提升100%,SLA 99.99%,数据防护升级
|
6月前
|
数据采集 机器学习/深度学习 数据可视化
让回归模型不再被异常值"带跑偏",MSE和Cauchy损失函数在噪声数据环境下的实战对比
本文探讨了MSE与Cauchy损失函数在线性回归中的表现,特别是在含噪声数据环境下的差异。研究发现,MSE虽具良好数学性质,但对异常值敏感;而Cauchy通过其对数惩罚机制降低异常值影响,展现出更强稳定性。实验结果表明,Cauchy损失函数在处理含噪声数据时参数估计更接近真实值,为实际应用提供了更鲁棒的选择。
255 1
让回归模型不再被异常值"带跑偏",MSE和Cauchy损失函数在噪声数据环境下的实战对比
|
Dubbo 应用服务中间件 Apache
Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损?
193 4
|
消息中间件 Cloud Native 网络安全
云原生最佳实践系列 3:基于 SpringCloud 应用玩转 MSE
该文档介绍了基于云原生应用的产品构建的微服务架构实践。
1053 92
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
256 1
|
Java
分布式系列教程(24) -Zookeeper数据查看工具ZooInspector
分布式系列教程(24) -Zookeeper数据查看工具ZooInspector
266 0
|
存储 Kubernetes 调度
k8s学习--k8s群集部署zookeeper应用及详细解释
k8s学习--k8s群集部署zookeeper应用及详细解释
1014 0
|
消息中间件 存储 Kafka
kafka 在 zookeeper 中保存的数据内容
kafka 在 zookeeper 中保存的数据内容
229 3