Cassandra 文件

版本

您正在檢視預發行版本的說明文件。

檢視最新版本

保證

Apache Cassandra 是一個高度可擴充且可靠的資料庫。Cassandra 用於服務大量客戶端的網路應用程式,且處理的資料量為網路規模(PB)的大量資料。Cassandra 對其可擴充性、可用性和可靠性提供了一些保證。若要完全了解儲存系統在預期會發生一定程度的網路分割故障並在設計系統時將其納入考量時的內在限制,首先簡要介紹 CAP 定理非常重要。

什麼是 CAP?

根據 CAP 定理,分散式資料儲存無法同時提供下列保證中的兩個以上。

  • 一致性:一致性表示每次讀取都會收到最近的寫入或錯誤

  • 可用性:可用性表示每個要求都會收到回應。無法保證回應包含最近的寫入或資料。

  • 分割容錯:分割容錯是指儲存系統容忍網路分割故障。即使某些訊息遺失或延遲,系統仍會繼續運作。

CAP 定理暗示,在使用網路分割時,由於分割故障的固有風險,必須在一致性和可用性之間進行選擇,且兩者無法同時得到保證。CAP 定理在圖 1 中說明。

image
圖 1. CAP 定理

高可用性是基於 Web 的應用程式中的優先事項,為了達到此目標,Cassandra 從 CAP 保證中選擇可用性和分割容錯,在某種程度上犧牲資料一致性。

Cassandra 提供以下保證。

  • 高可擴充性

  • 高可用性

  • 耐用性

  • 寫入單一資料表的最終一致性

  • 具有線性化一致性的輕量級交易

  • 跨多個資料表的批次寫入保證完全成功或完全不成功

  • 保證次要索引與其本地複本的資料一致

高可擴充性

Cassandra 是一個高度可擴充的儲存系統,其中可以根據需要新增/移除節點。使用基於八卦的通訊協定,在每個節點上保留一個統一且一致的成員資格清單。

高可用性

Cassandra 透過實作容錯儲存系統來保證資料的高可用性。使用基於八卦的通訊協定來偵測節點故障。

耐用性

Cassandra 透過使用複本來保證資料耐用性。複本是儲存在叢集中不同節點上的資料的多個副本。在多資料中心環境中,複本可以儲存在不同的資料中心。如果一個複本因無法復原的節點/資料中心故障而遺失,資料並不會完全遺失,因為複本仍然可用。

最終一致性

為了滿足效能、可靠性、可擴充性和高可用性的生產需求,Cassandra 是最終一致的儲存系統。最終一致性表示所有更新最終會傳遞到所有複本。相同資料的不同版本可能會暫時存在,但最終會調整為一致狀態。最終一致性是為了達成高可用性而做出的權衡,它涉及一些讀取和寫入延遲。

具有線性化一致性的輕量級交易

資料必須依序讀取和寫入。Paxos 共識通訊協定用於實作輕量級交易。Paxos 通訊協定實作輕量級交易,能夠使用線性化一致性來處理並行作業。線性化一致性是具有即時限制的順序一致性,它透過比較並設定 (CAS) 交易來確保交易隔離。使用 CAS 比較複本資料,並將發現過期的資料設定為最一致的值。具有線性化一致性的讀取允許讀取資料的目前狀態,該狀態可能尚未提交,而無需新增或更新。

批次寫入

跨多個資料表的批次寫入保證最終會成功,否則都不會成功。批次資料會先寫入批次記錄系統資料,當批次資料已成功儲存在叢集中時,會移除批次記錄資料。批次會複製到另一個節點,以確保在協調器節點故障時完整的批次會完成。

次要索引

次要索引是欄位上的索引,用於查詢通常無法查詢的表格。建立次要索引時,保證與其本機複製品一致。