前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zookeeper基础概念

Zookeeper基础概念

作者头像
shysh95
发布2019-07-23 10:53:08
4440
发布2019-07-23 10:53:08
举报
文章被收录于专栏:shysh95shysh95

Zookeeper为分布式应用提供了统一命名服务、配置管理和分布式锁等分布式的基础服务。在解决分布式数据一致性问题上,Zookeeper并没有采用Paxos算法,而是使用了ZAB(Zookeeper Atomic Broadcast)协议。

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的权限
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员修炼笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Zookeeper是什么?
  • Zookeeper的目标
  • Zookeeper的基本概念
    • 集群角色
      • 会话
        • 数据节点
          • 版本
            • Watch
              • ACL
              相关产品与服务
              负载均衡
              负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档