Zookeeper学习笔记

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

1 简介

(1)  Zookeeper是分布式锁服务,为分布式系统提供名字服务器,分布式同步,组服务的开源高效可靠的协同工作,对集群的稳定性起到了关键作用。

(2)  一个松散耦合的分布式系统中粗粒度锁以及可靠性存储(低容量)的系统。

松散耦合:对于硬件要求不过严格

分布式:多个节点

粗粒度锁:在面对节点之间物品隔离的状态下,需要一把锁来维持整个生态秩序

存储:类似于共享资源角色

(3) Zookeeper和其他分布式应用一样,被设计成多点的服务,以避免单点故障。

(4)  数据模型:命名空间、与标准文件系统很相似;以/为间隔的路径名序列组成;只有绝对路径,没有相对路径;

(5)  每个节点自身信息:数据、数据长度、创建时间、修改时间;

(6)  具有文件,路径的双重特点。

2 结构

ZooKeeper 拥有一个层次的命名空间,这个和标准的文件系统非常相似。

(1)  ZooKerper树中的每个节点被称为Znode;

(2)  访问节点必须指定绝对路径,路径必须由斜杆字符来开头

(3)  Znode兼具文件和目录特点,即像文件一样维护着数据、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分,每个znode由三部分组成:

stat:此为状态信息,描述该Znode的版本,权限等信息

data:与该Znode关联的数据(Znode可以存储数据)

children:该Znode下的子节点(Znode可以拥有子节点目录)

3 节点类型

(1)  Persistent nodes:永久有效节点,除非client删除,否则一直存在;

(2)  Ephemeral nodes:临时节点,仅在创建该节点client保持连接期间有效,一旦连接丢失,zookeeper会自动删除该节点;

(3)  Sequence nodes:顺序节点,client申请创建该节点时,zk会自动在节点路径末尾添加递增序号,这种类型是实现分布式锁,分布式queue等特殊功能的关键。

(4)  顺序节点不能单独存在,所以会有四种节点类型:永久有效节点、临时节点、永久有效顺序节点、临时顺序节点。

4 监控机制

(1)  监控机制(watch):数据节点上设置,客户端被动收到通知;各种读请求,如

getData():监控数据是否被休息

getChildren():监控父节点下的子节点列表是否发生变化

exists():监控某个节点是否存在

(2)  一旦监控被触发,若不重新置位,当再次发生同样的事件时,不会获得触发

(3)  一次性监控,触发后,需要重新设置

(4)  保证先收到事件,再收到数据修改的信息

(5)  传递性:如create会触发节点数据监控点,同时也会触发父节点的监控点;如delete会触发节点数据监控点,同时也会触发父节点的监控点。

(6)  关联关系:监控功能、临时节点、流量分发器、getChildren()

Sever1与zookeeper连接,建立临时节点node1,node1会存储server1的元数据,包括IP地址,其它网络信息等,这个时候就知道了node1和server1的映射关系,当然这个架构了不止一个server1,所以也就不止一组node和server的映射关系,流量分发器就可以通过这个映射关系,知道server1的状态,从而判定给不给它流量。

Zookeeper学习笔记

(7)  风险

客户端有可能看不到所有数据变化。

多个事件的监控,有可能只会触发一次;例如,一个客户端设置了关于某个数据点exists和getData的监控,则当该数据被删除的时候,只会触发“文件被删除”的通知。

客户端网络中断的过程的无法收到监控的窗口时间,要由模块进行容错设计。

5 权限控制

(1)  数据访问,每个节点上的“访问控制链”(ACL)保存了各客户端对于该节点的访问权限

(2)  zookeeper本身提供了ACL机制,用一个三元组来定义客户端的访问权限,表示为scheme:id:permissions,第一个字段表示采用哪一种模式,第二个id表示用户,permissions表示相关权限(如只读,读写,管理等)

(3)  模式

World:它下面只有一个id,叫anyone,

world:anyone代表任何人,zookeeper中对所有人有权限的结点就是属于world:anyone的;

Auth:已经被认证的用户;

Digest(访客):通过username:password字符串的MD5编码认证用户;

Host(域名):匹配主机后缀,如host:corp.com匹配host:host1.corp.com,

host:host2.corp.com,但不能匹配host:host1.store.com;

IP:通过IP识别用户,表达式格式为addr/bits;

(4) 权限:

create,read,write,delete,admin

(5)  例如:(ip:192.168.0.0/16,READ)表示IP地址以192.168开头的主机有该数据节点的读权限。

6 应用场景

6.1 配置管理

全局系统配置,统一容错,是数据发布与订阅的配置中心,发布者将数据发布到ZK节点上,供订阅者动态获取数据,使用永久节点,getData来监控配置是否发生变化,实现配置信息的集中或管理和动态更新,例如全局的配置信息,服务式服务框架的服务地址列表等场景。

Zookeeper学习笔记

6.2 集群管理

(1) 对服务器状态监控:使用临时节点类型,所有的servergetChildren(String path,boolean watch)和exists方法,某一个服务器下线,节点自动删除;

