ZooKeeper 的架构是怎样的?

这篇具有很好参考价值的文章主要介绍了ZooKeeper 的架构是怎样的?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本文隶属于专栏《大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见大数据技术体系


正文

ZooKeeper 的架构是怎样的?

ZooKeeper 的架构图主要包含以下几个部分:

  1. ZooKeeper Client:是 ZooKeeper 的客户端,可以连接到任意一个 ZooKeeper Server 上(除非 leaderServes 参数被显式设置,leader 不允许接受客户端连接)。客户端使用并维护一个 TCP 连接,通过这个连接发送请求、接收响应、获取观察的事件以及发送心跳。如果这个 TCP 连接中断,客户端将自动尝试连接到另外的 ZooKeeper Server。
  2. ZooKeeper Server:是 ZooKeeper 的服务端,可以组成一个集群来提供高可用的分布式协调服务。

ZooKeeper Server 有三种角色:Leader、Follower 和 Observer

  • Leader:是整个 ZooKeeper 集群工作机制中的核心。Leader 作为整个 ZooKeeper 集群的主节点,负责响应所有对 ZooKeeper 状态变更的请求。主要工作有:事务请求的唯一调度和处理,保障集群处理事务的顺序性。集群内各服务器的调度者。Leader 选举是 ZooKeeper 最重要的技术之一,也是保障分布式数据一致性的关键所在。

  • Follower:是 ZooKeeper 集群状态的跟随者。他的逻辑就比较简单。除了响应本服务器上的读请求外,follower 还要处理 leader 的提议,并在 leader 提交该提议时在本地也进行提交。另外需要注意的是,leader 和 follower 构成 ZooKeeper 集群的法定人数,也就是说,只有他们才参与新 leader 的选举、响应 leader 的提议。

  • Observer:服务器充当一个观察者的角色。如果 ZooKeeper 集群的读取负载很高,或者客户端多到跨机房,可以设置一些 observer 服务器,以提高读取的吞吐量。

    Observer 和 Follower 比较相似,只有一些小区别:首先 observer 不属于法定人数,即不参加选举也不响应提议,也不参与写操作的“过半写成功”策略;其次是 observer 不需要将事务持久化到磁盘,一旦 observer 被重启,需要从 leader 重新同步整个名字空间。

ZooKeeper 集群中节点(Leader+Follower)个数通常是奇数,方便投票选举。ZooKeeper 中的选举机制请参考我的这篇博客——《一篇文章搞懂 ZooKeeper 的选举机制》


通信

Leader 和 Follower 之间的通信

ZooKeeper 的架构是怎样的?

  1. Leader 发送提议(proposal)给 Follower,提议包含了要执行的事务请求和事务编号。
  2. Follower 收到提议后,如果同意,就发送回复(acknowledgement)给 Leader。
  3. Leader 收到过半 Follower 的回复后,就发送提交(commit)给所有 Follower,表示该提议可以执行了。
  4. Follower 收到提交后,就在本地执行该提议,并向客户端返回结果。
  5. Leader 和 Follower 还会定期发送心跳(ping)给对方,以维持连接和检测故障。

Leader 和 Observer 之间的通信

ZooKeeper 的架构是怎样的?

  1. Leader 发送提议和提交给 Observer,Observer 只需要等待提交就可以执行事务,不需要发送回复给 Leader。
  2. Observer 收到提交后,就在本地执行该提议,并向客户端返回结果。
  3. Leader 和 Observer 还会定期发送心跳给对方,以维持连接和检测故障。

Follower 和 Observer 之间的通信

ZooKeeper 的架构是怎样的?文章来源地址https://www.toymoban.com/news/detail-488998.html

  1. Follower 可以将自己收到的提议转发给 Observer,以减轻 Leader 的负担。
  2. Observer 收到提议后,仍然需要等待 Leader 的提交才能执行事务。

Follower 和 Follower 之间有通信吗?

  • Follower 和 Follower 之间没有通信,他们只和 Leader 通信。
  • 这是为了简化 ZooKeeper 的协议和实现,避免复杂的多对多通信。
  • Follower 和 Follower 之间的数据一致性是通过 Leader 的提议和提交来保证的。

Observer 和 Observer 之间有通信吗?

  • Observer 和 Observer 之间没有通信,他们只和 Leader 或 Follower 通信。
  • 这是为了简化 ZooKeeper 的协议和实现,避免复杂的多对多通信。
  • Observer 和 Observer 之间的数据一致性是通过 Leader 或 Follower 的提议和提交来保证的。

