【一、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 操作,只累加一次。...