1500字简述 Apache ZooKeeper 的基本原理

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Apache有个非常棒的开源项目叫做Zookeeper,用于管理大量主机的分布式协调服务,很多人对Zookeeper的原理不太了解,那么本文瑞哥就带大家学习一下Zookeeper的基本原理。

你好,这里是网络技术联盟站。

Apache有个非常棒的开源项目叫做Zookeeper,用于管理大量主机的分布式协调服务,很多人对Zookeeper的原理不太了解,那么本文瑞哥就带大家学习一下Zookeeper的基本原理。

什么是Zookeeper?

ZooKeeper 是对分布式环境中大量主机的协调和管理服务,是一个框架,ZooKeeper 框架最初是由 Yahoo! 构建的。

我们都知道在分布式环境中协调和管理服务确实是一个非常复杂的过程,但是 ZooKeeper 以其简单的架构和 API 解决了这个问题。

什么是分布式服务?

提到ZooKeeper,那么一定得提到分布式服务,ZooKeeper是专门为分布式服务设计的。

简单来说,分布式系统就是多台设备、多个服务的集合,这个集合对外看起来就是单台服务,这些内部的多台服务相互配合、容错、共享、协同完成分布式服务,单台设备的故障不会影响整个系统的运行。

分布式系统有以下好处:

  1. 扩展性:分布式系统可以水平扩展,达到使用更多的流量。
  2. 模块化:分布式系统可以扩展多个模块,而且一般都没有上限。
  3. 容错性:分布式系统比单机更容错。
  4. 成本效益:初始成本高于传统系统,但由于其可扩展性,扩展的越多、时间越长,其成本效益就很高。
  5. 低延迟:用户可以在多个位置拥有一个节点
  6. 效率高:分布式系统将复杂数据分解成更小的部分,所以处理效率一般都很高。

ZooKeeper 架构

ZooKeeper 在客户端-服务器架构上工作:

我们来看下ZooKeeper这些角色:

  • Client:客户端用于访问来自服务器的信息,它向服务器发送一条消息,让服务器知道客户端还活着,如果连接的服务器没有响应,客户端会自动将消息重新发送到另一台服务器。
  • Server:服务器向客户端发出确认以通知服务器处于活动状态,并向客户端提供所有服务。
  • Leader:如果任何服务器节点发生故障,该服务器节点将执行自动恢复。
  • Follower:追随Leader指示的服务器节点。

## ZooKeeper如何工作?

  • ZooKeeper 服务器启动后发生的第一件事是,它等待客户端连接到服务器。
  • ZooKeeper 集群中的客户端将连接到其中一个节点,该节点可以是Leader或Follower中的任何一个。
  • 一旦客户端连接到特定节点,该节点就会将会话 ID 分配给客户端并向该特定客户端发送确认。
  • 如果客户端没有从节点得到任何确认,那么它会将消息重新发送到 ZooKeeper 集群中的另一个节点并尝试与之连接。
  • 收到确认后,客户端通过定期向节点发送心跳来确保连接不会丢失。
  • 最后,客户端可以根据需要执行读取、写入或存储数据等功能。

最好使用奇数个服务器运行 ZooKeeper 集群;典型的集群大小是3、5或7。例如,如果运行 5 台服务器,假如其中 3 台停机,则集群将不可用,这个时候可以让一台服务器停机进行维护,但仍能在故障中恢复。但是,如果运行 6 台服务器,集群在发生 3 次故障后仍然不可用,但同时发生 3 次故障的可能性现在略高一些。当添加更多服务器时,虽然可以容忍更多故障,但这也会让吞吐量降低。

ZooKeeper用途

ZooKeeper一般有两个用途:

  • 分布式文件系统
  • 消息队列

分布式文件系统

