Zookeeper 從五個方面,漸進

2021-10-07 22:35:15 字數 2666 閱讀 7495

【一、zookeeper中的角色】

①領導者(leader)leader伺服器為客戶端提供讀寫服務。它是集群工作機制的核心,事務請求唯一排程者和處理者,保證集群事務請求處理的順序性。

②學習者(learner),學習者又分為跟隨者和觀察者:

跟隨者(follower)follower伺服器為客戶端提供讀服務,參與leader選舉過程,參與寫操作「過半寫成功」策略。處理非事務請求,**事務請求給領導者,同時參與投票。

觀察者(observer)observer伺服器為客戶端提供讀服務,不參與leader選舉過程,不參與寫操作「過半寫成功」策略。用於在不影響寫效能的前提下提公升集群的讀效能。該服務不參與投票,可有可無的。

③客戶端(client)服務請求發起方。

【二、zookeeper選舉】

上面提到的伺服器角色是怎麼產生的呢,就是通過選舉。

我這裡,以乙個例子的來形象說明選舉的過程:

1、咱們現在有10臺伺服器,剛剛上線的伺服器沒有任何資料,嶄新的。咱們給它編個號:1,2,3,4,5,6,7,8,9,10,咱們呢把這10個伺服器逐個都開機了哈。

2、在伺服器啟動的時候啊,選舉就開始了。1號伺服器啟動,先給自己投票,然後把自己的資訊發出去,讓別的也投。但是呢其他伺服器還沒有啟動啊,於是1號伺服器就收不到反饋。心情很是失落,像筆者那年一樣,此時1號伺服器就開始處於選舉狀態了(looking左顧右盼的,焦急等待)。

3、接著2號伺服器終於啟動了,它也給自己投票,但是2號伺服器收到了1號伺服器的反饋。2號伺服器暫時勝出,票數還沒有大於半數,2號也得處於選舉狀態。

4、同理哈,3號啟動,4號啟動,5號啟動,一直到6號。6號就不同了,它給自己先投了一票,然後收到了1,2,3,4,5的投票,6票超過半數,他就是領導者。同時也先入為主了,後續7,8,9,10號無論票數怎樣,都不管了。

【三、zookeeper各種角色作用】

1、zookeeper中的請求

事務請求:

改變伺服器狀態的請求。

非事務請求:

僅僅讀取資料,不修改資料的請求

2、領導者leader

領導者會根據不同的請求,進行不同的處理。

3、跟隨者follower

①向領導者傳送請求;

②接收領導者的訊息並處理;

③接收客戶端請求,如果是寫入則需要傳送給領導者進行半數投票;

④返回請求結果給客戶端。

4、觀察者observer

除了不參與leader選舉和proposal投票外,與follower的作用相同。

【四、zookeeper中的zab協議】

①客戶端所有的寫入請求,都要**給服務中唯一的領導者leader,然後領導者leader根據請求發起乙個proposal請求;

②其他的跟隨服務,對該proposal請求進行投票,看自己是否支援這個請求;

③領導者leader對投票進行收集,票數過半時,領導者leader會向所有的服務傳送乙個通知。

④客戶端所連線的那個伺服器收到訊息,執行操作並作出對客戶端的回應。

【五、zookeeper節點】

zookeeper有四種常用節點:

持久:persistent,【持久化節點】

persistent_sequential,順序自動編號【持久化節點】,這種節點會根據當前已存在的節點數自動加 1

ephemeral,【臨時節點】, 客戶端session超時這類節點就會被自動刪除

ephemeral_sequential,【臨時節點】臨時自動編號節點

然後這四種節點還可以分呢!

按照持久化

持久:persistent、persistent_sequential

臨時:ephemeral、ephemeral_sequential

還可以按照型別,分呢!

目錄節點:persistent、ephemeral

編號目錄節點:persistent_sequential、ephemeral_sequential

zookeeper的五個特性

1.構造高可用集群 zookeeper的選舉模式保證了集群的相對穩定性,從而使得集群是高可用的。2.集群全域性配置檔案管理 即統一資源配置,在乙個偌大的集群環境中,假設你需要對該集群的配置檔案作修改,假設集群很龐大,手動去修改是一件不太現實的事,不但費時費力,還極有可能造成差錯,zookeeper可...

從五個方面考慮Oracle的效能調優問題

oracle調優是乙個複雜的主題。關於調優可以寫整整一本書,不過,為了改善oracle資料庫的效能,有一些基本的概念是每個oracle dba都應該遵從的。在這篇簡介中,我們將簡要地介紹以下的oracle主題 外部調整 我們應該記住oracle並不是單獨執行的。因此我們將檢視一下通過調整oracle...

五個方面搞定MySQL優化

後期會持續優化這篇文章 1.開啟慢查詢日誌 slow query log 1 2.show status like com com select 執行 select 操作的次數,一次查詢只累加 1。com insert 執行 insert 操作的次數,對於批量插入的 insert 操作,只累加一次。...