目录
1.功能简介
前言
zookeeper主要用于协调分布式服务、 配置维护、组合管理和命名服务,通过使用类似于文件操作系统的目录结构树来维护元数据。参考官网 https://zookeeper.apache.org/
本文主要介绍zk的主要功能,命令行、数据结构和Java API编程demo
1.功能
集群管理 | 作为集群的入口,可以查找集群的存活主机列表 |
服务注册 | dubbo zk作为注册中心,服务提供者将服务注册到Zookeeper, 客户端在调用服务之前先到Zookeeper中查找服务,再调用服务。 |
分布式锁 | 在多个主机并发捞取任务,为了仅一台及其执行,通过获取分布式锁控制仅一台及其执行任务 |
配置文件集中管理 | 统一管理分布式环境中的配置文件 |
...... | ...... |
2.安装
从官方下载后, 解压后即可使用
- 服务配置 /${安装路径}/zookeeper-3.4.14/conf/zoo.cfg,可以配置如clientPort=2181
- 服务启动 cd /${安装路径}/soft/zookeeper-3.4.14/bin &&sh zkServer.sh start
- 客户端连接 sh zkCli.sh -server localhost:2181
3.ZKshell操作命令
通过sh /${安装路径}/soft/zookeeper-3.4.14/bin/zkCli.sh -server localhost:2181 可以进入zookeeper命令行模式(类似于mysql和redis 客户端连接)
其实ZK就是一个树形数据结构,存放在内存汇总,提供了API可以对这颗树进行查找节点、修改节点的值等等操作。
追根到底就是对数据的增删改查。
命令 | 操作 |
ls path [watch] | 查看路径的子节点, 不过不存在返回Node does not exist: /test |
create path data acl | 创建节点,父path必须存在 类似与创建一个目录 |
get path [watch] | 去一个节点上存储的data值 |
set path data [version] | 设置节点的值 |
delete path [version] | 删除节点 子节点为空 |
deleteall path | 删除所有包括子节点 |
stat path [watch] | 查看节点描述元信息 |
4.基础概念
Znode数据节点、Watcher监听器、ACL访问控制立标、会话(Session)
4.1 Znode
上节有说zk是基于一个树形数据结构,我们都知道树由各个树节点组成,数据节点一一ZNode。如上图,结构特别想linux操作系统的文件系统设计,区别就是zk的将该树存储在内存,而linux存储在磁盘。存储在内存的问题就是会在zk服务重启后原来的数据易丢失,及持久化问题。
每个节点上都会保存自己的数据内容,同时还会保存一系列属性信息,Zxid(Transaction Id),version