分布式系統之使用ZooKeeper的幾種業務場景

2021-08-20 09:56:23 字數 959 閱讀 6069

分布式系統有幾種常見的業務場景,比如說master選舉、分布式鎖、分布式佇列、分布式屏障等等。掌握這些演算法來解決分布式系統功能中的問題顯得尤為重要。接下來一一介紹這些場景。

master選舉

為了保證系統的高可用。我們常常會將乙個工程**集群部署。在這種情況下當我們需要定時處理乙個非常耗時,耗cpu的運算業務演算法時。我們不可能讓集群中的每乙個工程**都執行一次該業務。這時我們就要在集群中的機器中選出一台機器來執行該業務。將結果計算出來後同步到其他機器上。選機器的演算法我們常用master選舉演算法。下面介紹基於zookeeper實現master演算法的思路。

1.所有客戶端在zookeeper上建立/master_election/bingding臨時節點。只有乙個客戶端能夠建立這個臨時節點。那麼建立這個節點的客戶端就成了master。同時,其他沒有zookeeper上成功建立節點的客戶端。就在節點/master_election/上建立乙個子節點變更watchar用於監聽當前master機器是否存活。

2.當接受到zookeeper上子節點變更的watcher。說明master掛了。那麼其餘客戶端重新執行1步驟。

上面演算法就可以實現簡單的master選舉了。

分布式鎖

在分布式環境下單個jvm鎖就顯得無力了。因為在這種場景下計算單元分布到不同的例項。jvm只能控制同乙個jvm的執行緒同步。接下來介紹基於zookeeper實現分布式鎖的功能。

排他鎖實現思路

1.在需要獲取排他鎖時,所有客戶端通過呼叫create()介面建立/exclusive_lock/lock節點。建立成功被認為獲取鎖成功,沒有獲取到鎖的客戶端在/exclusive_lock/上建立子節點變更的watcher監聽。以便實時監聽到lock的變更情況。

2.當獲取鎖的客戶端宕機臨時節點自動移除或者正常執行完業務邏輯客戶端主動刪除臨時節點,被認為是鎖釋放。同時其他客戶端執行1的邏輯獲取鎖。

共享鎖

分布式系統

分布式系統和計算機網路系統的共同點是 多數分布式系統是建立在計算機網路之上的,所以分布式系統與計算機網路在物理結構上是基本相同的。他們的區別在於 分布式作業系統的設計思想和網路作業系統是不同的,這決定了他們在結構 工作方式和功能上也不同。網路作業系統要求網路使用者在使用網路資源時首先必須了解網路資源...

分布式系統

分布式,一來就直接看書,除非你有比較深厚的技術功底,要不還是很晦澀難懂的。先想想為什麼會有分布式,分布式怎麼來的。傳統的電信 銀行業,當業務量大了之後,普通伺服器cpu io 網路到了100 請求太慢怎麼辦?最直接的做法,公升級硬體,反正也不缺錢,ibm小型機,大型機,採購了堆硬體。但是網際網路不能...

分布式系統

zookeeper讓服務配置變得更簡單 zookeeper是hadoop下的乙個子專案,它是乙個針對大型分布式系統的可靠的協調系統,提供的功能包括 配置維護 名字服務 分布式同步 組服務等。zookeeper是可以集群複製的,集群間通過zab zookeeper atomic broadcast 協...