Elastic-Job學(xué)習(xí)的前置課程麻献,先認(rèn)識(shí)一下Zookeeper海蔽。
Zookeeper概述
Zookeeper可以實(shí)現(xiàn)集群中的分布式協(xié)調(diào)服務(wù)洪乍,也就是在集群環(huán)境中庆亡,用來協(xié)調(diào)所有機(jī)器的工作;它保證了分布式數(shù)據(jù)的一致性录煤。
Zookeeper的特點(diǎn)
-順序一致性:同一個(gè)客戶端發(fā)起的請求鳄厌,最終按順序應(yīng)用到zk中。
-原子性:一個(gè)事務(wù)操作妈踊,集群中的所有機(jī)器要么都成功了嚎,要么都不成功,沒有中間狀態(tài)廊营。
-單一視圖:zk集群歪泳,無論客戶端連得集群中的哪一臺(tái)機(jī)器,獲取到的數(shù)據(jù)都是一樣的露筒。
-可靠性:如果操作被一臺(tái)機(jī)器接收夹囚,那么它將被所有的服務(wù)器接受。
-實(shí)時(shí)性:只能保證順序一致性和最終一致性邀窃。
zookeeper的數(shù)據(jù)模型
zookeeper中可以保存數(shù)據(jù)荸哟;它會(huì)維護(hù)一個(gè)具有層次關(guān)系的數(shù)據(jù)結(jié)構(gòu),它非常類似于一個(gè)標(biāo)準(zhǔn)的文件系統(tǒng)瞬捕。
zk好比文件系統(tǒng)的話鞍历,那么ZNODE就是文件夾,文件夾里面可以放文件肪虎,ZNODE里面可以放數(shù)據(jù)劣砍,文件夾里面可以還有文件夾,ZNODE里面還可以套著另外的ZNODE扇救,不同的是刑枝,文件夾里面可以存很多個(gè)文件,ZNODE里面只能存一段數(shù)據(jù)迅腔。
zookeeper單機(jī)環(huán)境搭建
在單位找了一臺(tái)閑置的測試環(huán)境装畅,嘗試了一下zk的搭建,過程還是比較簡單的沧烈。
安裝JDK
先下載一個(gè)jdk1.8掠兄,注意安裝包是rpm還是tar.gz格式的。rpm是redhat package 就是紅帽的標(biāo)準(zhǔn)安裝包锌雀,有些Linux系統(tǒng)是不支持的蚂夕。rpm安裝時(shí)會(huì)自動(dòng)配置,一般都是lib安裝到/urs/bin, bin安裝到/usr/bin下面腋逆,如果沒有安裝到/urs/bin下婿牍,也會(huì)在該目錄下建立一個(gè)軟連接。
[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:系統(tǒng)級(jí)的目錄惩歉,可以理解為C:/Windows/等脂,/usr/lib理解為C:/Windows/System32俏蛮。
/usr/local:用戶級(jí)的程序目錄,可以理解為C:/Progrem Files/慎菲。用戶自己編譯的軟件默認(rèn)會(huì)安裝到這個(gè)目錄下嫁蛇。
/opt:用戶級(jí)的程序目錄锨并,可以理解為D:/Software露该,opt有可選的意思,這里可以用于放置第三方大型軟件(或游戲)第煮,當(dāng)你不需要時(shí)解幼,直接rm -rf掉即可。在硬盤容量不夠時(shí)包警,也可將/opt單獨(dú)掛載到其他磁盤上使用撵摆。
zk下載了之后,我是放到了/home/admin目錄下面害晦,其實(shí)最好還是能按照上面的要求來特铝。
[root@TKNTS-POL1 admin]# pwd
/home/admin
[root@TKNTS-POL1 admin]# tar xzvf zookeeper-3.4.10.tar.gz
進(jìn)入zookeeper目錄下的conf子目錄, 創(chuàng)建zoo.cfg:
[root@TKNTS-POL1 conf]# cp zoo_sample.cfg zoo.cfg
參數(shù)說明:
-tickTime: zookeeper中使用的基本時(shí)間單位, 毫秒值.
-dataDir: 數(shù)據(jù)目錄. 可以是任意目錄.
-dataLogDir: log目錄, 同樣可以是任意目錄. 如果沒有設(shè)置該參數(shù), 將使用和dataDir相同的設(shè)置.
-clientPort: 監(jiān)聽client連接的端口號(hào).
至此, zookeeper的單機(jī)模式已經(jīng)配置好了. 啟動(dòng)server只需運(yùn)行腳本:
[root@TKNTS-POL1 bin]# ./zkServer.sh start
后面有一些框架應(yīng)用的時(shí)候會(huì)使用到zk,后面先介紹一下elastic-job...