第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Zookeeper 單機(jī)模式

1. 前言

本小節(jié)我們來(lái)學(xué)習(xí)如何在 Linux 環(huán)境下部署 Zookeeper 的單機(jī)模式,以及 Zookeeper 的單機(jī)模式是如何運(yùn)行的。在學(xué)習(xí)本小節(jié)之前,同學(xué)們需要準(zhǔn)備好 Linux 環(huán)境,我們這里使用的是 Ubuntu-18.04.2 的鏡像。

2. Zookeeper 的安裝

2.1 安裝 Zookeeper 前置條件

在安裝 Zookeeper 之前,我們需要在 Linux 環(huán)境中安裝 Java 環(huán)境,我們這里使用的是 JDK 1.8.0_261,JDK 安裝本小節(jié)不做演示。我們執(zhí)行 java -version 命令就可以看見(jiàn)我們的 JDK 版本信息:

java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

有了 Java 環(huán)境,我們就可以進(jìn)行 Zookeeper 的安裝了。

2.2 安裝 Zookeeper

先讓我們進(jìn)入到一段視頻來(lái)感受一下安裝的過(guò)程吧~

2.2.1 下載安裝包

首先我們?nèi)?Zookeeper 官網(wǎng)下載 Zookeeper 的安裝包,這里我們的版本為 Apache ZooKeeper 3.6.1
地址:https://zookeeper.apache.org/releases.html

Tips: Zookeeper 官方建議 Apache ZooKeeper 3.6.1 使用 JDK 1.8.0_211 及以上版本。

2.2.2 解壓安裝包

我們?cè)?/usr/local 文件夾下新建 zookeeper文件夾,把下載好的 apache-zookeeper-3.6.1-bin.tar.gz 使用 ftp 工具放到 zookeeper 文件夾中進(jìn)行解壓,然后進(jìn)入解壓后的文件夾,查看 zookeeper 的文件列表,操作如下:

# 新建 zookeeper 文件夾
mkdir /usr/local/zookeeper
# 進(jìn)入 zookeeper 文件夾
cd /usr/local/zookeeper/
# 解壓 
tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz 
# 進(jìn)入解壓完成后的文件夾
cd apache-zookeeper-3.6.1-bin/
# 使用 ll 命令查看文件列表
ll

2.2.3 Zookeeper 文件目錄

我們來(lái)介紹一下文件列表的信息:

## 存放 zookeeper 命令的文件夾
drwxr-xr-x 2 cdd  cdd   4096 4月  21 14:59 bin/
## 存放 zookeeper 的配置文件
drwxr-xr-x 2 cdd  cdd   4096 4月  21 14:59 conf/
## 存放 zookeeper 的說(shuō)明文檔
drwxr-xr-x 5 cdd  cdd   4096 4月  21 15:00 docs/
## 存放 zookeeper 相關(guān) jar 包的文件夾
drwxr-xr-x 2 root root  4096 8月   1 10:01 lib/
## 開(kāi)源聲明
-rw-r--r-- 1 cdd  cdd  11358 4月  21 14:59 LICENSE.txt
## 公告文件
-rw-r--r-- 1 cdd  cdd    432 4月  21 14:59 NOTICE.txt
-rw-r--r-- 1 cdd  cdd   1963 4月  21 14:59 README.md
-rw-r--r-- 1 cdd  cdd   3166 4月  21 14:59 README_packaging.md

Zookeeper 的安裝包是解壓版的,開(kāi)箱即用,不需要進(jìn)行編譯工作。接下來(lái)我們就可以啟動(dòng) Zookeeper 服務(wù)了。

2.3 啟動(dòng) Zookeeper 服務(wù)

我們?cè)?Zookeeper 的根目錄新建一個(gè) data 文件夾來(lái)存放 Zookeeper 服務(wù)的數(shù)據(jù)信息。

mkdir data

接下來(lái)我們進(jìn)入 conf 文件夾來(lái)配置 Zookeeper 服務(wù)的啟動(dòng)信息:

# 進(jìn)入配置文件夾
cd conf/
# 查看文件列表
ll
-rw-r--r-- 1 cdd  cdd   535 4月  21 14:59 configuration.xsl
# 日志配置文件
-rw-r--r-- 1 cdd  cdd  3435 4月  21 14:59 log4j.properties
# zookeeper 核心配置文件樣本
-rw-r--r-- 1 cdd  cdd  1148 4月  21 14:59 zoo_sample.cfg

我們復(fù)制一份 zoo_sample.cfgzoo.cfg ,然后進(jìn)行編輯:

cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