ZooKeeper 中信息的组织方式与文件系统非常相似,在顶部有一个根,简称为 /,在根之下有称为 zNodes 的节点,是 ZooKeeper 节点的缩写,但主要是用于避免与计算机节点混淆的术语,一个 zNode 既可以充当包含二进制数据的文件,也可以充当具有更多 zNode 作为子节点的目录,与大多数文件系统一样,每个 zNode 都有一些元数据,该元数据包括读写权限版本信息

与普通的分布式文件系统不同,ZooKeeper 支持临时 zNode 和顺序 zNode 的概念,临时 zNode 是一个在其所有者的会话结束时将消失的节点,临时节点的典型用例是使用 ZooKeeper 发现分布式系统中的主机,然后,每个服务器都可以在临时节点中发布其 IP 地址,并且如果服务器与 ZooKeeper 失去连接并且无法在会话超时内重新连接,则其信息将被删除。

消息队列

ZooKeeper 可以在 zNode 上注册观察者,通过使用观察者,可以通过让所有对某个主题感兴趣的客户端在该主题的 zNode 上注册一个观察者来实现消息队列,并且可以通过写入该 zNode 将有关该主题的消息广播给所有客户端,其实也就是观察者订阅某个主题。

不过,观察者总是一次性的,所以如果你想进一步更新那个 zNode,必须重新注册它们,在接收更新和重新注册之间会丢失更新,但可以通过使用 zNode 的版本号检测到这一点。

总结

Apache ZooKeeper 是一个开源 Apache 项目,主要用于大型集群系统上进行分发配置、命名和组服务,使得分布式系统更易于管理,本文用1500来字简述了ZooKeeper的工作,希望对您有所帮助。

最后感谢您的阅读,如果觉得文章对您有帮助,别忘了点赞👍、收藏⭐哦!有任何问题,欢迎在下方评论区与我讨论!!!

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
4月前
|
监控 Dubbo Java
深入理解Zookeeper系列-2.Zookeeper基本使用和分布式锁原理
深入理解Zookeeper系列-2.Zookeeper基本使用和分布式锁原理
63 0
|
4月前
|
消息中间件 分布式计算 算法
深入理解Zookeeper系列-3.Zookeeper实现原理及Leader选举源码分析(上)
深入理解Zookeeper系列-3.Zookeeper实现原理及Leader选举源码分析
61 0
|
5月前
|
Java 数据库连接 Shell
Apache Zeppelin系列教程第六篇——Zengine调用Interpreter原理分析
Apache Zeppelin系列教程第六篇——Zengine调用Interpreter原理分析
46 0
|
4月前
|
NoSQL 中间件 API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(下)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
86 2
|
4月前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(上)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
75 0
|
21天前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
【4月更文挑战第11天】ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
33 11
|
22天前
|
存储 Java 网络安全
ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
【4月更文挑战第10天】ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
35 1
|
24天前
|
存储 Java 网络安全
ZooKeeper【搭建 02】apache-zookeeper-3.6.0 集群版(准备+安装配置+启动验证)
【4月更文挑战第8天】ZooKeeper【搭建 02】apache-zookeeper-3.6.0 集群版(准备+安装配置+启动验证)
22 1
|
24天前
|
存储 Linux 数据库
ZooKeeper【搭建 01】apache-zookeeper-3.6.2 单机版安装+配置+添加到service服务+开机启动配置+验证+chkconfig配置(一篇入门zookeeper)
【4月更文挑战第8天】ZooKeeper【搭建 01】apache-zookeeper-3.6.2 单机版安装+配置+添加到service服务+开机启动配置+验证+chkconfig配置(一篇入门zookeeper)
38 0
|
3月前
|
SQL 并行计算 大数据
【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)
关于Flink服务的搭建与部署,由于其涉及诸多实战操作而理论部分相对较少,小编打算采用一个独立的版本和环境来进行详尽的实战讲解。考虑到文字描述可能无法充分展现操作的细节和流程,我们决定以视频的形式进行分析和介绍。因此,在本文中,我们将暂时不涉及具体的搭建和部署步骤。
498 3
【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)

推荐镜像

更多