中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

ZooKeeper的架構(gòu)由什么組成

這篇文章主要講解了“ZooKeeper的架構(gòu)由什么組成”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ZooKeeper的架構(gòu)由什么組成”吧!

成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計服務(wù),網(wǎng)站設(shè)計,網(wǎng)站托管等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對手中脫穎而出成都創(chuàng)新互聯(lián)公司

1. Zookeeper簡介

1.1 Zookeeper是什么?

Zookeeper 是一個分布式協(xié)調(diào)服務(wù)的開源框架。 主要用來解決分布式集群中應(yīng)用系統(tǒng)的一致性問題,
例如怎樣避免同時操作同一數(shù)據(jù)造成臟讀的問題。分布式系統(tǒng)中數(shù)據(jù)存在一致性的問題!!
* ZooKeeper 本質(zhì)上是一個分布式的小文件存儲系統(tǒng)。 提供基于類似于文件系統(tǒng)的目錄樹方式的數(shù)
據(jù)存儲,并且可以對樹中的節(jié)點進行有效管理。
* ZooKeeper 提供給客戶端監(jiān)控存儲在zk內(nèi)部數(shù)據(jù)的功能,從而可以達到基于數(shù)據(jù)的集群管理。 諸
如: 統(tǒng)一命名服務(wù)(dubbo)、分布式配置管理(solr的配置集中管理)、分布式消息隊列
(sub/pub)、分布式鎖、分布式協(xié)調(diào)等功能。

1.2 zookeeper的架構(gòu)組成

ZooKeeper的架構(gòu)由什么組成

Leader

  • Zookeeper 集群工作的核心角色

  • 集群內(nèi)部各個服務(wù)器的調(diào)度者。

  • 事務(wù)請求(寫操作) 的唯一調(diào)度和處理者,保證集群事務(wù)處理的順序性;對于 create, setData, delete 等有寫操作的請求,則需要統(tǒng)一轉(zhuǎn)發(fā)給leader 處理, leader 需要決定編號、執(zhí) 行操作,這個過程稱為一個事務(wù)。

Follower

  • 處理客戶端非事務(wù)(讀操作) 請求,

  • 轉(zhuǎn)發(fā)事務(wù)請求給 Leader;

  • 參與集群 Leader 選舉投票 2n-1臺可以做集群投票。 此外,針對訪問量比較大的 zookeeper 集群, 還可新增觀察者角色。

Observer

  • 觀察者角色,觀察 Zookeeper 集群的最新狀態(tài)變化并將這些狀態(tài)同步過來,其對于非事務(wù)請求可 以進行獨立處理,對于事務(wù)請求,則會轉(zhuǎn)發(fā)給 Leader服務(wù)器進行處理。

  • 不會參與任何形式的投票只提供非事務(wù)服務(wù),通常用于在不影響集群事務(wù)處理能力的前提下提升集 群的非事務(wù)處理能力。增加了集群增加并發(fā)的讀請求。

ZooKeeper的架構(gòu)由什么組成

ZK也是Master/slave架構(gòu),但是與之前不同的是zk集群中的Leader不是指定而來,而是通過選舉產(chǎn) 生。

1.3 Zookeeper 特點

1. Zookeeper:一個領(lǐng)導者(leader:老大),多個跟隨者(follower:小弟)組成的集群。
2. Leader負責進行投票的發(fā)起和決議,更新系統(tǒng)狀態(tài)(內(nèi)部原理) 
3. Follower用于接收客戶請求并向客戶端返回結(jié)果,在選舉Leader過程中參與投票
4. 集群中只要有半數(shù)以上節(jié)點存活,Zookeeper集群就能正常服務(wù)。
5. 全局數(shù)據(jù)一致:每個server保存一份相同的數(shù)據(jù)副本,Client無論連接到哪個server,數(shù)據(jù)都是一
致的。
6. 更新請求順序進行(內(nèi)部原理) 
7. 數(shù)據(jù)更新原子性,一次數(shù)據(jù)更新要么成功,要么失敗。

2. Zookeeper環(huán)境搭建

2.1 Zookeeper的搭建方式

Zookeeper安裝方式有三種,單機模式和集群模式以及偽集群模式。
■ 單機模式:Zookeeper只運行在一臺服務(wù)器上,適合測試環(huán)境;
■ 偽集群模式:就是在一臺服務(wù)器上運行多個Zookeeper 實例;
■ 集群模式:Zookeeper運行于一個集群上,適合生產(chǎn)環(huán)境,這個計算機集群被稱為一個“集合體”

