zookeeper介绍及使用
zookeeper介绍
什么是分布式协调技术在这里插入代码片
分布式协调技术主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成“脏数据”的后果。
什么是分布式锁
为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度,而这个分布式协调技术的核心就是实现这个分布式锁
什么是zookeeper
一种分布式协调服务(分布式锁),同时也是服务注册与发现
docker 安装 zookeeper
部署集群
在usr/local/docker/zookeeper 下 创建docker-compose.yml
version: '3.1'
services:
zoo1:
image: zookeeper
restart: always
hostname: zoo1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: zookeeper
restart: always
hostname: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: zookeeper
restart: always
hostname: zoo3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
如果要看谁是leader 和 follower 的话
通过交互式的方式进入:
docker exec -it docker_zool_1 /bin/bash
pwd
# /zookeeper-3.4 # 这是指当前根目录下
cd bin
./zkServer.sh status
# follower # 发现 docker_zool_1 是一个 从节点
看一下zookeeper 的配置文件
配置文件路径:/conf/zoo.cfg
clientPort=2181
dataDir=/data
dataLogDir=/datalog
tickTime=2000 # 心跳频率 2000毫秒(客服端和服务端的时间间隔)
initLimit=5 # leader 和 follower 之间连接心跳允许最大应答次数,2000 * 5 = 10秒
syncLimit=2 # leader 和 follower 之间请求应答时间长度 ,2000 * 2 = 4秒
autopurge.snapRetainCount=3 # 指定了清理频率,单位是小时,需要填写一个 1 或更大的整数,默认是 0,表示不开启自己清理功能。
autopurge.purgeInterval=0 # 指定了需要保留的文件数目。默认是保留 3 个。
maxClientCnxns=60 # 限制连接到 Zookeeper 的客户端的数量,限制并发连接的数量,它通过 IP 来区分不同的客户端。此配置选项可以用来阻止某些类别的 Dos 攻击。将它设置为 0 或者忽略而不进行设置将会取消对并发连接的限制。
server.1=192.168.0.1:2888:3888
server.2=192.168.0.2:2888:3888
server.3=192.168.0.3:2888:3888