ZooKeeper系列 (一) zookeeper的概念

zookeeper是什么

定义:zookeeper是一个开源的分布式协调服务,一个典型的分布式数据一致性解决方案。服务器

前世此生:Yahoo建立,最初为 hadoop的子项目,是google Chubby的开源实现,现为Apache的顶级项目。session

分布式应用程序能够基于zookeeper实现数据发布订阅、负载均衡、命名服务、分布式锁、集群管理等一系列功能。数据结构

zookeeper提供什么能力

zookeeper搭建的集群能够保证如下分布式协议负载均衡

  1. 顺序一致性

从同一个客户端发起的多个事务请求,将会严格按照发起顺序应用到各个节点分布式

  1. 原子性

全部事务请求的处理结果在集群中全部机器的应用状况一致。全部机器要么所有应用,要么所有不该用。oop

  1. 单一视图

不管链接的是哪一个节点,效果都同样性能

  1. 可靠性

一旦一个事务被应用,那么该事物状态会被保持google

  1. 实时性

zookeeper保证必定时间段后,客户端从服务端读取到最新状态server

zookeeper的特色

数据模型简单

zk的数据模型是一个共享的、树树型结构的名字空间。由一系列ZNode组成,ZNode被称为数据节点,具备层级关系。zk将全量数据存储在内存中,以此来实现提升服务器吞吐,减小延迟的目的

可构成集群

zk集群由一组机器构成,3~5台便可,组成zk集群的每台机器在内存中维护当前的服务器状态,而且每台机器之间都互相保持着通讯。集群中只要超过通常的机器能正常工做,那整个集群就能正常对外服务

顺序访问

对于来自客户端的每一个更新请求,zk都会分配一个全局惟一的递增编号,事务操做将按照这个编号按照前后顺序执行,且该特性可被实用于其余用途。

高性能

全量数据都存储在内存中,并直接服务于客户端的全部非事务请求,尤为适合读操做为主的场景。

zookeeper的基本概念

zk的概念此处只作基本介绍和简单讲解,后续作详细讲解

集群角色

  • Leader

一个,提供读写能力

  • Follower

多个,提供读能力,选举Leader能力

  • Observer

多个,提供读能力,不参与选举

会话

zk客户端和服务器之间是TCP长链接。sessionTimeout设置一个会话超时时间,链接异常断开时,只要在超时时间内链接上任意一台zk节点,以前的会话依然有效。

节点

1.机器节点

构成集群的机器

2.数据节点 ZNode

ZNode数据节点,数据模型中的数据单元。数据模型是一棵树,由斜杠(/)分割路径,保存数据内容和属性。可分为持久节点和临时节点两类

版本

每一个ZNode上面都有一个stat的数据结构,记录3个数据版本:

  1. version:当前ZNode版本
  2. cversion:当前ZNode子节点的版本
  3. aversion:当前ZNode的ACL版本

ACL

(access control lists) 权限控制清单

  • CREATE: 建立子节点权限
  • READ: 获取节点数据和子节点列表的权限
  • WRITE: 更新节点数据的权限
  • DELETE: 删除子节点的权限
  • ADMIN: 设置节点ACL的权限

create和delete都是针对子节点的权限控制

Watcher

事件监听。zk的重要特性,zk容许用户注册事件到指定节点,当特定时间触发,事件通知会被发送到具体的客户端。