zookeeper相关知识

1.zk集群环境的安装

对于安装leader+follower 模式的集群, 大致过程如下:
1.配置主机名称到 IP 地址映射配置
2.修改ZooKeeper 配置文件
3.远程复制分发安装文件
4.设置myid
5.启动ZooKeeper 集群

第一步:下载zookeeper的压缩包,下载网址:http://archive.apache.org/dist/zookeeper/

第二步:解压zookeeper的压缩包到/export/servers路径下去,然后准备进行安装
cd /export/softwares
tar -zxvf zookeeper-3.4.9.tar.gz -C …/servers/

第三步:修改配置文件
第一台机器修改配置文件
cd /export/servers/zookeeper-3.4.9/conf/
cp zoo_sample.cfg zoo.cfg
mkdir -p /export/servers/zookeeper-3.4.9/zkdatas/
vim zoo.cfg
1

第四步:添加myid配置
在第一台机器的
/export/servers/zookeeper-3.4.9/zkdatas/这个路径下创建一个文件,文件名为myid ,文件内容为1
echo 1 > /export/servers/zookeeper-3.4.9/zkdatas/myid
在这里插入图片描述

第五步:安装包分发并修改myid的值
安装包分发到其他机器
第一台机器上面执行以下两个命令
scp -r /export/servers/zookeeper-3.4.9/ node02:/export/servers/
scp -r /export/servers/zookeeper-3.4.9/ node03:/export/servers/
第二台机器上修改myid的值为2
echo 2 > /export/servers/zookeeper-3.4.9/zkdatas/myid
3

第三台机器上修改myid的值为3
echo 3 > /export/servers/zookeeper-3.4.9/zkdatas/myid
4

第六步:三台机器启动zookeeper服务
三台机器启动zookeeper服务
这个命令三台机器都要执行
/export/servers/zookeeper-3.4.9/bin/zkServer.sh start
查看启动状态
/export/servers/zookeeper-3.4.9/bin/zkServer.sh status

2.zookeeper的shell操作

2.1客户端的连接
5

输入 help,输出zk shell 提示:
6

shell操作

2.2创建节点
2.2.1创建永久节点:
create /abc helloworld
2.2.2创建永久的顺序节点
create -s /aac helloworld
2.2.3创建临时节点
客户端创建的临时节点,只要客户端和服务端断开连接,临时节点消失
create -e /mytemp helloworld
163907

2.2.4创建临时顺序节点
create -s -e /temp helloworld
其中,-s 或-e 分别指定节点特性,顺序或临时节点,若不指定,则表示持 久节点;acl 用来进行权限控制。

2.3读取节点
zk里没有相对路径一说
ls 命令和 get 命令
ls 命令可以列出 Zookeeper 指定节点下的所有子节点,只能查看指定节点下的第一级的所有子节点;
get 命令可以获取Zookeeper 指定节点的数据内容和属性信息。
7

2.4更新节点
set path data [version]
data 就是要更新的新内容,version 表示数据版本。
8

dataVersion 已经变为1 了,表示进行了更新。

2.5删除节点
delete path [version]
若删除节点存在子节点,那么无法删除该节点,必须先删除子节点,再删除父节点。
9

10

rmr path 可以递归删除节点。
11

2.6其他命令
history 查看历史命令

setquota -n|-b val path 对节点增加限制。 n:表示子节点的最大个数 b:表示数据值的最大长度 val:子节点最大个数或数据值的最大长度 path:节点路径

3.zookeeper的数据模型

既具有文件夹的特性,又具有文件的特性
注意:临时节点不能有子节点

Znode特性

1.Znode 兼具文件和目录两种特点。既像文件一样维护着数据、元信息、ACL、 时间戳等数据结构,又像目录一样可以作为路径标识的一部分,并可以具有 子 Znode。用户Znode 具有增、删、改、查等操作(权限允许的情况下)。
2.Znode 具有原子性操作,读操作将获取与节点相关的所有数据,写操作也将替换掉节点的所有数据。另外,每一个节点都拥有自己的 ACL(访问控制列表),这个列表规定了用户的权限,即限定了特定用户对目标节点可以执行的操作。
3.Znode 存储数据大小有限制。ZooKeeper 虽然可以关联一些数据,但并没有 被设计为常规的数据库或者大数据存储,相反的是,它用来管理调度数据, 比如分布式应用中的配置文件信息、状态信息、汇集位置等等。这些数据的 共同特性就是它们都是很小的数据,通常以 KB 为大小单位。ZooKeeper 的服 务器和客户端都被设计为严格检查并限制每个
Znode 的数据大小至多 1M
,常规使用中应该远小于此值。
4.Znode 通过路径引用,如同Unix 中的文件路径。**路径必须是绝对的,因此他 们必须由斜杠字符来开头。**除此以外,他们必须是唯一的,也就是说每一个 路径只有一个表示,因此这些路径不能改变。在 ZooKeeper中,路径由 Unicode字符串组成,并且有一些限制。字符串"/zookeeper"用以保存管理 信息,比如关键配额信息。

