zookeeper 主要干 配置管理,名字服务,提供分布式同步以及集群管理。
1,用于分布式系统中加载动态配置
一个程序或一个项目,它里边肯定有很多配置,如配置连哪个数据库,配置连哪个redis等。
如果很单一的,一个服务对应一个配置文件,自己就很好管理。但一旦涉及到多个服务对应一个配置文件 或者 改配置文件而又不去影响服务本身运行,就可以用zookeeper。改了配置文件,所有用到这个配置文件的服务,都可以感知到,都用最新的,不去用修改前的。
该配置不重启服务
2,用于名字服务,类似于dns服务
a.访问登录服务
b.访问登录服务
c.访问登录服务
传统做法直接配上登录服务的ip 和端口,在分布式情况下如果a 挂了,重启换了 ip和端口,就会有问题,所以就需要zookeeper。登录服务具体访问哪个服务,不自己配了。通过zookeeper拿到登陆服务
3,分布式锁
多个进程访问统一资源
假设有 A,B,C三个服务,有个请求:给张三转账100元。A,B,C都会收到这个请求,那张三就会收到三百。这显然 哒咩哒,不行。用到分布式锁,A要执行代码时 ,先从zoopeeker这儿获取把锁。B,C服务一看 ,A服务获取到锁了,他俩就不执行代码了。A服务执行完之后才释放锁。
if(lock==false){
//执行相应逻辑
}else{
}
4,集群管理 服务发现
三台服务器 A,B,C ,zookeeper会定期(每隔多少秒)的去ping,这几台服务器。如果说 C ping不通了,zookeeper会认为 A B 可用,C不可用。别的服务进来,可访问A,可访问B。但不会访问C。挂了又重启,ping的时候又能ping通,那就又可以访问了
----------------------------------------------------------------------------------------------------
分布式与集群:
第一代:SpringMvc (servlet),前后端在一起,并发量不大
完全可以撑住
弊端:前后端没有分离,项目可维护性差,可扩展性不强,扩展只能
这样扩展,有些不常用的服务,也被不必要的扩展。
第二代,前后端分离;
将服务尽可能的拆分,常用的服务多扩展,不常用的则不扩展。
每个服务这么多台,客户进来选哪个服务进哪,于是就有了zookeeper,管理分布式服务
举个例子就是可以理解为:一开始厨房做菜,洗菜,切菜,炒菜等等,都是一个人干活。然后订单量变多了,那就把,洗菜,切菜,炒菜等 分给 不同的人做。但是人多了又不好管理,某个活具体由哪个人来做,所以有了厨师长(zookeeper)分配工作。
zookeeper安装
1,下载安装包
wget https://downloads.apache.org/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
方案1:wget是一个下载指令,后面可以跟下载连接去从服务器上下载东西。
方案2:也可以先下载到windows上,再通过xftp传上去。
2,解压
解压tar.gz文件指令:tar -zxvf 文件名
tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
移动: mv + 文件名 要移动的地址+移动后的文件名(如果去掉要移动的地址,可以用于改名)
mv apache-zookeeper-3.6.2-bin /usr/local/zookeeper-3.6.2
复制:cp
修改文件:vim
查看程序是否运行: ps -ef|grep tomcat
进入到zookeeper目录下,创建data和logs文件
mkdir data
mkdir logs
3,修改配置文件
cd conf/ cp zoo_sample.cfg zoo.cfgvim zoo.cfg
进入到文件中后将原本的 dataDir 注释掉,然后在这条下方添加,注解确认一遍是不是这个路径
#数据文件夹dataDir=/usr/local/zookeeper-3.6.2/data#日志文件夹dataLogDir=/usr/local/zookeeper-3.6.2/logs
如果装过tomcat,zk可能启动不起来,因为3.5版本引用了AdminServer,AdminServer默认启用8080端口,启动了tomcat的,端口可能冲突,在配置文件里面加上个这个再重新启动试试
admin.serverPort=8888
// 修改系统环境变量
vim /etc/profile
结尾配置上以下
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.6.2/
export PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH
//让修改生效
source /etc/profile
打开服务器防火墙,开放2181端口,重启防火墙。
查看开放端口
netstat -ntl
如果没有看到2181端口号,建议重启服务器一下,我不知道什么原因我的服务器开放2181端口之后,查看不到,重启了服务器才有。
进入bin目录
cd bin/sh zkServer.sh./zkCli.sh start
上方 zkServer.sh 最后显示started
查看是否有进程(回车后有信息显示那就没问题)
lsof -i:2181
但如果zkCli这句启动不成功,没有welcome 你,那就试试换成这句
sh zkCli.sh
如果还不成功那应该 配置文件的问题详细请看这位大大的博客
zookeeper安装使用:参考连接(Centos7安装zookeeper详细流程(亲测绝对成功!)_Java大侠的博客-CSDN博客_centos7安装zookeeper)