1. 程式人生 > >cassandra的資料分佈和副本策略

cassandra的資料分佈和副本策略

由於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: 推薦方式,因為可以擴充套件到多資料中心。