日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Cassandra1.2文档学习(2)——节点间通信协议之gossip协议

發布時間:2023/12/15 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 Cassandra1.2文档学习(2)——节点间通信协议之gossip协议 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考文檔:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/architecture/architectureGossipAbout_c.html#concept_ds_elb_tgd_fk

一、什么是gossip

  Cassandra使用一個名為gossip的協議去獲得集群中其他節點的位置和狀態信息。Gossip是一個點對點的通信協議,在這個協議中,節點之間定期交換狀態信息。Gossip協議每隔一秒運行一次,節點和不超過的三個節點交換信息,因此所有的節點能夠很快知道集群中其他節點的信息。每一個gossip信息有一個版本,因此在信息的交換中,舊的信息會被新的狀態信息覆蓋。   

  為防止gossip通信的發生隔離,保障數據的一致性和完整性,在一個節點中的所有節點應當使用相同的Seed列表(Seed節點負責和集群中的其他節點通訊并獲取信息,Cassandra讀取和寫入數據都是向Seed節點發出操作指令,這些節點應該相對穩定)。當節點第一次啟動時Seed列表信息非常重要。

二、配置gossip

當一個節點啟動的時候,它會去讀取配置文件cassandra.yaml從而決定它屬于那個集群,從那個節點獲得集群中其他節點的信息以及一些其他的參數。

具體的配置參數如下

cluster_name

這個節點屬于的Cassandra集群的名字,集群中的每一個節點的集群名字都應該是一樣的。

listen_address

當前節點的ip地址或者主機名,使得其他節點能夠聯系到這個節點。這個地址應該是公共地址,而不是localhost。

seed_provider

通過逗號分隔的seed節點的主機名或ip地址。每個節點的此選項應該是一致的。在包含多個數據中心的集群中,每個數據中心都應該有一個seed節點。

storage_port

節點間通信端口(默認為7000)。集群中每個節點的配置應該是一樣的。

initial_token

這個參數使用在被一個節點只有一個token的架構下,在一致性哈希環中每個節點都有一段連續的范圍,有token表示。當Cassandra第一次啟動的時候,會從該配置項中讀取,如果唯恐,將隨機生成一個token。如果Cassandra不是第一次啟動,將從系統表中讀取該Token值。

num_tokens

在虛擬節點的時候使用。定義隨機分配到該節點的token的數量。原來情況下,一個節點只有一個token,很容易造成數據都在一個節點上的情況,采用虛擬節點,每個節點有多個token,可以進行平均。

三、刪除節點的gossip歷史信息

gossip信息一直保留在本地,這樣當節點重啟的時候可以無需等待gossip的交互。

在某些情況下(例如節點IP地址發生改變),你可能希望清除gossip歷史信息。

方式:

編輯cassandra-env.sh文件:

加入以下一行

-Dcassandra.load_ring_state= false

四、故障檢測和恢復

  故障檢測是通過分析gossip狀態信息和歷史信息,判斷系統中其他節點是否宕機的一種方法。Cassandra通過這種方式來避免將客戶端請求轉發到已經掛掉的節點。通過動態告密者(dynamic snitch),Cassandra還可以避免將請求轉發到那些那些雖然存活但是性能特別差的節點。

  gossip從直接或者間接節點中跟蹤信息,Cassandra通過一個權責監測機制來計算每一個節點的閥值,綜合考慮網絡情況、工作負載和其他情況,而不是采用一個固定的閥值來判斷是否是一個失敗的節點。在gossip交互中,每個節點維護一個滑動的窗口關于集群中其他節點gossip到達的時間。在Cassandra中,可以通過配置 phi_convict_threshold屬性值來調整故障檢測的敏感度。大多數情況下可以使用默認值,但在Amazon EC2平臺中請將數值增加到12。

  導致節點失敗的原因有很多種,比如硬件出錯和網絡中斷。節點中斷通常短暫但可以持續更長的時間間隔。一個節點的中斷很少意味著從集群永久離開,因此不會自動的被從環中移除。其他節點會周期性的給它發gossip信息已查看這個節點是否恢復正常。要想永久的改變集群中節點的成員信息,管理員必須采用nodetool工具顯示地增加或移除節點。

  當一個節點從中斷中回來的時候,它可能會錯失一些本來應該寫入這個節點的數據。當故障檢測機制標明一個節點是掛掉的,錯失的寫入會被存儲在其他節點,前提是 hinted handoff機制被打開。如果節點的宕機時間超過max_hint_window_in_ms (默認3個小時),hint信息也不會被存儲。因為節點的掛掉可能會導致存儲為發送的hint信息,你應當在節點被發現掛掉一段時間后運行恢復。此外,你應當在所有節點上周期性的運行nodetool repair 以確保數據的一致性。

總結

以上是生活随笔為你收集整理的Cassandra1.2文档学习(2)——节点间通信协议之gossip协议的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。