为什么要用zookeeper?

redis是单实例的,基于内存的kv键值对存储数据的结构。redis在集群模式下,数据不是最终一致性的。zookeer作为分布式应用程序协调服务。
ZooKeeper 是一个集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务可用于分布式锁,分布式领导选举,配置管理等。所有这些类型的服务都以某种形式被分布式应用程序使用。每次实施它们时,都会进行大量工作来修复不可避免的错误和竞争条件。由于实现这些服务的难度,应用程序最初通常会忽略它们,这使得它们在发生变化时变得脆弱并且难以管理。即使正确完成,这些服务的不同实现也会在部署应用程序时导致管理复杂性。
Zookeeper 提供了一个类似于 Linux 文件系统的树形结构(可认为是轻量级的内存文件系统,但 只适合存少量信息,完全不适合存储大量文件或者大文件),同时提供了对于每个节点的监控与 通知机制。
zk也是基于内存进行数据存储的,主从架构集群,其所有节点的数据一样。
zk不是数据库,不可用于数据存储,zk是目录结构的,节点可存数据但是小于1M。

安装使用zookeeper

1.使用tar xf 命令解压

 tar xf zookeeper-3.4.6.tar.gz

进入解压后的conf配置文件目录
cp zoo_sample.cfg zoo.cfg
2.mkdir zk1 zk2 zk3 zk4
3.
cp -r zookeeper-3.4.6 zk1
cp -r zookeeper-3.4.6 zk1
cp -r zookeeper-3.4.6 zk1
cp -r zookeeper-3.4.6 zk1
4.分别修改zoo.cfg
clientPort=2181,2182,2183,2184
dataDir=/var/zk1,zk2,zk3,zk4

# The number of milliseconds of each tick
tickTime=2000   心跳时间,服务心跳间隔时间
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10  初始延迟次数
200msX10=20s ,20秒等待时间,超过时间判定为从断开
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=510秒不回,认为从有问题。
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/var/zk1  目录,myid存日志快照myid
version-2
zookeeper_server.pid

# the port at which the clients will connect
clientPort=2181,客户端连接端口号
# the maximum number of client connections.
# increase this if you need to handle more clients
maxClientCnxns=60  最大连接客户数
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
集群内的zookeeper
server.对应的1,23,4对应/var/zk1 的myid数据。
server.1=172.27.199.232:28881:38881
server.2=172.27.199.232:28882:38882
server.3=172.27.199.232:28883:38883
server.4=172.27.199.232:28884:38884

5.mkdir -p /var/zk1,zk2,zk3.zk4

echo 1 > /var/zk1/myid
echo 2 > /var/zk2/myid
echo 3 > /var/zk3/myid
echo 4 > /var/zk4/myid

6.启动服务
start-foreground表示前台启动,命令日志打印前台;status表示状态,查看角色是leader还是Follwer;stop表示停止服务;

zkServer.sh start-foreground /opt/mashibing/zk1/zookeeper-3.4.6/conf/zoo.cfg
zkServer.sh start-foreground /opt/mashibing/zk2/zookeeper-3.4.6/conf/zoo.cfg
zkServer.sh start-foreground /opt/mashibing/zk3/zookeeper-3.4.6/conf/zoo.cfg
zkServer.sh start-foreground /opt/mashibing/zk4/zookeeper-3.4.6/conf/zoo.cfg

7.连接客户端

zkCli.sh -server 172.27.199.232:2181
zkCli.sh -server 172.27.199.232:2182
zkCli.sh -server 172.27.199.232:2183
zkCli.sh -server 172.27.199.232:2184

8.客户端命令

[zk: 172.27.199.232:2184(CONNECTED) 6] ls /  查看目录节点
[ll, abc, zookeeper, succ, xoxo, xxoo, x, z]

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