数据结构

12

图中的每个节点称为一个
Znode。 每个 Znode 由 3 部分组成:
① stat:此为状态信息, 描述该 Znode 的版本, 权限等信息
② data:与该Znode 关联的数据
③ children:该 Znode 下的子节点

zk当中的节点类型
永久节点:
1.有序永久节点
2.无序永久节点
临时节点:
1.有序临时节点
2.无序临时节点

zk当中的四种模型
PERSISTENT:永久节点
EPHEMERAL:临时节点
PERSISTENT_SEQUENTIAL:永久节点、序列化
EPHEMERAL_SEQUENTIAL:临时节点、序列化

节点属性
每个 znode 都包含了一系列的属性,通过命令 get,可以获得节点的属性。

4.zookeeper的watch机制

ZooKeeper提供了分布式数据发布/订阅功能,一个典型的发布/订阅模型系统定义了一种一对多的订阅关系,能让多个订阅者同时监听某一个主题对象,当这个主题对象自身状态变化时,会通知所有订阅者,使他们能够做出相应的处理。ZooKeeper中,引入了 Watcher 机制来实现这种分布式的通知功能 。
ZooKeeper 允许客户端向服务端注册一个 Watcher 监听,当服务端的一些事件触发了这个 Watcher,那么就会向指定客户端发送一个事件通知来实现分布式的通知功能。
触发事件种类很多,如:节点创建,节点删除,节点改变,子节点改变等。
总的来说可以概括 Watcher 为以下三个过程:客户端向服务端注册 Watcher、
服务端事件发生触发 Watcher、客户端回调Watcher 得到触发事件情况

watch机制特点
170337

1.一次性触发
事件发生触发监听,一个 watcher event 就会被发送到设置监听的客户端,这种效果是一次性的,后续再次发生同样的事件,不会再次触发。
2.事件封装
ZooKeeper使用 WatchedEvent 对象来封装服务端事件并传递。
WatchedEvent包含了每一个事件的三个基本属性:
通知状态(keeperState),事件类型(EventType)和节点路径(path)

3.event 异步发送
watcher 的通知事件从服务端发送到客户端是异步的。
4.先注册再触发
Zookeeper中的 watch 机制,必须客户端先去服务端注册监听。

通知状态和事件类型

13

14

临时节点与zk的watch机制一起搭配使用,很有用,可以监听我们临时节点什么时候消失

zookeeper的javaAPI

jar包下载不下来怎么办
第一步:刷新工程,重新下载
第二步:删除maven仓库里面的lastupdated的文件
第三布:换maven的版本

第一步:创建java工程,导入jar包
第二步:节点操作
1.创建永久节点
15

2.创建临时节点
16

2.修改节点数据
17

3.节点数据查询
18

4.节点的watch机制

网络编程

网络编程是指用来实现网络互联的不同计算机上运行的程序间可以进行数据交换。对我们来说即如何用编程语言java 实现计算机网络中不同计算机之间的通信。

1.网络通讯三要素
1.1 IP地址
21

网络中计算机的唯一标识;
32bit(4 字节),一般用“点分十进制”表示,如 192.168.1.158; IP 地址=网络地址+主机地址 可分类:
A 类:第 1 个 8 位表示网络地址。剩下的 3 个 8 位表示主机地址 (主要留给ZF或者大型企业)
B 类:前 2 个 8 位表示网络地址。剩下的 2 个 8 位表示主机地址 (主要分配给中等规模的公司)
C 类:前 3 个 8 位表示网络地址。剩下的 1 个 8 位表示主机地址 (分配给小公司或者个人)
D 类地址用于在 IP 网络中的组播
E 类地址保留作研究之用。

1.2 端口号
用于标识进程的逻辑地址,不同进程的标识;
有效端口:0-65535,其中 0-1024 系统使用或保留端口。

1.3 传输协议
通讯的规则
常见协议: UDP(用户数据报协议)、TCP(传输控制协议)
22

网络模型
网络模型一般是指OSI 七层参考模型和TCP/IP 五层参考模型。
23

每一层实现各自的功能和协议,并且都为上一层提供业务功能。为了提供这种业务功能,下一层将上一层中的数据并入到本层的数据域中,然后通过加入报头或报尾来实现该层业务功能,该过程叫做数据封装。用户的数据要经过一次次包装,最后转化成可以在网络上传输的信号,发送到网络上。当到达目标计算机后,再执行相反的数据拆包过程。

24

阻塞和非阻塞:研究的是如果程序没有准备好,服务端该怎么响应
同步和异步:研究的是CPU没有准备好,该怎么响应程序的问题

RPC:远程过程调用
屏蔽了调用的细节,就跟我们调用本地的程序是一样的,不需要关心我们的服务端在哪里

25

26

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值