欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:zookeeper

柚子快報(bào)激活碼778899分享:zookeeper

http://yzkb.51969.com/

一、Zookeeper入門

1.1 概述

??Zookeeper是一個(gè)開源的分布式的,為分布式框架提供協(xié)調(diào)服務(wù)的Apache項(xiàng)目。

外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳

1.2 Zookeeper工作機(jī)制

??Zookeeper從設(shè)計(jì)模式角度來(lái)理解:是一個(gè)基于觀察者模式設(shè)計(jì)的分布式服務(wù)管理框架,他負(fù)責(zé)存儲(chǔ)和管理大家都關(guān)系的數(shù)據(jù),然后接受觀察者的注冊(cè),一旦這些數(shù)據(jù)的狀態(tài)發(fā)生變化,Zookeeper就將負(fù)責(zé)通知已經(jīng)在Zookeeper上注冊(cè)的那些觀察者做出相應(yīng)的反應(yīng)。

1.3 特點(diǎn)

Zookeeper:一個(gè)領(lǐng)導(dǎo)者(Leader),多個(gè)跟隨者(Follower)組成的集群。集群中只要有半數(shù)以上節(jié)點(diǎn)在存貨,Zookeeper集群就能正常服務(wù)。所以Zookeeper適合安裝奇數(shù)臺(tái)服務(wù)器。全局?jǐn)?shù)據(jù)一致性:每個(gè)Server保存一份相同的數(shù)據(jù)副本,CLient無(wú)論連接到哪個(gè)Server,數(shù)據(jù)都是一致的。更新請(qǐng)求順序執(zhí)行,來(lái)自同一個(gè)Client的更新請(qǐng)求按器發(fā)送順序依次執(zhí)行。數(shù)據(jù)更新原子性:一個(gè)數(shù)據(jù)更新要么成功,要么失敗。實(shí)時(shí)性:在一定時(shí)間范圍內(nèi),Client能讀到最新數(shù)據(jù)。

1.4 數(shù)據(jù)結(jié)構(gòu)

??Zookeeper數(shù)據(jù)模型的結(jié)構(gòu)于Unix文件系統(tǒng)很類似,整體上可以看成一棵樹,每個(gè)節(jié)點(diǎn)稱作一個(gè)ZNode.沒一個(gè)ZNode默認(rèn)能夠存儲(chǔ)1MB的數(shù)據(jù),每個(gè)ZNode度可以通過(guò)其路徑唯一標(biāo)識(shí)。

1.5 應(yīng)用場(chǎng)景

??提供的服務(wù)報(bào)錯(cuò):統(tǒng)一命名服務(wù)、同一個(gè)配置管理、同一個(gè)集群管理、服務(wù)器節(jié)點(diǎn)動(dòng)態(tài)上下線、阮負(fù)載均衡等。

??統(tǒng)一命名服務(wù):在分布式環(huán)境下,經(jīng)常需要對(duì)應(yīng)用、服務(wù)進(jìn)行統(tǒng)一明明,便于標(biāo)識(shí)。例如:IP不容易記住,而域名容易記住。

統(tǒng)一配置管理:

分布式環(huán)境下,配置文件同步非常常見

(1)一般要求一個(gè)集群中,所有節(jié)點(diǎn)的配置信息是一致的,比如kafka集群

(2)對(duì)配置文件修改后,希望能夠快速同步到各個(gè)節(jié)點(diǎn)上。

配置管理科交由ZooKeeper實(shí)現(xiàn)

(1)可將配置信息寫入到Zookeeper上的一個(gè)ZNode

(2)各個(gè)客戶端服務(wù)器監(jiān)聽這個(gè)ZNode

(3)一旦ZNode中的數(shù)據(jù)丠修改,Zookeeper將同志各個(gè)客戶端服務(wù)器。

統(tǒng)一集群管理:

分布式環(huán)境中,實(shí)時(shí)掌握每個(gè)節(jié)點(diǎn)的狀態(tài)是必要的

(1) 可以根據(jù)節(jié)點(diǎn)實(shí)時(shí)狀態(tài)做出一些調(diào)整。

