Dubbo Zookeeper偽分布式實戰

2021-08-05 20:04:46 字數 2912 閱讀 4798

zookeeper作為註冊中心,伺服器和客戶端都要訪問,如果有大量的併發,肯定會有等待。所以可以通過zookeeper集群解決。

一、為什麼需要zookeeper呢?

大部分分布式應用需要乙個主控、協調器或者控制器來管理物理分布的子程序。目前,大多數都要開發私有的協調程式,缺乏乙個通用機制,協調程式的反覆編寫浪費,且難以形成通用、伸縮性好的協調器,zookeeper提供通用的分布式鎖服務,用以協調分布式應用。所以說zookeeper是分布式應用的協作服務。

二、zookeeper的工作原理

核心原理是原子廣播,這個機制保證了各個server之間的同步,實現這個機制的協議叫做zab協議,它有兩種模式:恢復和廣播模式。

當服務啟動或者在領導者崩潰後,zab就進入了恢復模式,當領導者被選舉出來,恢復模式就結束了。

一旦zookeeper內部同步好了後,就可以開始廣播資訊了,這時候當乙個server加入zookeeper服務中,它會在恢復模式下啟動,並且同步狀態,同步結束後它也參與廣播訊息。

三、集群搭建準備

1.我用了三個zookeeper服務,分別是zookeeper-1,zookeeper-2,zookeeper-3

2.在每個zookeeper下新增data和log檔案

3.配置zoo.cfg檔案

[html]view plain

copy

print?

# the number of milliseconds of each tick  

ticktime=2000

# the number of ticks that the initial   

# synchronization phase can take  

initlimit=10

# the number of ticks that can pass between   

# sending a request and getting an acknowledgement  

synclimit=5

# the directory where the snapshot is stored.  

datadir=e:/zookeeper/zookeeper-1/data  

# the directory where the log  

datalogdir=e:/zookeeper/zookeeper-1/log   

# the port at which the clients will connect  

clientport=2181

#clusters  

server.1=192.168.24.140:2888:3888  

server.2=192.168.24.140:2889:3889  

server.3=192.168.24.140:2890:3890   

# the number of milliseconds of each tick

ticktime=2000

# the number of ticks that the initial # synchronization phase can take initlimit=10 # the number of ticks that can pass between # sending a request and getting an acknowledgement synclimit=5 # the directory where the snapshot is stored. datadir=e:/zookeeper/zookeeper-1/data # the directory where the log datalogdir=e:/zookeeper/zookeeper-1/log # the port at which the clients will connect clientport=2181 #clusters server.1=192.168.24.140:2888:3888 server.2=192.168.24.140:2889:3889 server.3=192.168.24.140:2890:3890  

每個zookeeper的埠配置都應該不同,分別是2181,2182,2183

4.在data檔案新增myid檔案,並且裡面的內容分別為:1,2,3

[html]view plain

copy

print?

<

dubbo:registry

protocol=「zookeeper」

address=「192.168.24.140:2181,192.168.24.140:2182,192.168.24.140:2183」

/>

四、測試

先分別啟動zookeeper,然後依次啟動服務和客戶端。啟動服務的時候會看到連線到哪個zookeeper上了。為了測試集群的特性,比如客戶端啟動後zookeeper-1提供服務,我關掉它,那麼程式就繼續發起連線,接著可能zookeeper-2提供服務。

因為現在有三颱伺服器,所以要求至少有2臺正常啟動才能執行正常。那麼zookeeper-2也關閉,那程式不會連線zookeeper-3,一直報錯,提示no further connection。

上面說了停掉某個服務,zookeeper內部會選舉出下乙個leader來,它內部存在投票選舉機制。這裡不多說了。就像mongodb集群,會根據心跳機制選出主伺服器。

接下來的測試,我繼續開啟zookeeper-1或zookeeper-2,能正常提供服務。把zookeeper-3關閉,如果zookeeper-1和zookeeper-2重新啟動成功後,也是能提供服務的。內部在恢復模式下同步狀態。

Dubbo zookeeper註冊中心

2.修改配置檔案 3.啟動zookeeper 經過上面的配置我們已經完成了zookeeper的修改,下面我們進入bin目錄執行zkserver.cmd 如果是linux伺服器則執行zkserver.sh 如下圖,我們已經啟動zookeeper 4.修改註冊中心 下面我們只需修改服務端和客戶端的註冊中...

dubbo zookeeper了解初步

dubbo是乙個分布式服務框架,而zookeeper則是其中的註冊中心。dubbo的註冊中心可以使用多種框架來充當,zookeeper只是其中之一。一 dubbo dubbo的作用一言以蔽之,就是服務治理。即服務太多了,該使用哪些,啟動順序如何,有些宕掉了怎麼辦。十分複雜,不好處理。dubbo框架就...

dubbo zookeeper入門案例

分布式入門案例 dubbo zookeeper搭建 什麼是分布式?硬體或者軟體組合元件分布在不同的網路計算機上,彼此之間通過訊息傳遞進行通訊和協調的系統 架構模式演變 mvc rpc 遠端過程呼叫協議 soa rpc的基礎上增加了服務治理 管理中心 dubbo和zookeeper的作用及特點 dub...