我們配置 dataDir 數(shù)據(jù)文件夾為我們剛才新建的 data 目錄:

# 心跳檢查間隔時(shí)間:毫秒
tickTime=2000
# 初始連接時(shí)心跳檢查的最大數(shù)量
initLimit=10
# 請(qǐng)求和應(yīng)答時(shí)心跳檢查的最大數(shù)量
syncLimit=5
# 數(shù)據(jù)文件夾的路徑
dataDir=/usr/local/zookeeper/apache-zookeeper-3.6.1-bin/data
# 通信端口,默認(rèn)2181
clientPort=2181

配置好 zoo.cfg ,接下來(lái)我們進(jìn)入命令文件夾 bin,使用啟動(dòng)命令就可以啟動(dòng) zookeeper 服務(wù)了

cd /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin/
# zookeeper 服務(wù) 啟動(dòng)
./zkServer.sh start

控制臺(tái)輸出以下信息,就說(shuō)明我們已經(jīng)啟動(dòng)成功了:

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

2.4 Zookeeper 服務(wù)端命令

這里我們來(lái)介紹一下可以控制 Zookeeper 服務(wù)的命令:

# 啟動(dòng)
./zkServer.sh start
# 停止
./zkServer.sh stop
# 重啟
./zkServer.sh restart
# 當(dāng)前狀態(tài)
./zkServer.sh status

我們來(lái)看一下 Zookeeper 服務(wù)啟動(dòng)之后的狀態(tài)是什么樣的:

./zkServer.sh status
#我們可以通過(guò)客戶端連接 Zookeeper 服務(wù),地址為本機(jī)ip地址,端口號(hào)為 2181
Client port found: 2181. Client address: localhost.
# standalone 表示單機(jī)模式
Mode: standalone

接下來(lái)我們就可以使用 Zookeeper 的客戶端來(lái)連接 Zookeeper 服務(wù)了。

3. Zookeeper 客戶端

使用 Zookeeper 客戶端連接 Zookeeper 服務(wù),我們需要使用 ./zkCli.sh 命令:

# 進(jìn)入 bin 文件夾
cd /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin/
# 連接命令
./zkCli.sh 
# 連接時(shí)輸出信息
Connecting to localhost:2181
...
# 出現(xiàn)下面這一行時(shí),表示我們連接成功
[zk: localhost:2181(CONNECTED) 0] 

這里我們就可以使用上一節(jié)學(xué)習(xí)過(guò)的命令來(lái)操作節(jié)點(diǎn)了,我們來(lái)測(cè)試一下:

# 獲取根節(jié)點(diǎn)的子節(jié)點(diǎn)
ls /
# 輸出默認(rèn)的子節(jié)點(diǎn) zookeeper
[zookeeper]
# 創(chuàng)建根節(jié)點(diǎn)的子節(jié)點(diǎn) imooc
create /imooc
# 輸出創(chuàng)建成功信息
Created /imooc
# 創(chuàng)建后再次獲取根節(jié)點(diǎn)的子節(jié)點(diǎn)
ls /
# 輸出兩個(gè)子節(jié)點(diǎn)
[imooc, zookeeper]
# 我們可以給節(jié)點(diǎn)設(shè)置數(shù)據(jù)
set /imooc wiki
# 然后我們?cè)佾@取 imooc 節(jié)點(diǎn)的數(shù)據(jù)
get /imooc
# 輸出我們?cè)O(shè)置的信息
wiki
# 最后我們測(cè)試一下刪除命令
delete /imooc
# 刪除后再次獲取根節(jié)點(diǎn)的子節(jié)點(diǎn)
ls /
# 輸出子節(jié)點(diǎn) zookeeper,imooc 節(jié)點(diǎn)被刪除
[zookeeper]
# 退出 Zookeeper 客戶端命令
quit

通過(guò)上面的學(xué)習(xí),我們知道了如何部署單機(jī)模式的 Zookeeper 服務(wù),以及如何通過(guò) Zookeeper 客戶端連接 Zookeeper 服務(wù)端,來(lái)對(duì) Znode 節(jié)點(diǎn)進(jìn)行操作。那么 Zookeeper 是如何為我們提供服務(wù)的呢,接下來(lái)我們就來(lái)了解單機(jī)模式下的 Zookeeper 的工作流程。

4. 單機(jī)模式下 Zookeeper 服務(wù)的工作流程

本小節(jié)我們來(lái)了解單機(jī)模式下 Zookeeper 服務(wù)的工作流程。

