Cassandra旨在處理多個節點之間的巨量資料工作負載,而無需擔心單點故障。 它在其節點之間具有對等分散式系統,資料分布在叢集中的所有節點上。
在Cassandra中,叢集中的節點作為給定資料片段的副本。 如果某些節點以超時值響應,Cassandra會將最新的值返回給用戶端。 返回最新值後,Cassandra會在後台執行讀取修復,以更新舊值。
請參閱以下圖示,以了解Cassandra如何在叢集中的節點之間使用資料複製的原理圖,以確保沒有單點故障。
Cassandra的主要組成部分主要有:
Cassandra查詢語言(CQL)用於通過其節點存取Cassandra。 CQL將資料庫(Keyspace)視為表的容器。 程式員使用cqlsh
:提示使用CQL或單獨的應用程式語言驅動程式。
用戶端可以接近任何節點進行讀寫操作。 該節點(協調器)在客戶機和儲存資料的節點之間扮演代理。
節點的每個寫入活動都由寫入節點的提交紀錄檔捕獲。 之後,資料將被捕獲並儲存在記憶體表中。 每當記憶體表已滿時,資料將被寫入SStable
資料檔案。 所有寫入在整個叢集中自動分割區和複製。 Cassandra定期整合SSTables,丟棄不必要的資料。
在讀操作中,Cassandra從mem-table
中獲取值,並檢查bloom
過濾器以找到包含所需資料的適當SSTable。
有三種型別的讀請求被協調者傳送給副本。
協調器傳送的直接請求到副本中的一個。 之後,協調器將摘要請求傳送到由一致性級別指定的副本數,並檢查返回的資料是否是更新的資料。
之後,協調器將所有剩餘的副本傳送摘要請求。 如果任何節點發出過期值,後台讀修復請求將更新該資料。 這個過程稱為讀修復機制。