Zookeeper可以實(shí)現(xiàn)實(shí)時(shí)監(jiān)控節(jié)點(diǎn)狀態(tài)變化

(2) 可將節(jié)點(diǎn)信息寫入Zookeeper上的一個(gè)ZNode.

(2) 監(jiān)聽這個(gè)ZNode可獲取他的實(shí)時(shí)狀態(tài)變化。

服務(wù)器動(dòng)態(tài)上下線:

軟負(fù)載均衡:

二、Zookeeper的安裝使用

2.1 Zookeeper本地模式安裝

2.2 Zookeeper使用docker搭建集群

1、拉取鏡像

docker pull zookeeper:3.5.7

2、創(chuàng)建映射目錄,三臺(tái)服務(wù)器都創(chuàng)建

mkdir -p /opt/local/zookeeper/conf

mkdir -p /opt/local/zookeeper/data

3、在conf目錄下創(chuàng)建并配置zoo.cfg文件

vim zoo.cfg

#客戶端連接端口,監(jiān)聽客戶端連接的端口

clientPort=2181

#數(shù)據(jù)文件目錄+數(shù)據(jù)持久化路徑

dataDir=/data

#日志文件目錄

dataLogDir=/data/log

# 通信心跳數(shù),Zookeeper服務(wù)器心跳時(shí)間,單位毫秒。 Zookeeper使用的基本時(shí)間,服務(wù)器之間或客戶端與服務(wù)器之間維持心跳的時(shí)間間隔,也就是每個(gè)tickTime時(shí)間就會(huì)發(fā)送一個(gè)心跳,時(shí)間單位為毫秒。它用于心跳機(jī)制,并且設(shè)置最小的session超時(shí)時(shí)間為兩倍心跳時(shí)間。(session的最小超時(shí)時(shí)間是2\*tickTime)

tickTime=2000

#初始通信時(shí)限,集群中的follower跟隨者服務(wù)器(F)與leader領(lǐng)導(dǎo)者服務(wù)器(L)之間初始連接時(shí)能容忍的最多心跳數(shù)(tickTime的數(shù)量),用它來(lái)限定集群中的Zookeeper服務(wù)器連接到Leader的時(shí)限。投票選舉新leader的初始化時(shí)間

Follower在啟動(dòng)過(guò)程中,會(huì)從Leader同步所有最新數(shù)據(jù),然后確定自己能夠?qū)ν夥?wù)的起始狀態(tài)。Leader允許F在initLimit時(shí)間內(nèi)完成這個(gè)工作。

#leader(L)-follower(F)同步通信時(shí)限集群中Leader與Follower之間的最大響應(yīng)時(shí)間單位,假如響應(yīng)超過(guò)syncLimit \* tickTime, Leader認(rèn)為Follwer死掉,從服務(wù)器列表中刪除Follwer。在運(yùn)行過(guò)程中,Leader負(fù)責(zé)與ZK集群中所有機(jī)器進(jìn)行通信,例如通過(guò)一些心跳檢測(cè)機(jī)制,來(lái)檢測(cè)機(jī)器的存活狀態(tài)。如果L發(fā)出心跳包在syncLimit之后,還沒有從F那收到響應(yīng),那么就認(rèn)為這個(gè)F已經(jīng)不在線了

syncLimit=2

autopurge.snapRetainCount=3

autopurge.purgeInterval=0

maxClientCnxns=60

#server.A=B:C:D:其中 A 是一個(gè)數(shù)字,表示這個(gè)是第幾號(hào)服務(wù)器。B 是這個(gè)服務(wù)器的 IP 地址。C 表示的是這個(gè)服務(wù)器與集群中的 Leader 服務(wù)器交換信息的端口(2888);D 表示的是萬(wàn)一集群中的 Leader 服務(wù)器掛了,需要一個(gè)端口來(lái)重新進(jìn)行選舉,選出一個(gè)新的 Leader,而這個(gè)端口就是用來(lái)執(zhí)行選舉時(shí)服務(wù)器相互通信的端口(3888)。如果是偽集群的配置方式,由于 B 都是一樣,所以不同的 Zookeeper 實(shí)例通信端口號(hào)不能一樣,所以要給它們分配不同的端口號(hào)。

