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

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 快速学习 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 针对节点数据进行修改即可,下方各个应用都可以针对这个数据,即可以感受到这种变化,又可以针对这个变化进行修改,这就是数据发布与订阅。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
3月前
|
消息中间件 分布式计算 负载均衡
ZooKeeper应用案例
【2月更文挑战第24天】
|
3月前
|
人工智能 Serverless 测试技术
nacos常见问题之Serverless 应用引擎2.0不支持 MSE nacos如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
|
22天前
|
消息中间件 存储 Kafka
kafka 在 zookeeper 中保存的数据内容
kafka 在 zookeeper 中保存的数据内容
31 3
|
3月前
|
存储 负载均衡 网络协议
ZooKeeper【基础 01】简介+设计目标+核心概念+ZAB协议+典型应用场景
【4月更文挑战第10天】ZooKeeper【基础 01】简介+设计目标+核心概念+ZAB协议+典型应用场景
64 1
|
3月前
|
消息中间件 Cloud Native 网络安全
云原生最佳实践系列 3:基于 SpringCloud 应用玩转 MSE
该文档介绍了基于云原生应用的产品构建的微服务架构实践。
|
9月前
|
Java
分布式系列教程(24) -Zookeeper数据查看工具ZooInspector
分布式系列教程(24) -Zookeeper数据查看工具ZooInspector
95 0
Zookeeper学习---2、客户端API操作、客户端向服务端写数据流程
Zookeeper学习---2、客户端API操作、客户端向服务端写数据流程
Zookeeper学习---2、客户端API操作、客户端向服务端写数据流程
|
10月前
|
监控 安全 大数据
阿里服务的ASM、MSE和ARMS都有其各自的应用场景
阿里服务的ASM、MSE和ARMS都有其各自的应用场景
282 39
|
3月前
|
消息中间件 存储 Java
ZooKeeper 在 Kafka 中的应用
ZooKeeper 在 Kafka 中的应用
224 0
|
3月前
|
Dubbo Java 应用服务中间件
分布式应用简单入门及SpringBoot整合Dubbo+Zookeeper
分布式应用简单入门及SpringBoot整合Dubbo+Zookeeper
101 1