cassandra的資料分佈和副本策略
阿新 • • 發佈:2019-02-17
由於cassandra叢集的每個節點是對等的,所以資料的分佈和副本是在一起的。
資料是通過表組織起來的,通過行鍵(主鍵)標識,主鍵決定了資料儲存在哪個節點。每一行會有多個副本(replica),注意第一份資料也被稱為副本。
當建立一個叢集時,必須指定以下內容:
虛擬節點:把資料分配到物理機器節點
分片器:在整個叢集中對資料進行分片
副本策略:決定每行資料的副本
Snitch: 決定副本策略的拓撲資訊。
資料分佈
1.一致性hash
cassandra為每個主鍵計算一個hash值,為每個節點指定一個其負責的hash值範圍,根據主鍵hash值和節點負責的hash值範圍將不同的行儲存到不同的節點。2.資料如何分佈
在1.2之前,必須為每個節點分配一個token,每個token決定了節點在叢集環上的位置以及它負責儲存的資料(根據主鍵hash值)。
1.2版引入了虛擬節點,允許每個節點擁有多個小的hash範圍。虛擬節點也使用一致性hash分佈資料,但是不需要產生和分配token。
如下圖所示:
副本策略
一行有幾個副本由副本因子引數決定,1表示每行只有一個副本,2表示每行有2個副本,儲存子不同的節點上。所有的節點都同樣重要,沒有主次之分。
副本數量應該不超過叢集節點的數量。有兩種副本策略:
SimpleStrategy:適用於只有一個數據中心的狀況。第一個副本的儲存位置由分片器(partitioner)決定,其他副本按照順時針方向依次放在其它節點。
NetworkTopologyStrategy: 推薦方式,因為可以擴充套件到多資料中心。