Elastic-Job学习的前置课程,先认识一下Zookeeper。
Zookeeper概述
Zookeeper可以实现集群中的分布式协调服务,也就是在集群环境中,用来协调所有机器的工作;它保证了分布式数据的一致性。
Zookeeper的特点
-顺序一致性:同一个客户端发起的请求,最终按顺序应用到zk中。
-原子性:一个事务操作,集群中的所有机器要么都成功,要么都不成功,没有中间状态。
-单一视图:zk集群,无论客户端连得集群中的哪一台机器,获取到的数据都是一样的。
-可靠性:如果操作被一台机器接收,那么它将被所有的服务器接受。
-实时性:只能保证顺序一致性和最终一致性。
zookeeper的数据模型
zookeeper中可以保存数据;它会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统。
zk好比文件系统的话,那么ZNODE就是文件夹,文件夹里面可以放文件,ZNODE里面可以放数据,文件夹里面可以还有文件夹,ZNODE里面还可以套着另外的ZNODE,不同的是,文件夹里面可以存很多个文件,ZNODE里面只能存一段数据。
zookeeper单机环境搭建
在单位找了一台闲置的测试环境,尝试了一下zk的搭建,过程还是比较简单的。
安装JDK
先下载一个jdk1.8,注意安装包是rpm还是tar.gz格式的。rpm是redhat package 就是红帽的标准安装包,有些Linux系统是不支持的。rpm安装时会自动配置,一般都是lib安装到/urs/bin, bin安装到/usr/bin下面,如果没有安装到/urs/bin下,也会在该目录下建立一个软连接。
[root@TKNTS-POL1 tmp]# chmod +x jdk-8u144-linux-x64.rpm
[root@TKNTS-POL1 tmp]# rpm -ivh jdk-8u144-linux-x64.rpm
[root@TKNTS-POL1 tmp]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
安装zk
Linux 的软件安装目录是也是有讲究的:
/usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32。
/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下。
/opt:用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。
zk下载了之后,我是放到了/home/admin目录下面,其实最好还是能按照上面的要求来。
[root@TKNTS-POL1 admin]# pwd
/home/admin
[root@TKNTS-POL1 admin]# tar xzvf zookeeper-3.4.10.tar.gz
进入zookeeper目录下的conf子目录, 创建zoo.cfg:
[root@TKNTS-POL1 conf]# cp zoo_sample.cfg zoo.cfg
参数说明:
-tickTime: zookeeper中使用的基本时间单位, 毫秒值.
-dataDir: 数据目录. 可以是任意目录.
-dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置.
-clientPort: 监听client连接的端口号.
至此, zookeeper的单机模式已经配置好了. 启动server只需运行脚本:
[root@TKNTS-POL1 bin]# ./zkServer.sh start
后面有一些框架应用的时候会使用到zk,后面先介绍一下elastic-job...