文章目录
前言
简单学了一些Zookeeper,仅是完成了安装。应用部分后面接着学!
提示:以下是本篇文章正文内容,下面案例可供参考
一、Zookeeper是什么?干什么用的?
Zookeeper是一个分布式的、开源的应用程序的协调服务。是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
这些服务又是干什么的呢?
1、配置管理
做项目的是不只是代码,我们还会链接一些应用、服务什么的其他,而链接他们都需要配置,(比如链接数据库就要配置吧)。小小的项目可能只要链接一种服务,那可以直接引入配置文件,在文件里写配置。但要是有多个服务要连接呢,需要多个配置,而且配置可能还会有变化,那就需要一个地方来放这些配置情况,所有服务来这个地方取配置就可以(就像是从数据库里取数据一样) 。
当然这个地方存放配置文件,那么就需要这个地方有很高的可靠性了。分布式集群就能很好的提高可靠性,某个服务器崩溃了,依旧能从其他子服务器上获取同样的配置文件。但是使用了集群就要面对“一致性”的问题,要保证每个集群上的配置文件都是一样的,修改删除等也是要同步的。这个问题的解决办法是,一个叫Zab的 ‘一致性协议‘来实现。
以上的一结合就是Zookeeper,它是分布式的协调服务。(可靠,一致等)。
2、名字服务
这项服务就像是DNS。我们能通过ip地址访问一个系统,但ip地址不好记,我们就出了域名。DNS就负责 让你输入域名能够转到对应的ip地址,他会让我们访问一个大家都熟知的(know)的点,这个点告诉我们你这个域名对应的ip是什么。
在我们的应用中也会出现这类问题,需要很多服务,在本地保存服务的地址又不太方便,就能像DNS那样,让我们访问一个熟知的点,它会提供服务的入口。
3、分布式锁
Zookeeper是个分布式协调服务,就是协调分布式集群的工作,保证整个集群的效率和可靠性。在多个服务器上部署相同的服务,这个服务器崩溃就去另一个服务器执行,这里需要协调,同时要保证这些服务器不能同时做一个服务,只能让一个服务器去做,这样有会没有效率。通常一种方法就是用分布式锁。在某一时刻只让一个服务去干活,这台服务器出问题的时候就释放锁,立即跳转到另外一个服务器进行。(这里可能会想到线程锁,大致思想可能是相同的,但是分布式锁锁的是进程,线程锁锁的是线程。)
4、集群管理(服务发现)
作为中间件,Zookeeper左边链接服务,右边链接多个服务器。由Zookeeper来管理这些服务器,他不定期ping这些服务器,让其中之一来接收客户端的请求。存活的能接收,死的不能。死了又活了也能被Zookeeper调动。哪些个节点可以用,哪些不可用,有多少节点,新加进来的节点是哪些等等。其他节点也需要感知这些变化并作出对应的决策。
二、Zookeeper(单机版)安装
1.配置好java环境
自己下在jdk,解压,修改环境变
vim /etc/profile
添加环境变量
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
使环境变量生效
source /etc/profile
下载安装包到服务器上,解压
tar -xvf apache-zookeeper-3.6.3-bin.tar.gz
进入zookeeper-3.6.3文件中 的conf文件夹下,可以看到zoo_sample.cfg,复制一份命名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
返回上级目录,也就是zookeeper-3.6.3目录下 创建zk数据文件夹
mkdir data
创建日志文件
mkdir logs
#修改配置文件,进入到Zookeeper文件下的dataDir改为刚才创建的data目录
vim zoo.cfg
进入之后找到dataDir修改为刚才自己创建的目录
找到dataLogs修改为刚才自己创建的目录
#进入zookeeper-3.6.3的bin下,启动
./zkServer.sh start ../cnof/zoo.cfg //启动服务端 启动.sh命令 参数 配置文件路径
./zkCli.sh start //启动客户端
zk启动不起来的,因为3.5版本引用了AdminServer,AdminServer默认启用8080端口,启动了tomcat的,端口可能冲突,在配置文件里面加上个这个再重新启动试试
admin.serverPort=8888
以上基本上就能启动Zookeeper
总结
这是简单安装Zookeeper,会遇到报错以及java链接Zookeeper下次总结。