server.126=0.0.0.0:2888:3888

server.123=192.168.223.123:2888:3888

server.120=192.168.223.120:2889:3889

?

clientPort=2181

dataDir=/data

dataLogDir=/data/log

tickTime=2000

initLimit=5

syncLimit=2

autopurge.snapRetainCount=3

autopurge.purgeInterval=0

maxClientCnxns=60

server.126=192.168.223.126:2887:3887

server.123=0.0.0.0:2888:3888

server.120=192.168.223.120:2889:3889

?

clientPort=2181

dataDir=/data

dataLogDir=/data/log

tickTime=2000

initLimit=5

syncLimit=2

autopurge.snapRetainCount=3

aut**opurge.purgeInterval=0**

**maxClientCnxns=60**

**server.126=192.168.223.126:2887:3887**

**server.123=192.168.223.123:2888:3888**

**server.120=0.0.0.0:2888:3888**

?

??然后在data目錄下創(chuàng)建myid文件,并且將服務(wù)號(hào)設(shè)為值,比如server.126的myid為126

注:zoo.cfg文件下配置后面很容易帶有空格,在保存之前一定要確定文件后面是否有空格。

4、創(chuàng)建容器

docker run --restart always -v /opt/local/zookeeper/data:/data -v /opt/local/zookeeper/conf/zoo.cfg:/conf/zoo.cfg\:rw --name zk-126 -e "TZ=Asia/Shanghai" -p 2181:2181 -p 2887:2888 -p 3887:3888 -d zookeeper:3.5.7

docker run --restart always -v /opt/local/zookeeper/data:/data -v /opt/local/zookeeper/conf/zoo.cfg:/conf/zoo.cfg\:rw --name zk-123 -e "TZ=Asia/Shanghai" -p 2182:2181 -p 2888:2888 -p 3888:3888 -d zookeeper:3.5.7

docker run --restart always -v /opt/local/zookeeper/data:/data -v /opt/local/zookeeper/conf/zoo.cfg:/conf/zoo.cfg\:rw --name zk-120 -e "TZ=Asia/Shanghai" -p 2183:2181 -p 2889:2888 -p 3889:3888 -d zookeeper:3.5.7

2.3 Zookeeper單節(jié)點(diǎn)安裝

1、拉取鏡像

docker pull zookeeper:3.5.7

2、創(chuàng)建映射文件

clientPort=2181

dataDir=/data

dataLogDir=/log

tickTime=2000

3、創(chuàng)建容器

docker run --restart always -v /quse/zookeeper/data:/data -v /quse/zookeeper/conf/zoo.cfg:/conf/zoo.cfg:rw --name zk -e "TZ=Asia/Shanghai" -p 2181:2181 -d zookeeper:3.5.7

2.4 ZK的使用

1、zk的使用

連接客戶端

# bin目錄下

zkCli.sh

#訪問(wèn)其他節(jié)點(diǎn)的客戶端

zkCli.sh -server 192.168.223.120:2183

查看當(dāng)前ZK所包含內(nèi)容

ls -s /

結(jié)果

[zookeeper]cZxid = 0x0

ctime = Thu Jan 01 08:00:00 CST 1970

mZxid = 0x0

mtime = Thu Jan 01 08:00:00 CST 1970

pZxid = 0x0

cversion = -1

dataVersion = 0

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 0

numChildren = 1

(1)czxid:創(chuàng)建節(jié)點(diǎn)的事務(wù) zxid 每次修改 ZooKeeper 狀態(tài)都會(huì)產(chǎn)生一個(gè) ZooKeeper 事務(wù) ID。事務(wù) ID 是 ZooKeeper 中所 有修改總的次序。每次修改都有唯一的 zxid,如果 zxid1 小于 zxid2,那么 zxid1 在 zxid2 之 前發(fā)生。

(2)ctime:znode 被創(chuàng)建的毫秒數(shù)(從 1970 年開始)