2.2 Zookeeper集群搭建

下載

  • 首先我們下載穩(wěn)定版本的zookeeper http://zookeeper.apache.org/releases.html

上傳

下載完成后,將zookeeper壓縮包 zookeeper-3.4.14.tar.gz上傳到linux系統(tǒng)/opt/lagou/software

解壓 壓縮包

tar -zxvf zookeeper-3.4.14.tar.gz -C ../servers/

修改配置文件創(chuàng)建data與log目錄

#創(chuàng)建zk存儲數(shù)據(jù)目錄 
mkdir -p /opt/lagou/servers/zookeeper-3.4.14/data
#創(chuàng)建zk日志文件目錄
mkdir -p /opt/lagou/servers/zookeeper-3.4.14/data/logs
#修改zk配置文件 cd /opt/lagou/servers/zookeeper-3.4.14/conf 
#文件改名 mv zoo_sample.cfg zoo.cfg vim zoo.cfg 
#更新datadir dataDir=/opt/lagou/servers/zookeeper-3.4.14/data 
#增加logdir dataLogDir=/opt/lagou/servers/zookeeper-3.4.14/data/logs 
#增加集群配置
##server.服務(wù)器ID=服務(wù)器IP地址:服務(wù)器之間通信端口:服務(wù)器之間投票選舉端口 
server.1=linux121:2888:3888
server.2=linux122:2888:3888 
server.3=linux123:2888:3888 
#打開注釋
#ZK提供了自動清理事務(wù)日志和快照文件的功能,這個參數(shù)指定了清理頻率,單位是小時 
autopurge.purgeInterval=1

ZooKeeper的架構(gòu)由什么組成

添加myid配置

  1. 在zookeeper的 data 目錄下創(chuàng)建一個 myid 文件,內(nèi)容為1,這個文件就是記錄每個服務(wù)器的ID

cd /opt/lagou/servers/zookeeper-3.4.14/data 
echo 1 > myid

ZooKeeper的架構(gòu)由什么組成

安裝包分發(fā)并修改myid的值

rsync-script /opt/lagou/servers/zookeeper-3.4.14
修改myid值 linux122
echo 2 >/opt/lagou/servers/zookeeper-3.4.14/data/myid
修改myid值 linux123
echo 3 >/opt/lagou/servers/zookeeper-3.4.14/data/myid
依次啟動三個zk實例
  • 啟動命令(三個節(jié)點都要執(zhí)行)

/opt/lagou/servers/zookeeper-3.4.14/bin/zkServer.sh start
  • 查看zk啟動情況

/opt/lagou/servers/zookeeper-3.4.14/bin/zkServer.sh status

ZooKeeper的架構(gòu)由什么組成

  • 集群啟動停止腳本

vim zk.sh 

