Cassandra 架構解釋:綜合教程

已發表: 2021-03-10

自從在 Facebook 成立以來,Cassandra 已經成為最受歡迎的 Apache 項目之一。 它是一種廣泛使用的開源、高性能和分佈式數據庫,使軟件工程師、數據科學家和 Web 開發人員的生活更加輕鬆。

這個強大的數據庫解決方案的用戶包括 IBM、Facebook、Reddit、eBay 和 Twitter。

但是,要熟悉 Cassandra,您必須了解它的架構,而 Apache Cassandra 架構可能有點難以理解。

這就是為什麼我們創建了以下關於 Cassandra 架構的介紹性指南。 它將使您熟悉 Cassandra 架構的所有必要概念:

目錄

Cassandra 架構基礎

Apache Cassandra 架構沒有主節點或從節點。 相反,它具有環狀架構,其中節點在邏輯上分佈在一個環中。 該架構允許數據自動分佈在所有節點上。 與 HDFS 一樣,Cassandra 中的數據會跨節點複製以實現冗餘並存儲在內存中。 它使用鍵的哈希值在集群中的節點之間分配數據。

Cassandra 架構允許系統運行而不受單點故障的影響。 這意味著如果一個集群有一百個節點並且其中一個發生故障,那麼集群仍然會運行。 另一方面,在 Hadoop 中,namenode 的失敗會使整個系統失敗。

Cassandra 架構提供了高可擴展性,因此集群甚至可以擁有數千個節點。 此外,您可以在不中斷其操作的情況下將新節點添加到集群中。

除了我們上面討論的功能外,Apache Cassandra 架構還支持多個數據中心,並支持跨數據中心的數據複製。

拓撲與設計

Cassandra 架構基於分佈式系統架構。 最簡單的 Cassandra 版本可以在一台機器上運行,並且可以很好地進行基本測試。 一個 Cassandra 實例稱為節點。

Cassandra 提供水平可擴展性,您可以在其中添加多個節點作為集群的組件。 它適用於對等架構,其中每個節點都連接到其他每個節點。 每個 Cassandra 節點在沒有主節點的情況下執行所有數據庫操作和服務器客戶端請求。

這種點對點分佈式架構可確保單點故障不會導致整個系統出現故障。 Cassandra 中的集群可以相互通信以實現多種功能。 以下概念對於此類溝通至關重要:

閒話

Gossip 是一種 Cassandra 協議,其節點用於點對點通信。 它通知一個節點其他節點的狀態。 每一秒,一個節點與最多三個其他節點執行八卦,每條八卦消息都遵循特定的格式和版本號,以保持通信效率。

種子

Cassandra 中的每個節點都配置一個種子列表,該列表是其他節點的列表。 種子節點除了在首次加入集群時引導節點之外沒有任何其他用途。 引導後,節點在重新啟動時不需要種子。 每個 Cassandra 數據中心最好使用兩個或三個種子節點,並保持種子列表統一。

數據庫結構

在 Cassandra 中,數據存儲在表中,其中每個表都組織成行和列。 此外,Cassandra 中的表被分組在鍵空間中,例如客戶數據表可以全部分組在一個鍵空間中,而業務事務表可以存儲在另一個鍵空間中。

每個表都有一個主鍵,主鍵分為集群列和分區鍵。 請注意,聚類列是可選的。 Cassandra 使用分區鍵來索引數據。 具有公共分區鍵的所有行構成一個數據分區,是數據分區的基本單位。

Cassandra 中的分區

在 Cassandra 中,分區程序將分區鍵轉換為令牌。 Cassandra 中有多個分區器選項,其中 Murmur3Partitioner 是默認設置。 每個令牌都被分配了一個介於 -2^63 到 +2^63-1 之間的整數值,這個範圍的名稱就是令牌範圍。

每個 Cassandra 都擁有這個範圍的一部分,它主要擁有與該範圍相關的數據。 我們使用令牌在節點之間精確定位數據。

您可以用這個概念來理解所有權系統:如果集群只有一個節點,那麼該節點將擁有完整的令牌範圍。 隨著更多節點的添加,令牌範圍所有權將相應地拆分。

虛擬節點

Cassandra 通過使用虛擬節點(也稱為 Vnode)簡化了令牌計算和分配挑戰。

它將集群劃分為多個虛擬節點以分配令牌,每個物理節點都獲得相同數量的 Vnode。 節點擁有的默認 Vnode 數量為 256。您可以使用 num_tokens 屬性進行設置。 當您將新節點添加到集群時,令牌分配算法將使用 Vnode 分配所需的令牌。

複製

Cassandra 使用複制因子復制存在於每個鍵空間中的數據。 數據的一個主要副本保留在令牌所有者節點中,而其餘的則由 Cassandra 通過其副本放置策略放置在特定節點上。 請注意,所有副本對於大多數數據庫操作都具有同等重要性。

有兩個設置會影響 Cassandra 中的副本放置,它們是 snitch 和復制策略。 Snitch 確定節點所屬的數據中心和機架。 他們負責通知 Cassandra 有關保持高效的拓撲。

複製策略設置在 keyspace 級別,有兩個:NetworkTopologyStrategy 和 simple strategy。 前者是機架和數據中心感知的,而後者不是。

CAP定理

每個分佈式系統都基於 CAP 定理工作。 根據這個定理,任何分佈式系統都可以正確地提供一致性、可用性和分區容錯這三個屬性中的任何兩個。

在 Cassandra 中,您可以在可用性和一致性之間進行選擇。 這意味著數據可以高度一致但可用性較低,也可以高度可用但一致性較低。

請求特定數量的確認的概念稱為可調一致性,您可以在單個查詢級別應用它。

寫過程

在這個過程中,數據被寫入磁盤上的評論日誌,然後根據哈希值發送到負責節點。

之後,節點將數據寫入名為 memtable 的內存表中,從該表中將數據寫入內存中的“sstable”。 接下來,它會更新為實際表。

如果責任節點由於某種原因關閉,數據將被寫入另一個節點。

了解有關 Cassandra 架構的更多信息

了解 Apache Cassandra 架構將幫助您了解此解決方案的工作原理。 到現在為止,您也知道為什麼 Cassandra 在競爭中脫穎而出以及為什麼它如此受歡迎。

如果您有興趣了解有關數據庫的更多信息,可以查看以下資源:

用於數據科學的 SQL:為什麼選擇 SQL,優點和命令列表

20 個最常見的 SQL 面試問題和答案 [針對應屆生]

帶證書的 SQL 免費在線課程 [2021]

另一方面,如果您正在尋找個性化的學習體驗,我們建議您參加數據科學課程。 在 upGrad,我們提供數據科學 PG 文憑和數據科學理學碩士 這些課程將教您成為數據科學專業人士所需的所有技能。

結論

如果您有興趣了解有關大數據計劃的更多信息,請查看我們的大數據軟件開發專業化 PG 文憑計劃,該計劃專為在職專業人士設計,提供 7 多個案例研究和項目,涵蓋 14 種編程語言和工具,實用的手在研討會上,超過 400 小時的嚴格學習和頂級公司的就業幫助。

在 upGrad 查看我們的其他軟件工程課程。

大數據前沿課程

來自 IIIT-B 的大數據前沿課程
IIIT Bangalore 大數據高級證書課程