到了这里,关于ZooKeeper 的架构是怎样的?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 本文将从云原生的概念、背景知识、Kubernetes架构及核心组件、应用场景、案例研究等方面深入剖析云原生课程的相关知识点

    作者:禅与计算机程序设计艺术 2020年,技术快速发展,云计算火爆。云原生领域也随之蓬勃发展。云原生已经成为大势所趋,大量企业都在逐渐转型云原生应用架构。国内外云服务厂商也纷纷推出基于Kubernetes的服务平台,而Kubernetes又是云原生开源技术体系的一部分。为了帮

    2024年02月07日
    浏览(46)
  • 什么是技术架构?架构和框架之间的区别是什么?怎样去做好架构设计?(一)

    什么是技术架构?架构和框架之间的区别是什么?怎样去做好架构设计?(一)。 在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。在不同的书籍上, 不同的作者, 对于架构的定义也不统一, 角度不同, 定义不同。 一、架构是什么 Linux 有架构,MySQL 有

    2024年01月19日
    浏览(39)
  • 什么是技术架构?架构和框架之间的区别是什么?怎样去做好架构设计?(二)

    什么是技术架构?架构和框架之间的区别是什么?怎样去做好架构设计?(二)。 技术架构是对某一技术问题(需求)解决方案的结构化描述,由构成解决方案的组件结构及之间的交互关系构成。广义上的技术架构是一系列涵盖多类技术问题设计方案的统称,例如部署方案、

    2024年01月17日
    浏览(39)
  • Java中可以使用哪些系统架构?怎样选择?

    架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。 Java企业级的应用根据业务的复杂程度,通常使用的系统架构有应用架构、垂直应用架构、面向服务的架构(Service-Oriented Architecture,SOA)、微服务架构等。 项目架构的选择在

    2024年02月16日
    浏览(37)
  • 怎样优雅地增删查改(五):按组织架构查询

    之前我们实现了Employee,Alarm管理模块以及通用查询应用层。 Employee的集合查询业务,是通过重写CreateFilteredQueryAsync方法,来实现按组织架构查询的过滤条件。 我们将这段逻辑代码提取到通用查询应用层中,便可实现在任何业务的按组织架构查询。 查询依据 在Abp中,组织架构

    2024年02月16日
    浏览(31)
  • 怎样设计一个具有良好容灾性的系统架构?

    当你的系统出现故障时,容灾性设计可以让你的系统保持高效运转,避免数据丢失和业务中断。那么,怎样设计一个具有良好容灾性的系统架构呢?让我来教你几招,不过在开始之前,先来了解一下今天的小广告:如果你需要可靠的服务器托管服务,推荐Lcayun(莱卡云)服务

    2024年01月25日
    浏览(37)
  • Zookeeper架构系列——集群模式

    一切的恐惧,且来源于火力不足 假如有人问题如下问题,你能回答上来吗?如果你能回答上来,那么你可以跳过本文。如何回答不了,本文将给你答案。 按顺序启动Zookeeper集群,Leader会是哪个结点? ZooKeeper的应用场景有哪些? ZooKeeper如何保证数据的一致性? ZooKeeper的节点

    2024年01月25日
    浏览(30)
  • Zookeeper基本概念与架构

    Zookeeper是一个开源的分布式协调服务,用于构建分布式应用程序和系统。它提供了一种可靠的、高性能的、分布式协同的方式来管理配置信息、提供原子性的数据更新、实现集群管理、提供可靠的通信和同步服务。Zookeeper的核心是一个高性能、可靠的分布式协同服务,它可以

    2024年02月22日
    浏览(27)
  • 【zookeeper特点和集群架构】

    ZooKeeper 是一个开源的分布式协调框架,是Apache Hadoop 的一个子项目,主要用来解决分 布式集群中应用系统的一致性问题。Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性 服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

    2024年02月04日
    浏览(25)
  • 了解Zookeeper的系统架构吗?

    是的,我了解Zookeeper的系统架构。 Zookeeper是一个分布式协调服务,用于处理分布式系统中的一致性问题。它的系统架构包括以下几个主要组成部分: 客户端库:Zookeeper提供了丰富的客户端库,包括Java、C++、Python等语言版本,用户可以通过这些库与Zookeeper服务器进行交互。

    2024年02月02日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包