分布式协调服务Zookeeper深入

Zookeeper是一个开源的分布式协调服务,用于解决数据管理问题,如命名服务、状态同步和服务发现。它采用类似文件系统的层级结构,每个节点称为Znode,具有版本控制和事件监听器(Watcher)功能。Zookeeper集群包含Leader、Follower和Observer三种角色,其中Leader负责事务处理和集群同步。在集群环境中,Zookeeper的安装涉及配置文件、创建数据目录和集群设置。Zookeeper的命令行操作包括创建、读取、更新和删除节点。服务启动流程涉及ZAB协议、服务器角色和选举流程,确保数据一致性。
摘要由CSDN通过智能技术生成

前言

zookeeper,它是一个分布式,开放源码的分布式应用程序协调服务,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

简单来说zookeeper=文件系统+监听通知机制。

zookeeper模型:

在这里插入图片描述
在zookeeper中,数据信息被保存在一个个数据节点上,这些节点被称为znode。znode是zookeeper中最小数据单位,在znode下面又可以再挂znode,这样一层层下去就形成了一个层次化命名空间znode树,我们称为 znode tree,它采用类似文件系统的层级树状结构进行管理。znode的节点路径标识方式和unix文件系统路径非常相似,都是由一系列使用斜杠进行分割的路径表示,开发人员可以向这个节点写入数据,也可以在这个节点下面创建子节点。

1 zookeeper的基本概念

集群角色
通常在分布式系统中,构成一个集群的每一台机器都有自己的角色,最典型的集群就是Master/Slave模式(主备模式),此情况下把所有能够处理写操作的机器称为Master机器,把所有通过异步复制方式获取最新数据,并提供读服务的机器为Slave机器。
而在Zookeeper中,这些概念被颠覆。他没有沿用传统的Master/Slave概念,而是引入了Leader、Follower、Observer三种角色。Zookeeper集群中的所有机器通过Leader选举来选定一台被程为Leader的机器,Leader服务器为客户端提供读写服务,除Leader外,其他机器包括Follower、Observer都提供读服务,唯一的区别在于Observer不参与Leader选举过程,不参与写操作的过半写成功策略,因此Observer可以在不影响写性能的情况下提升集群的性能。

会话(session)
Session指客户端会话,一个客户端连接是指客户端和服务器端之间的一个TCP长连接,Zookeeper对外的服务端口默认为2181,客户端启动的时候,首先会与服务器建立一个TCP连接,从第一次连接建立开始,客户端会话的周期也开始了,通过这个连接,客户端能够心跳检测与服务器保持有效的会话,也能够向Zookeeper服务器发送请求并接收响应,同时还能够通过该连接接受来自服务器的Watch事件通知。

数据节点(Znode)
数据节点称之为Znode。Zookeeper将所有数据存储在内存中,数据模型是一棵树(Znode Tree),由斜杠(/)进行分割的路径,就是一个Znode,例如/app/path1。每个Znode上都会保存自己的数据内容,同事还会保存一系列属性信息。

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

事件监听器(Watcher)
事件监听器(Watcher)是Zookeeper中一个很重要的特性,Zookeeper允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,Zookeeper服务端会将事件通知到感兴趣的客户端,该机制是Zookeeper实现分布式协调服务的重要特性。

ACL(Access Control Lists)
Zookeeper采用ACL策略来进行权限控制,其定义了如下五种权限:

  • CREATE:创建子节点的权限
  • READ:获取节点数据和子节点列表的权限
  • WRITE:更新节点数据权限
  • DELETE:删除子节点的权限
  • ADMIN:设置节点ACL的权限
    其中需要注意的是,CREATE和DELETE这两种权限都是针对子节点的权限控制

2 Zookeeper环境搭建

Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。

下面我们以集群模式为例介绍:
zookeeper安装以linux环境为例:
1、下载
首先我们下载稳定版本的zookeeper http://zookeeper.apache.org/releases.html
2、上传
将zookeeper压缩包上传到linux系统

3、创建目录zkcluster

mkdir zkcluster

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值