zookeeper-基础

目录

一、概念

二、配置

三、基础知识

1. 独立模式与仲裁模式

2. znode节点类型

3. 监视点

4. znode版本

5. 会话

6. 常用指令


作为学习笔记,本文记录了《Zookeeper分布式过程协同技术详解》学习过程中的一些基础知识。

一、概念

1. zookeeper是什么,有什么用?

zookeeper = 运行在一组服务器上的zookeeper服务 + 客户端API。通过zookeeper的客户端API,能够帮助构建分布式系统,实现分布式系统的一些核心功能:数据发布/订阅、群首选举、分布式锁等。

2. 什么叫帮助构建?

zookeeper没有直接实现满足协作需求的功能,比如没有直接提供分布式锁机制的3个基本方法:创建锁、获取锁、释放锁。但是通过zookeeper客户端API的花式调用,可以实现分布式锁的功能。这样更具灵活性吧。

3. 为什么能帮助构建?

linux系统进程通信方式中有1种是共享内存,Java内存模型中线程通信的方式分为:消息传递、共享内存。

分布式系统中应用服务的进程通信方式:① 通过网络进行信息交换;② 共享内存模型,而zookeeper属于后者,以类似文件目录的形式存储数据,供应用服务节点共享。

分布式系统的数据分为应用数据和协同数据,比如邮箱服务中,邮箱内容是应用数据,不同邮箱客户端请求哪个邮箱服务器的映射关系就是协同数据。zookeeper管理的就是协同数据。

二、配置

具体安装步骤可以参考其它博客或书。仲裁模式的部分配置如下:

# zoo-1.cfg 部分配置内容
clientPort=2181
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
4lw.commands.whitelist=*

# zoo-2.cfg 部分配置内容
clientPort=2182
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
4lw.commands.whitelist=*

# zoo-3.cfg 部分配置内容
clientPort=2183
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
4lw.commands.whitelist=*

server.n项指定了编号为n的zookeeper服务器配置,每项分为3个部分:第1部分是服务器n的IP地址或主机名,第2、3部分是TCP端口号,分别用于仲裁通信和群首选举。

上述配置是在同一台笔记本上运行3个服务器进程,因此每一项使用不同的端口号;通常,在不同服务器上运行每个服务器进程,可以配置相同的端口号。

配置项4lw.commands.whitelist=*:避免使用特定指令查询zookeeper信息时报错 “ zookeeperis not executed because it is not in the whitelist ”。

三、基础知识

1. 独立模式与仲裁模式

独立模式(单机模式):1个单独的服务器;

仲裁模式(集群模式):1组zookeeper服务器,它们之间可以进行状态复制,并同时服务于客户端的请求。仲裁模式建议服务器个数为奇数,比如总数5个允许崩溃2个,总数6个也只允许崩溃2个。

2. znode节点类型

持久节点(persistent):只能通过delete删除

临时节点(ephemeral):当创建该节点的客户端崩溃或关闭了与zookeeper服务器的连接时,这个节点就会被删除。目前不允许临时节点拥有子节点,将来版本可能会允许。

有序节点(sequential):当创建有序节点时,节点会被分配唯一一个单调递增的整数作为序号,序号会被追加到路径之后。

znode一共有4种类型:持久的、临时的、持久有序的、临时有序的。

3. 监视点

监视点是一个单次触发的操作,即监视点只会触发一个通知,为了持续监视,客户端必须以在每次通知后设置新的监视点。

通知机制的重要保障:对同一个znode的操作,先向客户端发送通知,再对该节点进行变更,虽然变化传递给客户有时延,但保障客户端以全局的顺序来观察zookeeper的状态。

4. znode版本

每个znode都有1个版本号,它随着每次数据变化而自增。

5. 会话

客户端通过TCP协议与服务器进行连接并通信,客户端提交给zookeeper的所有操作均关联在一个会话上。

会话提供了顺序保障,同一个会话的请求以FIFO(先进先出)顺序执行。如果客户端拥有多个并发会话,多个会话间未必能保持FIFO。

当会话无法与当前连接的服务器继续通信时,会话可能会转移到另一个服务器,注意:客户端重新连接的另一个zk服务器,状态不能比之前断开的zk服务器

6. 常用指令

为了方便使用指令,可以设置环境变量,对于mac:

(1)修改~/.bash_profile文件:增加export PATH=${PATH}:/Users/yeleits/study/apache-zookeeper-3.6.2-bin/bin

注意:① /etc/profile的配置对所有用户生效;② ~/.bash_profile的配置只对当前用户生效

(2)重启使生效:source ~/.bash_profile

指令

含义

zkServer.sh start zoo-1.cfg

以指定配置文件zoo-1.cfg启动1个zookeeper服务器进程

zkServer.sh start-foreground zoo-2.cfg

带启动日志的启动命令

zkServer.sh stop zoo-3.cfg

关闭

zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

客户端连接命令

ls 路径

查看路径下的子节点列表,/表示根路径

ls 路径 true

查看子节点列表,true表示在该znode设置其子节点变化的监视点

create -e /xx1/xx2 "content"

-e表示在/xx1节点下创建临时节点/xx1/xx2,"content"写入节点的数据

stat 路径 true

stat指令得到指定节点的属性,在路径后设置true表示添加监视点

在终端命令行用telnet localhost 2181登录zookeeper,使用四字命令

命令

含义

srvr

输出服务器的详细信息:zk版本、接收/发送包数量、连接数、模式(leader/follower)、节点总数

stat

输出服务器的详细信息:接收/发送包数量、连接数、模式(leader/follower)、节点总数、延迟,所有客户端的列表

dump

列出未经处理的会话和临时节点(只在leader上有效)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值