關於分散式系統的節點,有時候不同節點之間的物理距離實際上是很遠的,對於資料的存取,我們會想要盡量追求服務使用上的低延遲,於是會優先選擇比較靠近的服務節點做使用。
就好比身在台灣,如果使用的服務有亞洲伺服器可以選,通常不會去使用歐洲或美洲的伺服器來使用服務。
因此系統就需要有個判斷節點遠近的機制,那麼就是snitch
,在幫CASSANDRA/SCYLLA處理這個判斷。
由於副本
的設置,同樣一份資料可能分別放在不同節點,而snitch會幫連線進來的使用者,挑選資料存在而且是最近的節點,從那個節點做資料的存取。
在一開始對於各種架構配置的策略不同,所要設定的snitch也需要不同的策略,我們談的架構配置,是以一個cluster為單位,因此在同一個cluster之下,設定的snitch策略只有一種。
而CASSANDRA 和 SCYLLA 所支援的snitch策略會有些不同,CASSANDRA比較多一些。
以下簡單介紹幾個常見snitch:
如果是規模比較小的狀況,沒有特別設定datacenter、rack(或者是說1 DC、1 rack),就可以使用這個snitch策略,因為它不會特別去辨識節點所在的datacenter和rack資訊。
根據節點的IP分配位置,判斷節點所屬的DC和rack。
根據設定檔內的定義資訊,每個節點所屬的DC和rack做處理。
設定檔位置:/etc/scylla/cassandra-rackdc.properties
提供在AWS環境使用的snitch。
提供在GCP環境使用的snitch。