(3)mzxid:znode 最后更新的事務(wù) zxid

(4)mtime:znode 最后修改的毫秒數(shù)(從 1970 年開始)

(5)pZxid:znode 最后更新的子節(jié)點(diǎn) zxid

(6)cversion:znode 子節(jié)點(diǎn)變化號(hào),znode 子節(jié)點(diǎn)修改次數(shù)

(7)dataversion:znode 數(shù)據(jù)變化號(hào)

(8)aclVersion:znode 訪問(wèn)控制列表的變化號(hào)

(9)ephemeralOwner:如果是臨時(shí)節(jié)點(diǎn),這個(gè)是 znode 擁有者的 session id。如果不是 臨時(shí)節(jié)點(diǎn)則是 0。 (10)dataLength:znode 的數(shù)據(jù)長(zhǎng)度

(11)numChildren:znode 子節(jié)點(diǎn)數(shù)量

創(chuàng)建一個(gè)新的znode

create /zkPro myData

2、創(chuàng)建子節(jié)點(diǎn)

create /wqq/qml "zyq"

再次查看zk中所包含的內(nèi)容

ls /

4、查看節(jié)點(diǎn)下狀態(tài)信息,不查看數(shù)據(jù)

state /wqq

5、使用get查看新創(chuàng)建znode是否包含所創(chuàng)建字符串

get -s /zkPro

6、修改znode中關(guān)聯(lián)字符串

set /zkPro myData 123

7、創(chuàng)建帶序號(hào)字符串

create -s /wqq/qml/wsy "ne"

8、創(chuàng)建臨時(shí)節(jié)點(diǎn)

create -e /wqq/qml/wsy "ne"

9、刪除剛創(chuàng)建字符串

delete /zkPro

10、如果節(jié)點(diǎn)下有子節(jié)點(diǎn)則不能刪除,需要用到指令

delete /wqq

11、查看當(dāng)前EPOCH

cat currentEpoch

12、zk操作指令

#啟動(dòng)zk

zkServer.sh start

#關(guān)閉zk

zkServer.sh stop

2、zookeeper選舉機(jī)制

2.1、 5臺(tái)服務(wù)器第一次啟動(dòng)的選舉機(jī)制

(1)服務(wù)器1啟動(dòng),發(fā)起一次選舉。服務(wù)器1投自己一票。此時(shí)服務(wù)器1票數(shù)一票,不夠半數(shù)以上(3票),選舉無(wú)法完成,服務(wù)器1狀態(tài)保持為 LOOKING;

(2)服務(wù)器2啟動(dòng),再發(fā)起一次選舉。服務(wù)器1和2分別投自己一票并交換選票信息:此時(shí)服務(wù)器1發(fā)現(xiàn)服務(wù)器2的myid比自己目前投票推舉的(服務(wù)器1) 大,更改選票為推舉服務(wù)器2。此時(shí)服務(wù)器1票數(shù)0票,服務(wù)器2票數(shù)2票,沒有半數(shù)以上結(jié)果,選舉無(wú)法完成,服務(wù)器1,2狀態(tài)保持LOOKING

(3)服務(wù)器3啟動(dòng),發(fā)起一次選舉。此時(shí)服務(wù)器1和2都會(huì)更改選票為服務(wù)器3。此次投票結(jié)果:服務(wù)器1為0票,服務(wù)器2為0票,服務(wù)器3為3票。此時(shí)服 務(wù)器3的票數(shù)已經(jīng)超過(guò)半數(shù),服務(wù)器3當(dāng)選Leader。服務(wù)器1,2更改狀態(tài)為FOLLOWING,服務(wù)器3更改狀態(tài)為L(zhǎng)EADING; LOOKING LOOKING 1 0 1 2 0 3

(4)服務(wù)器4啟動(dòng),發(fā)起一次選舉。此時(shí)服務(wù)器1,2,3已經(jīng)不是LOOKING狀態(tài),不會(huì)更改選票信息。交換選票信息結(jié)果:服務(wù)器3為3票,服務(wù)器4為 1票。此時(shí)服務(wù)器4服從多數(shù),更改選票信息為服務(wù)器3,并更改狀態(tài)為FOLLOWING; (5)服務(wù)器5啟動(dòng),同4一樣當(dāng)小弟。

