第4章 分布式同步服務中介軟體

2021-10-05 14:39:09 字數 1756 閱讀 7223

分布式同步服務就是提供分布式同步服務的元件,它對外提供的功能就如同乙個單機的鎖服務一樣,當其內部是由多個結點組成的,而且節點之間通過某種分布式一致性協議(paxos、raft)來協調彼此的狀態。如果其中乙個節點崩潰了,其他節點就自動接管其功能,繼續對外提供服務,好像什麼都沒有發生過一樣。

基於主副本的複製協議,又稱為被動複製協議(如zab)

在大型分布式系統中,分布式同步服務提供的功能類似於單機作業系統提供的程序(或執行緒)同步功能,如訊號量(semaphore [ˈseməfɔːr] )、互斥量(mutex /mjuteks/)、事件(event)等

chubby是谷歌公司實現的以paxos協議為基礎的分布式同步服務。另外,還可以在chubby上面存放少量的共享資訊,因此也可以用chubby實現registry服務

乙個chubby部署例項稱為乙個單元(cell)。乙個單元由多個副本組成,當前提供服務的副本稱為主副本(master replica),其他副本稱為非主副本(non-master-replica)

4.3.1 架構

客戶端通過乙個chubby客戶端與chubby單元通訊。每個客戶端都儲存了單元中所有副本所在的節點列表。

客戶端先給副本節點列表中的機器傳送乙個主副本位置查詢請求,如果非主副本收到該訊息,就返回主副本的標識;如果主副本收到該訊息,就返回自己的標識。知道主副本標識後,客戶端就直接與主副本通訊。

4.3.2 如何消除單點故障

在同一時刻,乙個單元中只有乙個主副本對外提供服務。

單元啟動後,會通過paxos協議選舉乙個主副本。選舉出的主副本有乙個幾秒的租約期。其他副本承諾在該租約期不會選舉新的主副本。租約到期後,主副本可以續約,前提是它能夠獲得多數副本的同意。如果主副本宕機了,在當前主副本租約到期後,其他副本會通過paxos協議選舉出乙個新的主副本。

4.3.4 資料庫

chubby的目錄和檔案資訊都存放在資料庫中。chubby使用的資料庫是帶有複製功能的berkeley([ˈbɜrkli]) db。但考慮到berkeley db的複製功能是新增加的,chubby的後續版本就實現了乙個與berkeley db類似的分布式資料庫,以替代berkeley db

4.4.1 linux心跳機制

linux心跳(heartbeat)機制並不能算作是分布式同步服務,但因其引用廣泛,在此也做一簡單介紹

linux heartbeat利用gratuitous arp原理將多個linux伺服器繫結在乙個虛擬ip上,這些伺服器中,只有乙個處於活動狀態,其他的都處於待機狀態。待機伺服器和活動伺服器之間有週期性心跳。如果活動伺服器宕機了,待機伺服器就可以發現這一點,然後傳送乙個gratuitous arp,通知其他的機器該ip對應的mac位址變成其mac位址了。

4.4.2 zookeeper

zookeeper( [ˈzuːkiːpə®] )是乙個分布式的,開放原始碼的分布式應用程式協調服務,是google的chubby乙個開源的實現,是hadoop和hbase的重要元件。它是乙個為分布式應用提供一致性服務的軟體,提供的功能包括:配置維護、網域名稱服務、分布式同步、組服務等。

4.4.3 inexus

inexus ([ˈneksəs]簡稱ins) 是乙個基於 raft 協議實現的高可用的分布式 key-value 資料庫,支援資料變更通知(watch)和分布式鎖,可用於大型分布式系統的協調工作。

分布式訊息中介軟體

一 分布式訊息中介軟體入門 訊息中介軟體主要實現分布式系統中解耦 非同步訊息 流量銷鋒 日誌處理等場景。現在生產中用得最多的訊息佇列有 activemq,rabbitmq,kafka,rocketmq 等。jms 規範 類似於 jdbc 的一套介面規範,但不同的是他是面向的訊息服務,提供一套標準 a...

分布式訊息中介軟體 kafka

在我們大量使用分布式資料庫 分布式計算集群的時候,是否會遇到這樣的一些問題 這個時候,我們就可以用到分布式訊息系統了。雖然上面的描述更偏向於乙個日誌系統,但確實kafka在實際應用中被大量的用於日誌系統。首先我們要明白什麼是訊息系統,在kafka官網上對kafka的定義叫 a distributed...

Redis分布式中介軟體TwemProxy

twemproxy,也叫nutcraker。是乙個twtter開源的乙個redis和memcache 伺服器。redis作為乙個高效的快取伺服器,非常具有應用價值。但是當使用比較多的時候,就希望可以通過某種方式 統一進行管理。避免每個應用每個客戶端管理連線的鬆散性。同時在一定程度上變得可以控制。搜尋...