Cassandra教程(二):Cassandra架構(上)

Cassandra 設計用來處理多節點大型數據工作負載,系統中沒有單點,Cassandra 採用peer-to-peer架構,數據在所有節點之間分發。

  • cluster中所有node具有相同的角色。每個node互相獨立,同時在內部又互相溝通。
  • cluster中所有node都可以處理讀寫請求,而不用管數據具體在哪兒。
  • 如果一個node掛了,其它node可以處理讀寫請求。

1. node之間的溝通

Cassandra 各node之間採用 gossip 協議進行溝通,gossip 進程每秒與集羣中最多三個node交換信息,信息包括node自身的信息以及與該node交換過信息的node的信息,這樣,所有node都可以很快獲取集羣中所有的node信息。

2. Data distribution and replication

Cassandra是一個分區的按行存儲的數據庫(partitioned row store database)。在Cassandra中,數據以table的形式組織起來,primary key唯一標記一行,同時,primary key也決定了數據行存儲的node,replication是數據行的備份,Cassandra將數據複製到多個node上,從而實現高可用和容錯。

下面分data distribution 和 replication兩個方面進行闡述,其中distribution說明將數據分發到哪個node,replication說明如何備份。

2.1 Data distribution

partitioner 決定了數據是怎樣在集羣中分佈的。簡單的講,partitioner是一個函數,根據partition key產生一個唯一標記一行的token,然後,這行數據根據token分發到集羣中的節點,通常,partitioner是Hash函數。Cassandra提供了三種partitioner,包括Murmur3Partitioner(default)、RandomPartitioner、ByteOrderedPartitioner。(爲更好理解這部分,可以參考一致性哈希)。

2.2 Data replication

Cassandra將數據存儲到多個node以實現高可用和容錯,replication策略決定了將數據備份到哪些節點。

replication factor 指數據在整個cluster中的份數,如果replication factor等於1,則數據在整個集羣中僅存在一份,此時,如果存儲數據的node出現故障,那麼數據就丟失了。在實踐中,replication factor 應該不超過cluster中node的數量。

Cassandra提供了兩種replication 策略:

  • SimpleStrategy: 僅適用於單datacenter 單 rack。根據partitioner存儲第一份replica,然後在順時針方向的下一個node上存放下一份replica(不考慮網絡拓撲信息)。
  • NetworkTopologyStrategy: 可以方便的擴展到多datacenter,推薦使用,同時,NetworkTopologyStrategy儘量避免將數據存儲到相同的rack上。

3. Snitches

snitch 決定了node屬於哪個datacenter的哪個rack。可以用於告知Cassandra集羣網絡拓撲信息,以實現高效的請求路由與分發、備份數據。

主要的snitch包括:

  • dynamic snitching
  • SimpleSnitch
  • RackInferringSnitch
  • PropertyFileSnitch
  • GossipingPropertyFileSnitch
  • ...

4. 總結

本文主要介紹Cassandra的架構、數據distribution 與 replication,下一章介紹Cassandra的內部信息,包括存儲引擎、Cassandra讀寫、數據一致性等。

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