Zookeeper系列 (一) zookeeper的概念

喵了个喵,我又遇到瓶颈了

[TOC]

zookeeper是什么

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

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

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

zookeeper提供什么能力

zookeeper搭建的集群可以保证以下分布式协议

  1. 顺序一致性

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

  2. 原子性

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

  3. 单一视图

    无论连接的是哪个节点,效果都一样

  4. 可靠性

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

  5. 实时性

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

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允许用户注册事件到指定节点,当特定时间触发,事件通知会被发送到具体的客户端。

文章目录
  1. 1. zookeeper是什么
  2. 2. zookeeper提供什么能力
  3. 3. zookeeper的特点
    1. 3.1. 可构成集群
    2. 3.2. 顺序访问
    3. 3.3. 高性能
  4. 4. zookeeper的基本概念
    1. 4.1. 集群角色
    2. 4.2. 会话
    3. 4.3. 节点
      1. 4.3.1. 1.机器节点
      2. 4.3.2. 2.数据节点 ZNode
    4. 4.4. 版本
    5. 4.5. ACL
    6. 4.6. Watcher
    7. 4.7.
|