(2) 选主节点:使用临时顺序节点类型,选择当前最小编号的Server为Master,最小编号的Server死去,由于是EPHEMERAL节点,死去的Server对应的节点也被删除,所以当前的节点列表中又出现一个最小编号的节点。

(3) 分布式lock:这个主要得益于zookeeper为我们保证了数据的强一致性。锁服务是用来控制不同节点协调工作,可以分为两类,一个是保持独占,另一个是控制时序,可使用临时顺序节点。

Zookeeper学习笔记

6.3 队列管理

(1) 同步队列:所有成员聚齐后才可以使用

Zookeeper学习笔记

(2) FIFO队列:生产者和消费者模式

创建sequential类型的子目录/queue_i,这样就能保证所有成员加入队列时都是有编号的,出队列时通过getChildren()方法可以返回当前所有的队列中的元素,然后消费其中最小的一个,这样就能保证FIFO

(公司应用最多是配置管理和对服务器状态监控)文章来源地址https://www.toymoban.com/news/detail-462577.html

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

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

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

相关文章

  • 1.0 Zookeeper 分布式配置服务教程

    ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。 ZooKeeper 的架构通过冗余服务实现高可用性。 Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一

    2024年02月21日
    浏览(30)
  • Docker部署ZooKeeper分布式协调服务

    1、准备工作 2、创建TEST容器,将conf目录COPY出来,在映射进去,方便后续维护管理! 3、运行容器 4、测试链接zookeeper 正常输出内容:

    2024年02月07日
    浏览(37)
  • ZooKeeper分布式应用程序协调服务

    目录 一.ZooKeeper基本介绍 1.ZooKeeper是什么? 2.ZooKeeper的工作机制 3.ZooKeeper的特点 4.ZooKeeper的数据结构 5.ZooKeeper的应用场景 5.1 统一命名服务 5.2 统一配置管理 5.3 统一集群管理 5.4 服务器动态上下线 5.5 软负载均衡 二.ZooKeeper的选举机制 1.第一次启动选举机制 2.非第一次启动选举

    2023年04月19日
    浏览(42)
  • 分布式应用程序协调服务 ZooKeeper 详解

    目录 1、ZooKeeper简介 2、ZooKeeper的使用场景 3、ZooKeeper设计目的 4、ZooKeeper数据模型

    2024年02月08日
    浏览(46)
  • ZooKeeper的应用场景(命名服务、分布式协调通知)

    命名服务(NameService)也是分布式系统中比较常见的一类场景,在《Java网络高级编程》一书中提到,命名服务是分布式系统最基本的公共服务之一。在分布式系统中,被命名的实体通常可以是集群中的机器、提供的服务地址或远程对象等一这些我们都可以统称它们为名字(Name),

    2024年02月12日
    浏览(29)
  • 【大数据】大数据之分布式协调服务--Zookeeper 教程

    ZooKeeper 是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper 通过其简单的架构和 API 解决了这个问题。ZooKeeper 允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。 ZooKeeper 框架最初是在“Yahoo!\\\"上构

    2023年04月09日
    浏览(29)
  • Zookeeper 和 ETCD在分布式协调服务的使用

    在云原生环境中,etcd和ZooKeeper都是常见的分布式协调服务,具有各自的优点和缺点。以下是它们在云原生环境中的比较: etcd的优点: 性能:etcd采用Raft一致性算法,具有较高的性能和吞吐量。 简单的API:etcd的API设计简洁易用,支持多种编程语言的客户端库。 可观察性:

    2024年02月16日
    浏览(37)
  • 微服务面试问题小结( 微服务、分布式、MQ、网关、zookeeper、nginx)

    单体架构 优点:架构简单,维护成本低 缺点:各个模块耦合度太高,当对一个模块进行更新修改时,会影响到其他模块,要一起进行修改。当存在性能瓶颈的时候,需要对整个服务进行扩容,不能有针对性的扩容,如一个程序的主要功能时其中某个服务,要对其增加机器,

    2024年02月04日
    浏览(36)
  • ZooKeeper 分布式协调服务: 概述及原理, 安装配置, 基本操作

    作者:禅与计算机程序设计艺术 Apache Zookeeper 是 Apache Hadoop 的子项目之一,是一个开源的分布式协调服务。它负责存储和维护关于网络中各个节点的数据。Zookeeper 提供了以下功能:配置维护、域名服务、同步和共享、软/硬件负载均衡、集群管理、Master 选举等。它的架构使得

    2024年02月08日
    浏览(33)
  • 搭建Zookeeper集群:三台服务器,一场分布式之舞

    欢迎来到我的博客,代码的世界里,每一行都是一个故事 在分布式系统的舞台上,Zookeeper是一位不可或缺的重要角色。如何搭建一个稳定、高性能的Zookeeper集群,成为每位系统管理员和开发者的必修课。让我们一同踏上这场集群之旅,揭秘三台服务器背后的Zookeeper配置细节,

    2024年04月28日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包