Zookeeper基本功能

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

统一命名服务(naming)

分布式应用中,通常需要有一套完整的命名规则,既能狗产生唯一的命名又便于认识别和记住,通常情况下用树形的结构是一个理想的选择,属性的名称结构是一个有层次的目录结构,既对人友好又不会重复,说到这里你可能xiangdao`想到JNDO没错Zookeeper的Name Service与JNDI能够完成的功能是差不多的,他们都是酱油层次的目录结构关联到一定资源上,dansh但是Zookeeper的NameService更加是广泛意义上的关联,也许你并不需要将名称关联到特定资源上,你可能只需要一个不会重复的名称,就想数据库中产生唯一的数字主键一样.
NameService已经是Zookeeper内置的功能,nizh你只要调用Zookeeper的API就能实现,如调用create接口就可以很容易的创建一个目录节点.

配置管理

配置管理的在分布式应用环境下很常见,例如同一个应用系统需要多台PC Server运行,但是他们运行的应用系统的某些配置是相同的,如果要修改这个相同的配置项,那么就必须同时修改每台运行这个系统的PC Server这样非常麻烦而且容易出错.
像这样的配置信息完全可以交给Zookeeper来管理,将配置信息保存在Zookeeper的某个目录节点中,然后将所有需要修改的应用及其监控配置信息的状态,一旦配置信息发生变化,每台应用及其就会收到ZooKeeper的通知,然后从Zookeeper的通知,然后从Zookeeper获取新的配置信息应用到系统中

image
集群管理
Zookeeper能够很容易的实现集群管理的功能,如有多台Server组成一个服务集群,那么必须要一个总管知道当前及权重每台机器的服务状态,一旦有机器不能提供服务,集群中其他集群必须知道,从而做出调整重新分配服务政策.同样增加集群的服务能力时,就会增加一台或者多台server,同样也必须让总管知道.
Zookeeper不仅能够帮你维护当前的集群中机器的服务状态,而且能够帮你选出一个'总管',让这个总管来管理集群,这就是Zookeeper的另一个功能 Leader Election

它们的实现方式都是在 Zookeeper 上创建一个 EPHEMERAL 类型的目录节点,然后每个 Server 在它们创建目录节点的父目录节点上调用 getChildren(String path, boolean watch) 方法并设置 watch 为 true,由于是 EPHEMERAL 目录节点,当创建它的 Server 死去,这个目录节点也随之被删除,所以 Children 将会变化,这时 getChildren上的 Watch 将会被调用,所以其它 Server 就知道已经有某台 Server 死去了。新增 Server 也是同样的原理。
Zookeeper 如何实现 Leader Election,也就是选出一个 Master Server。和前面的一样每台 Server 创建一个 EPHEMERAL 目录节点,不同的是它还是一个 SEQUENTIAL 目录节点,所以它是个 EPHEMERAL_SEQUENTIAL 目录节点。之所以它是 EPHEMERAL_SEQUENTIAL 目录节点,是因为我们可以给每台 Server 编号,我们可以选择当前是最小编号的 Server 为 Master,假如这个最小编号的 Server 死去,由于是 EPHEMERAL 节点,死去的 Server 对应的节点也被删除,所以当前的节点列表中又出现一个最小编号的节点,我们就选择这个节点为当前 Master。这样就实现了动态选择 Master,避免了传统意义上单 Master 容易出现单点故障的问题。
image

对列管理

Zookeeper 可以处理两种类型的队列:

1.当一个队列的成员都聚齐时,这个队列才可用,否则一直等待所有成员到达,这种是同步队列。
2.队列按照 FIFO 方式进行入队和出队操作,例如实现生产者和消费者模型。
同步队列用 Zookeeper 实现的实现思路如下:
创建一个父目录 /synchronizing,每个成员都监控标志(Set Watch)位目录 /synchronizing/start 是否存在,然后每个成员都加入这个队列,加入队列的方式就是创建 /synchronizing/member_i 的临时目录节点,然后每个成员获取 / synchronizing 目录的所有目录节点,也就是 member_i。判断 i 的值是否已经是成员的个数,如果小于成员个数等待 /synchronizing/start 的出现,如果已经相等就创建 /synchronizing/start。

image

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
Java 测试技术 API
Zookeeper开源客户端Curator之基本功能讲解
Zookeeper开源客户端Curator之基本功能讲解
366 0
Zookeeper开源客户端Curator之基本功能讲解
|
11月前
|
监控 Java
Java 最常见的面试题:zookeeper 都有哪些功能?
Java 最常见的面试题:zookeeper 都有哪些功能?
|
11月前
|
存储 缓存 负载均衡
认识 Zookeeper -基本概念,组成和功能
认识 Zookeeper -基本概念,组成和功能
109 0
|
12月前
|
弹性计算 自然语言处理 运维
带你读《企业级云原生白皮书项目实战》——4.2.2 MSE功能介绍
带你读《企业级云原生白皮书项目实战》——4.2.2 MSE功能介绍
|
XML JSON 分布式计算
分享一个ZooKeeper GUI工具,功能齐全,颜值高
推荐一个ZooKeeper可视化工具,颜值不错,提供实时监控功能。官网地址:http://www.redisant.cn/za
1325 0
|
存储 容灾 数据管理
MSE ZooKeeper 数据导入导出功能上线
MSE 提供了托管版的 ZooKeeper,拥有比自建开源 ZooKeeper 稳定性更高的SLA,同时管控面提供了丰富的服务自治功能。赶在2022年的岁末,MSE ZooKeeper 上线了一个非常实用的功能-数据导入导出功能,彻底解决了困恼用户长期以来无法自助处理数据的问题。
MSE ZooKeeper 数据导入导出功能上线
|
敏捷开发 弹性计算 Kubernetes
MSE 开发环境隔离功能介绍|学习笔记(二)
快速学习 MSE 开发环境隔离功能介绍
270 0
MSE 开发环境隔离功能介绍|学习笔记(二)
|
弹性计算 Kubernetes 安全
MSE 开发环境隔离功能介绍|学习笔记(一)
快速学习 MSE 开发环境隔离功能介绍
359 0
MSE 开发环境隔离功能介绍|学习笔记(一)
|
运维 Kubernetes 安全
MSE 风险管理功能发布
今天给大家带来 MSE 高可用方向的重要功能——风险管理的发布。阅读这篇文章,你将能够了解以下知识点和能力:1、熟悉微服务体系高可用如何设计;2、掌握如何控制系统中的风险;3、了解MSE微服务引擎风险管理功能能解决什么风险;4、熟悉如何使用风险管理功能;5、了解风险管理更多高级功能的未来规划
MSE 风险管理功能发布
|
运维 Kubernetes 安全
MSE风险管理功能发布
微服务引擎MSE面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持Nacos/ZooKeeper/Eureka)、云原生网关(原生支持Ingress/Envoy)、微服务治理(原生支持Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。
MSE风险管理功能发布