【弄nèng - Zookeeper】Zookeeper入门教程(一)—— 基本概念与Windows安装

官方文档传送门
参考:
文章: https://www.yiibai.com/zookeeper/zookeeper_fundamentals.html
书籍:《从Paxos到ZooKeeper 分布式一致性原理与实践》

1. 简介

官方解释:

ZooKeeper是用于分布式应用程序的高性能协调服务。它在一个简单的界面中公开了通用服务,例如命名,配置管理,同步和组服务,因此您不必从头开始编写它们。您可以现成使用它来实现共识,组管理,领导者选举和状态协议。您可以根据自己的特定需求在此基础上构建。

简单来说:

ZooKeeper是分布式数据一致性解决方案,分布式应用可以基于他实现命名服务,配置管理,发布订阅,分布式协调通知,集群管理,Master选举,分布式锁和分布式队列等功能。开箱即用,使开发人员专注于业务开发。

1.1 功能

ZooKeeper提供的常见服务如下 :

  • 命名服务 - 按名称标识实体,可以是集群中的机器,提供的服务等。实现例如全局ID。

  • 配置管理 - 配置中心的集中管理和动态更新。

  • 分布式协调 /通知- 将分布式组件结合起来。

  • 集群管理 - 实时管理集群和节点状态,例如加入/离开节点。

  • 选举Master- 选举一个节点作为Master。

  • 锁定和同步服务 - 控制对共享资源的访问。

  • 分布式队列 - 分为FIFO先入先出队列和分布式屏障。

1.2 设计目标

简单的数据模型
ZooKeeper允许分布式进程通过共享的分层名称空间相互协调,名称空间由一系列被叫做ZNode的节点组成。其数据模型类似于文件系统,ZNode之间的层级关系像文件系统的目录与文件一样。与设计用于存储的典型文件系统不同的是ZooKeeper数据保留在内存中,这意味着ZooKeeper可以实现高吞吐量和低延迟数。

集群部署
组成ZooKeeper服务的服务器都必须彼此了解。它们维护内存中的状态图像,以及持久存储中的事务日志和快照。只要大多数服务器可用,ZooKeeper服务将可用。

顺序访问
对于更新请求,ZooKeeper会分配一个全局唯一的递增序号,来控制事务操作的先后顺序。

高性能
因为ZooKeeper全量数据存储在内存中,所以在以读为主的场景中很快。

1.3 分层命名空间

ZooKeeper提供的名称空间与标准文件系统的名称空间非常相似。名称是由斜杠(/)分隔的一系列路径元素。ZooKeeper名称空间中的每个节点都由路径标识。

ZooKeeper的层次命名空间
在这里插入图片描述

1.4 Znodes 类型

Znodes 被归类为持久性,短暂和顺序。

  • 持久性znode − 持久性 znode 处于活动状态,即使客户端,它创造了特定的 znode。默认情况下,所有的 znodes 是持久的,除非另有说明。

  • 短暂znode − 短暂znodes活跃,直到客户端还活着。当客户端被从 ZooKeeper 集合断开连接,然后znodes自动删除。由于这个原因,只有短暂znodes不允许再有一个子。如果短周期znode被删除,那么下一个合适的节点,将填补其位置。短暂znodes 发挥在领导选举中起重要作用。

  • 连续znode − 连续znodes可以是持久或短暂的。当一个新的znode作为连续znode创建的,则 ZooKeeper 通过将10位的序列号为原始名称设置znode的路径。例如,如果使用路径 /myapp 来创建一个znode作为连续znode,ZooKeeper将改变路径 /myapp0000000001并设置一个序列号为0000000002。如果两个连续znodes同时被创建,ZooKeeper从来不使用相同数量在每个znode上。连续znodes在锁定和同步中起到重要作用。

1.5 特性

ZooKeeper提供了一些保证:

  • 顺序一致性:来自客户端的更新将按照发送的顺序应用。
  • 原子性:更新成功或失败。没有部分结果。
  • 单一视图:无论客户端连接到哪个服务器,客户端都将看到相同的服务视图。
  • 可靠性:应用更新后,此更新将一直持续到客户端覆盖更新为止。
  • 实时性:确保系统的客户视图在特定时间范围内是最新的。

1.6 基本概念

集群角色
ZooKeeper分为Leader,Follower,Observer三种角色。Leader服务器提供读写服务,其他两个只提供读服务。Follower和Observer的唯一区别是,Observer服务器不参与Leader选举过程和写过半成功过程。

Stat
在ZooKeeper数据模型中每个znode维护一个stat结构。它由版本号,动作控制列表(ACL),时间戳和数据长度组成。

ACL
ZooKeeper采用ACL进行权限控制,类似于UNIX文件系统权限。他有5种权限,分别是CREATE,WRITE,READ,DELETE,ADMIN。

WATCHER
事件监听器,ZooKeeper允许客户端在指定节点下注册Watcher,当节点发生特定事件时,ZooKeeper服务器会发送响应的通知给客户端。

简单的API
create:在树中某个位置创建节点;
delete:删除节点;
exists:在某个位置检查是否存在节点;
get data:从一个节点读取数据;
set data:向一个节点写入数据;
get children:获取一个节点的子节点列表;
sync:等待数据传播完毕。

2. Windows安装

机器前提条件:java

下载

地址:http://zookeeper.apache.org/releases.html

修改配置

把 conf 目录下 zoo_sample.cfg 重命名为 zoo.cfg,并修改dataDir,改成自己的地址。

在这里插入图片描述

启动

运行zkServer
在这里插入图片描述
在这里插入图片描述
linux下单机,集群安装请参考https://blog.csdn.net/qq_37481017/article/details/82963517

3. Zookeeper可视化工具----zktools

参考:https://blog.csdn.net/rongbaojian/article/details/82078368

下载地址: https://pan.baidu.com/s/1cEZfgS4qtDh4VoE5qewC4g
提取码: f9rn
在这里插入图片描述


项目推荐

IT-CLOUD :IT服务管理平台,集成基础服务,中间件服务,监控告警服务等。
IT-CLOUD-ACTIVITI6 :Activiti教程源码。博文在本CSDN Activiti系列中。
IT-CLOUD-ELASTICSEARCH :elasticsearch教程源码。博文在本CSDN elasticsearch系列中。
IT-CLOUD-KAFKA :spring整合kafka教程源码。博文在本CSDN kafka系列中。
IT-CLOUD-KAFKA-CLIENT :kafka client教程源码。博文在本CSDN kafka系列中。

开源项目,持续更新中,喜欢请 Star~

发布了178 篇原创文章 · 获赞 48 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/yy756127197/article/details/104949393