2、非第一次啟動(dòng)選舉機(jī)制

(1)當(dāng)ZooKeeper集群中的一臺(tái)服務(wù)器出現(xiàn)以下兩種情況之一時(shí),就會(huì)開始進(jìn)入Leader選舉:

服務(wù)器初始化啟動(dòng)。服務(wù)器運(yùn)行期間無(wú)法和Leader保持連接。

(2)而當(dāng)一臺(tái)機(jī)器進(jìn)入Leader選舉流程時(shí),當(dāng)前集群也可能會(huì)處于以下兩種狀態(tài):

集群中本來(lái)就已經(jīng)存在一個(gè)Leader。 對(duì)于第一種已經(jīng)存在Leader的情況,機(jī)器試圖去選舉Leader時(shí),會(huì)被告知當(dāng)前服務(wù)器的Leader信息,對(duì)于該機(jī)器來(lái)說(shuō),僅僅需要和Leader機(jī)器建立連 接,并進(jìn)行狀態(tài)同步即可。集群中確實(shí)不存在Leader。假設(shè)ZooKeeper由5臺(tái)服務(wù)器組成,SID分別為1、2、3、4、5,ZXID分別為8、8、8、7、7,并且此時(shí)SID為3的服務(wù)器是Leader。某一時(shí)刻, 3和5服務(wù)器出現(xiàn)故障,因此開始進(jìn)行Leader選舉。

(EPOCH,ZXID,SID ) (EPOCH,ZXID,SID ) (EPOCH,ZXID,SID )

SID為1、2、4的機(jī)器投票情況: (1,8,1) (1,8,2) (1,7,4)

選舉Leader規(guī)則: ①EPOCH大的直接勝出 ②EPOCH相同,事務(wù)id大的勝出 ③事務(wù)id相同,服務(wù)器id大的勝出

3、節(jié)點(diǎn)的類型

持久(Persistent):客戶端和服務(wù)端斷開連接后,創(chuàng)建的節(jié)點(diǎn)不刪除

短暫(Ephemeral):客戶端和服務(wù)端斷開連接后創(chuàng)建的節(jié)點(diǎn)自己刪除

持久化目錄節(jié)點(diǎn)

客戶端與Zookeeper斷開連接后,該節(jié)點(diǎn)依舊存在

持久化順序編號(hào)目錄節(jié)點(diǎn)

客戶端與Zookeeper斷開連接后,改接地那依舊存在,只是zookeeper給該節(jié)點(diǎn)名稱進(jìn)行順序編號(hào)

臨時(shí)目錄節(jié)點(diǎn)

客戶端與Zookeeper斷開連接后,該節(jié)點(diǎn)被刪除

臨時(shí)順序編號(hào)目錄節(jié)點(diǎn)

客戶端與Zookeeper斷開連接后,該節(jié)點(diǎn)被刪除,只是Zookeeper給該節(jié)點(diǎn)名稱進(jìn)行順序編號(hào)。

??說(shuō)明:創(chuàng)建znode是設(shè)置順序標(biāo)識(shí),znode名稱后會(huì)附加一個(gè)值,順序號(hào)是一個(gè)單調(diào)遞增的計(jì)數(shù)器,由父節(jié)點(diǎn)維護(hù)

??注意:在分布式系統(tǒng)中,順序號(hào)可被用于為所有的時(shí)間進(jìn)行全局排序,這樣客戶端可以通過(guò)順序號(hào)推斷時(shí)間的順序。

4、監(jiān)聽器原理

??;客戶端注冊(cè)監(jiān)聽它關(guān)心的目錄接待,當(dāng)目錄接待發(fā)生變化(數(shù)據(jù)改變、節(jié)點(diǎn)刪除、子目錄接地那增加刪除)時(shí),ZooKeeper會(huì)通知客戶端。監(jiān)聽機(jī)制保證ZooKeeper保存的任何的數(shù)據(jù)的任何改變都能快速的相應(yīng)到監(jiān)聽該接地那的應(yīng)用程序。

