千家信息网

Zookeeper的基础概念是什么

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要讲解了"Zookeeper的基础概念是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Zookeeper的基础概念是什么"吧!Zooke
千家信息网最后更新 2024年11月23日Zookeeper的基础概念是什么

这篇文章主要讲解了"Zookeeper的基础概念是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Zookeeper的基础概念是什么"吧!

Zookeeper是什么?

Zookeeper是一个典型的分布式协调服务,分布式应用程序可以基于它实现数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。Zookeeper能够保证以下分布式一致性特征:

  • 顺序一致性:从同一个客户端发起的事务请求,必须按照发起顺序被应用到Zookeeper中

  • 原子性:事务在集群中必须全部成功或者全部失败,不存在部分成功部分失败的情况

  • 单一视图:连接集群中的任何一个服务器,得到的数据视图都是一样的

  • 可靠性:服务端一旦成功执行了某个事务,该事物引起的服务状态变更将永久保存,除非又有新的事务更新了其状态

  • 实时性:这里的实时性不是说一旦事务执行成功,客户端就可以获取最新的数据结,而是Zookeeper保证在一段时间后,可以获取最新的数据

Zookeeper的目标

  • 简单的数据模型:Zookeeper以数的结构组织数据,类似于目录结构,每一个目录在Zookeeper中成为ZNode,每一个ZNode可以记录少量数据

  • 可以构建集群:Zookeeper的集群最好以奇数个数搭建(过半选举),集群中的服务两两建立连接相互通信

  • 顺序访问:客户端的更新请求,都会分配一个全局的唯一ID(ZXID)

  • 高性能:Zookeeper将全量数据存储在内存中,因此对于读的操作延时非常非常低

Zookeeper的基本概念

集群角色

Zookeeper集群中主要有三种角色:Leader、Follower、Observer。Leader负责接收客户端的写请求,并将该请求以事务的方式提交给Follower执行。Follower负责接收读请求、参与Leader的选举和过半写成功策略。Observer也负责接收读请求,不需要参与Leader的选举和过半写成功,该角色设计的主要目标是用来在不影响写性能的前提下扩展Zookeeper的读性能。

会话

会话指的是客户端和Zookeeper集群建立的连接,假设与客户端相连的服务器宕机,在没有超过sessionTimeout参数设置的前提下能够重新连接上另一台服务器,则之前的会话有效。

数据节点

这里的数据节点除了机器节点之外,指的还是Zookeeper中的ZNode,ZNode以文件目录的形式进行组织。主要有两种形式:持久节点和临时节点。持久节点一旦创建除非手动移除否则不会删除,临时节点和会话的生命周期有关,会话启动创建的临时节点会在会话断开时自动删除。Zookeeper还可以为节点设置SEQUENTIAL属性,被设置了该属性的节点在创建时会自动在节点名后面加一个数字,该数字是由父节点维护的。

版本

Zookeeper的每个ZNode都可以存储数据,对应于每一个ZNode,Zookeeper会维护一个叫做Stat的数据结构,Stat记录了这个ZNode的三个数据版本,分别是version(当前ZNode的版本)、cversion(当前ZNode子节点的版本)、aversion (当前ZNode的ACL版本)。

Watch

Watch机制是Zookeeper里面非常非常重要的一个机制。客户端可以在一些ZNode上注册一些Watcher,当一些特定的事件发生时,Zookeeper服务端会将该事件推送至感兴趣的客户端。

ACL

Zookeeper采用ACL策略来进行权限控制,主要有以下5种权限:

  • CREATE:创建子节点的权限

  • READ:读取节点数据和子节点列表的权限

  • WRITE:更新节点数据的权限

  • DELETE:删除子节点的权限

  • ADMIN:设置节点ACL的权限

感谢各位的阅读,以上就是"Zookeeper的基础概念是什么"的内容了,经过本文的学习后,相信大家对Zookeeper的基础概念是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0