cassandra集羣一致性 Gossip協議

cassandra集羣一致性實現

cassandra集羣使用Gossip的點對點通信協議,節點定期交換關於他們自己和他們所知道的其他節點的狀態信息。Gossip 過程每秒運行一次,並與集羣中最多三個其他節點交換狀態消息。節點交換關於他們自己以及gossiped 的其他節點的信息,因此所有節點都可以快速瞭解集羣中的所有其他節點。在Gossip交換期間,對於一個特殊的節點,比較舊的信息將被最新的信息覆蓋。

爲防止Gossip通信出現問題,爲集羣中的所有節點使用相同的種子節點列表。在節點第一次啓動時最爲關鍵。默認情況下,節點會記住在後續重新啓動之間Gossip的其他節點。除了爲加入集羣的新節點引導Gossip過程之外,種子節點指定沒有其他目的。種子節點不是單點故障,除了節點引導之外,它們在集羣操作中也沒有任何其他特殊用途。

注意:在多個數據中心羣集中,種子列表中包含每個數據中心(複製組)中的至少一個節點。建議爲每個數據中心指定多個種子節點以實現容錯。否則,當引導節點時,Gossip必須與另一個數據中心通信。 建議不要將每個節點都設置爲種子節點,因爲增加了維護並降低了Gossip性能。建議使用小種子列表(每個數據中心大約有三個節點)。

Gossip Protocol的優勢

1、可擴展性

可以允許節點的任意增加和減少,新增加的節點狀態最終會與其他節點一致。
2、容錯性

任何節點的宕機和重啓都不會影響Gossip Protocol 散播信息,Gossip Protocol具有天然的分佈式系統容錯特性。

3、去中心化

Gossip Protocol不需要中心節點,所有節點都可以是對等的,任何一個節點無需知道整個網絡狀況,只需要網絡連通狀態,任意一個節點就可以把信息散播到所有節點。

4、一致性收斂

僅需要O(log(n))個回合,gossip協議即可將信息傳遞到所有的節點。

Gossip Protocol的缺陷

1、信息延遲

由於Gossip Protocol是隨機選擇幾個節點散播信息,然後被選擇的節點再次重複操作,信息通過多次散播最終到達全部節點,因此不可避免產生信息延遲。

2、信息冗餘

Gossip Protocol,節點會定期隨機選擇鄰近的節點發送信息,而收到消息的節點也會重複該操作,因此不可避免已存在的信息被重複發送同一節點上,造成信息的冗餘。因Gossip Protocol定期發送,即使收到了信息的節點可能會反覆收到重複的信息,加重了信息的冗餘。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章