#!/bin/sh
echo "start zookeeper server..." 
if(($#==0));then 
echo "no params";
exit; 
fi
hosts="linux121 linux122 linux123" 
for host in $hosts 
do
ssh $host "source /etc/profile; /opt/lagou/servers/zookeeper- 3.4.14/bin/zkServer.sh $1" 
done

3. Zookeeper數(shù)據(jù)結(jié)構(gòu)與監(jiān)聽機制

  • ZooKeeper數(shù)據(jù)模型Znode

在ZooKeeper中,數(shù)據(jù)信息被保存在一個個數(shù)據(jù)節(jié)點上,這些節(jié)點被稱為znode。ZNode 是
Zookeeper 中最小數(shù)據(jù)單位,在 ZNode 下面又可以再掛 ZNode,這樣一層層下去就形成了一個層次化
命名空間 ZNode 樹,我們稱為 ZNode Tree,它采用了類似文件系統(tǒng)的層級樹狀結(jié)構(gòu)進行管理。見下圖
示例:

ZooKeeper的架構(gòu)由什么組成

在 Zookeeper 中,每一個數(shù)據(jù)節(jié)點都是一個 ZNode,上圖根目錄下有兩個節(jié)點,分別是:app1 和
app2,其中 app1 下面又有三個子節(jié)點,所有ZNode按層次化進行組織,形成這么一顆樹,ZNode的節(jié)
點路徑標識方式和Unix文件系統(tǒng)路徑非常相似,都是由一系列使用斜杠(/)進行分割的路徑表示,開
發(fā)人員可以向這個節(jié)點寫入數(shù)據(jù),也可以在這個節(jié)點下面創(chuàng)建子節(jié)點。

3.1 ZNode 的類型

剛剛已經(jīng)了解到,Zookeeper的znode tree是由一系列數(shù)據(jù)節(jié)點組成的,那接下來,我們就對數(shù)據(jù)節(jié)點
做詳細講解
Zookeeper 節(jié)點類型可以分為三大類:
持久性節(jié)點(Persistent)
臨時性節(jié)點(Ephemeral)
順序性節(jié)點(Sequential)
在開發(fā)中在創(chuàng)建節(jié)點的時候通過組合可以生成以下四種節(jié)點類型:持久節(jié)點、持久順序節(jié)點、臨時節(jié)
點、臨時順序節(jié)點。不同類型的節(jié)點則會有不同的生命周期
* 持久節(jié)點:是Zookeeper中最常見的一種節(jié)點類型,所謂持久節(jié)點,就是指節(jié)點被創(chuàng)建后會一直存在服務(wù)器,直到刪除操作主動清除
* 持久順序節(jié)點:就是有順序的持久節(jié)點,節(jié)點特性和持久節(jié)點是一樣的,只是額外特性表現(xiàn)在順序上。
順序特性實質(zhì)是在創(chuàng)建節(jié)點的時候,會在節(jié)點名后面加上一個數(shù)字后綴,來表示其順序。
* 臨時節(jié)點:就是會被自動清理掉的節(jié)點,它的生命周期和客戶端會話綁在一起,客戶端會話結(jié)束,節(jié)點
會被刪除掉。與持久性節(jié)點不同的是,臨時節(jié)點不能創(chuàng)建子節(jié)點。
* 臨時順序節(jié)點:就是有順序的臨時節(jié)點,和持久順序節(jié)點相同,在其創(chuàng)建的時候會在名字后面加上數(shù)字后綴。

* 事務(wù)ID

首先,先了解,事務(wù)是對物理和抽象的應(yīng)用狀態(tài)上的操作集合。往往在現(xiàn)在的概念中,狹義上的事務(wù)通
常指的是數(shù)據(jù)庫事務(wù),一般包含了一系列對數(shù)據(jù)庫有序的讀寫操作,這些數(shù)據(jù)庫事務(wù)具有所謂的ACID特
性,即原子性(Atomic)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)。

而在ZooKeeper中,事務(wù)是指能夠改變ZooKeeper服務(wù)器狀態(tài)的操作,我們也稱之為事務(wù)操作或更新
操作,一般包括數(shù)據(jù)節(jié)點創(chuàng)建與刪除、數(shù)據(jù)節(jié)點內(nèi)容更新等操作。對于每一個事務(wù)請求,ZooKeeper都
會為其分配一個全局唯一的事務(wù)ID,用 ZXID 來表示,通常是一個 64 位的數(shù)字。每一個 ZXID 對應(yīng)一次
更新操作,從這些ZXID中可以間接地識別出ZooKeeper處理這些更新操作請求的全局順序
zk中的事務(wù)指的是對zk服務(wù)器狀態(tài)改變的操作(create,update data,更新字節(jié)點);zk對這些事務(wù)操作都
會編號,這個編號是自增長的被稱為ZXID。

3.2 ZNode 的狀態(tài)信息

[zk: localhost:2181(CONNECTED) 2] get /zookeeper 
cZxid = 0x0 
ctime = Wed Dec 31 19:00:00 EST 1969 
mZxid = 0x0 
mtime = Wed Dec 31 19:00:00 EST 1969 
pZxid = 0x0 
cversion = -1
dataVersion = 0 
aclVersion = 0 
ephemeralOwner = 0x0
dataLength = 0 
numChildren = 1

整個 ZNode 節(jié)點內(nèi)容包括兩部分:節(jié)點數(shù)據(jù)內(nèi)容和節(jié)點狀態(tài)信息。數(shù)據(jù)內(nèi)容是空,其他的屬于狀態(tài)信 息。那么這些狀態(tài)信息都有什么含義呢?

cZxid 就是 Create ZXID,表示節(jié)點被創(chuàng)建時的事務(wù)ID。
ctime 就是 Create Time,表示節(jié)點創(chuàng)建時間。 
mZxid 就是 Modified ZXID,表示節(jié)點最后一次被修改時的事務(wù)ID。 
mtime 就是 Modified Time,表示節(jié)點最后一次被修改的時間。 
pZxid 表示該節(jié)點的子節(jié)點列表最后一次被修改時的事務(wù) ID。只有子節(jié)點列表變更才會更新 pZxid,子 節(jié)點內(nèi)容變更不會更新。 
cversion 表示子節(jié)點的版本號。 
dataVersion 表示內(nèi)容版本號。 
aclVersion 標識acl版本
ephemeralOwner 表示創(chuàng)建該臨時節(jié)點時的會話 sessionID,如果是持久性節(jié)點那么值為 0 
dataLength 表示數(shù)據(jù)長度。
numChildren 表示直系子節(jié)點數(shù)。

3.3 Watcher 機制

Zookeeper使用Watcher機制實現(xiàn)分布式數(shù)據(jù)的發(fā)布/訂閱功能

一個典型的發(fā)布/訂閱模型系統(tǒng)定義了一種 一對多的訂閱關(guān)系,能夠讓多個訂閱者同時監(jiān)聽某一個主題 對象,當這個主題對象自身狀態(tài)變化時,會通知所有訂閱者,使它們能夠做出相應(yīng)的處理。

在 ZooKeeper 中,引入了 Watcher 機制來實現(xiàn)這種分布式的通知功能。ZooKeeper 允許客戶端向服 務(wù)端注冊一個 Watcher 監(jiān)聽,當服務(wù)端的一些指定事件觸發(fā)了這個 Watcher,那么Zk就會向指定客戶 端發(fā)送一個事件通知來實現(xiàn)分布式的通知功能。

整個Watcher注冊與通知過程如圖所示。 ZooKeeper的架構(gòu)由什么組成 Zookeeper的Watcher機制主要包括客戶端線程、客戶端WatcherManager、Zookeeper服務(wù)器三部分。

具體工作流程為:

  • 客戶端在向Zookeeper服務(wù)器注冊的同時,會將Watcher對象存儲在客戶端的WatcherManager當 中

  • 當Zookeeper服務(wù)器觸發(fā)Watcher事件后,會向客戶端發(fā)送通知

  • 客戶端線程從WatcherManager中取出對應(yīng)的Watcher對象來執(zhí)行回調(diào)邏輯

4. Zookeeper的基本使用

4.1 ZooKeeper命令行操作

現(xiàn)在已經(jīng)搭建起了一個能夠正常運行的zookeeper服務(wù)了,所以接下來,就是來借助客戶端來對 zookeeper的數(shù)據(jù)節(jié)點進行操作

首先,進入到zookeeper的bin目錄之后

通過zkClient進入zookeeper客戶端命令行

./zkcli.sh 連接本地的zookeeper服務(wù)器
./zkCli.sh -server ip:port(2181) 連接指定的服務(wù)器

連接成功之后,系統(tǒng)會輸出Zookeeper的相關(guān)環(huán)境及配置信息等信息。輸入help之后,屏幕會輸出可用 的Zookeeper命令,如下圖所示

[zk: localhost:2181(CONNECTED) 3] help 
ZooKeeper -server host:port cmd args
	stat path [watch] 
	set path data [version] 
	ls path [watch] 
	delquota [-n|-b] path 
	ls2 path [watch] 
	setAcl path acl 
	setquota -n|-b val path 
	history 
	redo cmdno 
	printwatches on|off 
	delete path [version] 
	sync path 
	listquota path 
	rmr path 
	get path [watch] 
	create [-s] [-e] path data acl 
	addauth scheme auth 
	quit 
	getAcl path 
	close 
	connect host:port

感謝各位的閱讀,以上就是“ZooKeeper的架構(gòu)由什么組成”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對ZooKeeper的架構(gòu)由什么組成這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

當前題目:ZooKeeper的架構(gòu)由什么組成
URL地址:http://www.rwnh.cn/article44/jgpiee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、標簽優(yōu)化網(wǎng)站設(shè)計、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
普安县| 焦作市| 仙桃市| 罗源县| 五指山市| 法库县| 芮城县| 阿拉善右旗| 固原市| 克什克腾旗| 额济纳旗| 巴楚县| 舒兰市| 梅州市| 贵南县| 惠来县| 固安县| 茶陵县| 包头市| 内江市| 上蔡县| 咸阳市| 衡东县| 邓州市| 景东| 新巴尔虎右旗| 太湖县| 金乡县| 镶黄旗| 新野县| 石城县| 淮北市| 罗田县| 民和| 尚志市| 横峰县| 青河县| 湖州市| 辉县市| 安康市| 图们市|