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.cfg

vim 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

Logo

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

更多推荐