赞
踩
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
面临的问题:系统每个节点之间信息同步及共享
Zookeeper如何解决分布式系统面临的问题
ZooKeeper对分布式系统的协调,使用的是第二种方式,即共享存储。其实共享存储,分布式应用也需要和存储进行网络通信。
Zookeeper解决分布式系统协同工作问题
举个例子
美团,饿了么,等等应用都是zookeeper的现实生活版, 我开了个饭店,如何才能让大家都能吃到我们的饭菜?需要入驻美团,这样大家就可以在美团app中看到我的饭店,下订单,从而完成一次交易.
ZooKeeper是一个开源的分布式协调服务,由Apache软件基金会开发和维护。它旨在帮助构建分布式应用程序,提供高可用性和可靠性。ZooKeeper 允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。
ZooKeeper的主要特点如下:
1) 配置管理
2) 服务注册中心
3) 主从协调
上图,两台服务器 server 01、server 02 构成集群。如果是主备集群,那台服务器一开始是 Active ?那台服务器一开始是 Standby ? 可通过 ZooKeeper 进行协调指定。
4) 分布式锁
下载地址: https://mirrors.cloud.tencent.com/apache/zookeeper/zookeeper-3.7.1/
也可以直接从资料中获取
zoo_sample.cfg
复制一份,命名为 zoo.cfg
zoo.cfg
,修改 dataDir
路径,新增日志 dataLogDir
路径 dataDir=../data
dataLogDir=../log
# zookeeper时间配置中的基本单位 (毫秒) tickTime=2000 # 允许follower初始化连接到leader最大时长,它表示tickTime时间倍数 即:initLimit*tickTime initLimit=10 # 允许follower与leader数据同步最大时长,它表示tickTime时间倍数 syncLimit=5 #zookeper 数据存储目录及日志保存目录(如果没有指明dataLogDir,则日志也保存在这个文件中) dataDir=/tmp/zookeeper #对客户端提供的端口号 clientPort=2181 #单个客户端与zookeeper最大并发连接数 maxClientCnxns=60 # 保存的数据快照数量,之外的将会被清除 autopurge.snapRetainCount=3 #自动触发清除任务时间间隔,小时为单位。默认为0,表示不自动清除。 autopurge.purgeInterval=1
前提:由于zookeeper是使用java语言开发的,所以,在安装zookeeper之前务必先在本机安装配置好java环境!
1) 上传zookeeper
2) 解压zookeeper
1) 配置conf
进入到安装目录的…/conf目录下
可以看到这里有个zoookeeper给我们的一个样例配置文件:zoo_sample.cfg,我们在配置我们自己的zk时,需要做的就是将这个文件复制一份,并命名为:zoo.cfg,然后在zoo.cfg中修改自己的配置即可。
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg
[root@localhost conf]# vim zoo.cfg
zoo.cfg的相关配置项其实并不多,这边各个配置项的详细说明如下:
# zookeeper内部的基本单位,单位是毫秒,这个表示一个tickTime为2000毫秒,在zookeeper的其他配置中,都是基于tickTime来做换算的
tickTime=2000
#集群中的follower服务器(F)与leader服务器(L)之间 初始连接 时能容忍的最多心跳数(tickTime的数量)。
initLimit=10
#syncLimit:集群中的follower服务器(F)与leader服务器(L)之间 请求和应答 之间能容忍的最多心跳数(tickTime的数量)
syncLimit=5
# 数据存放文件夹,zookeeper运行过程中有两个数据需要存储,一个是快照数据(持久化数据)另一个是事务日志
dataDir=/tmp/zookeeper
# 客户端访问端口
clientPort=2181
2) 配置环境变量
vim /etc/profile
export ZOOKEEPER_PREFIX=/root/software/apache-zookeeper-3.7.1-bin
export PATH=$PATH:$ZOOKEEPER_PREFIX/bin
执行下面的命令,使配置生效
source profile
zkServer.sh start
可以看到我们的zkServer以及启动好了。
可以查看下启动状态:
zkServer.sh status
客户端连接
根目录下有一个自带的/zookeeper子节点,它来保存Zookeeper的配额管理信息,不要轻易删除。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。