4.1 Zookeeper 服務(wù)啟動(dòng)

  1. 在我們執(zhí)行啟動(dòng)命令 ./zkServer.sh start 時(shí),會(huì)啟動(dòng) Java 類 org.apache.zookeeper.server.quorum.QuorumPeerMain ,并執(zhí)行該類里面的方法 main.initializeAndRun(args),這個(gè)方法就是 Zookeeper 服務(wù)的啟動(dòng)入口;
  2. 在 Zookeeper 服務(wù)啟動(dòng)的過(guò)程中,會(huì)去解析 zoo.cfg 配置文件,包括數(shù)據(jù)文件目錄,端口號(hào)等信息;
  3. 讀取完配置文件,Zookeeper 服務(wù)會(huì)創(chuàng)建 DatadirCleanupManager 類作為數(shù)據(jù)清除管理器,用于清理歷史數(shù)據(jù),保證 Zookeeper 服務(wù)不會(huì)因?yàn)榇鎯?chǔ)空間影響其正常運(yùn)行。

4.2 Zookeeper 服務(wù)初始化

Zookeeper 服務(wù)初始化的過(guò)程主要是實(shí)例化服務(wù)對(duì)象,下面我們來(lái)介紹會(huì)實(shí)例化哪些對(duì)象

  1. ServerStats: ServerStats 類用于統(tǒng)計(jì) ZooKeeper 服務(wù)運(yùn)行過(guò)程中的狀態(tài)信息,包括接受到客戶端的請(qǐng)求次數(shù),處理客戶端請(qǐng)求的次數(shù),向客戶端發(fā)送請(qǐng)求的次數(shù)以及出現(xiàn)請(qǐng)求延遲情況的次數(shù)。也就是說(shuō)這個(gè)類會(huì)對(duì) Zookeeper 服務(wù)的運(yùn)行狀態(tài)和性能進(jìn)行監(jiān)控;
  2. FileTxnSnapLog: 我們用 FileTxnSnapLog 類來(lái)實(shí)現(xiàn) Zookeeper 服務(wù)的數(shù)據(jù)存儲(chǔ),對(duì)數(shù)據(jù)進(jìn)行持久化操作。數(shù)據(jù)存儲(chǔ)的路徑會(huì)讀取 zoo.cfg 配置文件的 dataDir;
  3. ServerCnxnFactory: 我們可以通過(guò) ServerCnxnFactory 類來(lái)指定 Zookeeper 的通信框架。在 Zookeeper 3.4.0 版本后,引入了第三方 Netty 等框架供我們選擇使用。

經(jīng)過(guò)一系列的對(duì)象實(shí)例化,Zookeeper 還需要從快照數(shù)據(jù)和事務(wù)日志中恢復(fù)數(shù)據(jù),才真正的完成啟動(dòng),這時(shí)就可以使用 Zookeeper 客戶端來(lái)進(jìn)行連接發(fā)送請(qǐng)求了。

4.3 Zookeeper 服務(wù)請(qǐng)求處理器

不同的客戶端發(fā)送的請(qǐng)求, ZooKeeper 服務(wù)會(huì)使用不同的請(qǐng)求處理器來(lái)處理不同的邏輯。在單機(jī)模式下的 Zookeeper 服務(wù),使用了 3 種請(qǐng)求處理器:
請(qǐng)求處理器

  1. PrepRequestProcessor
  2. SyncRequestProcessor
  3. FinalRequestProcessor

這三個(gè)處理器都實(shí)現(xiàn)了接口 RequestProcessor 。當(dāng)客戶端請(qǐng)求到達(dá) ZooKeeper 服務(wù)進(jìn)行處理的時(shí)候,嚴(yán)格按照上面的順序分別調(diào)用這 3 個(gè)處理器來(lái)處理請(qǐng)求中的對(duì)應(yīng)邏輯。

5. 總結(jié)

本小節(jié)我們學(xué)習(xí)了在 Linux 環(huán)境下部署單機(jī)模式的 Zookeeper 服務(wù),使用 Zookeeper 客戶端連接 Zookeeper 服務(wù),然后使用命令來(lái)操作 Znode 節(jié)點(diǎn),以及單機(jī)模式的 Zookeeper 服務(wù)的工作流程。接下來(lái)我們對(duì)本節(jié)內(nèi)容進(jìn)行總結(jié):

  1. 單機(jī)模式下的 Zookeeper 的安裝。
  2. Zookeeper 服務(wù)端命令 ./zkServer.sh 。
  3. Zookeeper 客戶端連接 Zookeeper 服務(wù)端命令 ./zkCli.sh
  4. Zookeeper 客戶端操作 Znode 節(jié)點(diǎn)的命令。
  5. 單機(jī)模式的 Zookeeper 工作流程。