1、監(jiān)聽器原理

首先要有一個(gè)main()線程在main線程中創(chuàng)建Zookeeper客戶端,這時(shí)就會(huì)創(chuàng)建兩個(gè)線程,一個(gè)負(fù)責(zé)網(wǎng)絡(luò)連接通信(connect),一個(gè)負(fù)責(zé)監(jiān)聽(listen)。通過(guò)connect線程將注冊(cè)的監(jiān)聽紗巾發(fā)送給Zookeeper在Zookeeper的注冊(cè)監(jiān)聽器列表中將注冊(cè)的監(jiān)聽事件添加到列表中。Zookeeper監(jiān)聽到有數(shù)據(jù)或者路徑變化,就會(huì)將這個(gè)消息發(fā)送給listener線程listener線程內(nèi)部調(diào)用了process()方法。

2、常用監(jiān)聽

監(jiān)聽節(jié)點(diǎn)數(shù)據(jù)的變化

get path[watch]

監(jiān)聽子節(jié)點(diǎn)增減的變化

ls path[watch]

3、監(jiān)聽器的使用

監(jiān)聽節(jié)點(diǎn)值的變化

1、監(jiān)聽某一個(gè)節(jié)點(diǎn)

get -w /wqq

2、修改監(jiān)聽的節(jié)點(diǎn)來(lái)進(jìn)行驗(yàn)證

set /wqq "26"

注意:在對(duì)監(jiān)聽的節(jié)點(diǎn)進(jìn)行多次修改的時(shí)候,將不會(huì)再收到監(jiān)聽。因?yàn)樽?cè)一次,只能監(jiān)聽一次。想再次監(jiān)聽,需要再次注冊(cè)。

監(jiān)聽節(jié)點(diǎn)數(shù)的變化

1、監(jiān)聽某一個(gè)節(jié)點(diǎn)

ls -w /wqq

2、在監(jiān)聽節(jié)點(diǎn)下創(chuàng)建子節(jié)點(diǎn)

ls -w /wqq

注:節(jié)點(diǎn)路徑的變化也是注冊(cè)一次,生效一次。

5、客戶端向服務(wù)端寫數(shù)據(jù)流程

1、客戶端向Leader節(jié)點(diǎn)發(fā)送寫數(shù)據(jù)請(qǐng)求

2、客戶端向Follower節(jié)點(diǎn)發(fā)送寫數(shù)據(jù)請(qǐng)求

6、服務(wù)器動(dòng)態(tài)上下線

1、首先創(chuàng)建服務(wù)器節(jié)點(diǎn)

create /servers "servers"

2、創(chuàng)建客戶端

3、創(chuàng)建服務(wù)端

7、zookeeper分布式鎖

什么叫分布式鎖?

??比如說(shuō)“進(jìn)程1”在使用該資源的時(shí)候,會(huì)先去獲得鎖,“進(jìn)城1”獲得鎖以后對(duì)該資源保持獨(dú)占。這樣其他進(jìn)程就無(wú)法訪問(wèn)該資源,“進(jìn)程1”用完該資源以后就將鎖四方掉,讓其他進(jìn)程來(lái)獲得鎖,那么通過(guò)這個(gè)鎖機(jī)制,我們就能保證了分布式系統(tǒng)中多個(gè)進(jìn)程能夠有序的訪問(wèn)該臨界資源。那么我們把這個(gè)分布式環(huán)境下的這個(gè)鎖叫做分布式鎖。

三、問(wèn)題

1、啟動(dòng)所遇問(wèn)題

有時(shí)啟動(dòng)集群的時(shí)候會(huì)出現(xiàn)有的服務(wù)器連接不了集群的情況,這個(gè)時(shí)候只要重啟一下leader節(jié)點(diǎn)就好

柚子快報(bào)激活碼778899分享:zookeeper

http://yzkb.51969.com/

相關(guān)文章

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19555985.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