Cassandra 架構(gòu)

2021-04-16 16:23 更新

Cassandra的設(shè)計(jì)目的是處理跨多個(gè)節(jié)點(diǎn)的大數(shù)據(jù)工作負(fù)載,而沒(méi)有任何單點(diǎn)故障。Cassandra在其節(jié)點(diǎn)之間具有對(duì)等分布式系統(tǒng),并且數(shù)據(jù)分布在集群中的所有節(jié)點(diǎn)之間。

  • 集群中的所有節(jié)點(diǎn)都扮演相同的角色。 每個(gè)節(jié)點(diǎn)是獨(dú)立的,并且同時(shí)互連到其他節(jié)點(diǎn)。

  • 集群中的每個(gè)節(jié)點(diǎn)都可以接受讀取和寫(xiě)入請(qǐng)求,無(wú)論數(shù)據(jù)實(shí)際位于集群中的何處。

  • 當(dāng)節(jié)點(diǎn)關(guān)閉時(shí),可以從網(wǎng)絡(luò)中的其他節(jié)點(diǎn)提供讀/寫(xiě)請(qǐng)求。

Cassandra中的數(shù)據(jù)復(fù)制

在Cassandra中,集群中的一個(gè)或多個(gè)節(jié)點(diǎn)充當(dāng)給定數(shù)據(jù)片段的副本。如果檢測(cè)到一些節(jié)點(diǎn)以過(guò)期值響應(yīng),Cassandra將向客戶端返回最近的值。返回最新的值后,Cassandra在后臺(tái)執(zhí)行讀修復(fù)以更新失效值。

下圖顯示了Cassandra如何在集群中的節(jié)點(diǎn)之間使用數(shù)據(jù)復(fù)制,以確保沒(méi)有單點(diǎn)故障的示意圖。

數(shù)據(jù)復(fù)制

- Cassandra在后臺(tái)使用Gossip協(xié)議,允許節(jié)點(diǎn)相互通信并檢測(cè)集群中的任何故障節(jié)點(diǎn)。

Cassandra的組件

Cassandra的關(guān)鍵組件如下

  • 節(jié)點(diǎn) - 它是存儲(chǔ)數(shù)據(jù)的地方。

  • 數(shù)據(jù)中心 - 它是相關(guān)節(jié)點(diǎn)的集合。

  • 集群 - 集群是包含一個(gè)或多個(gè)數(shù)據(jù)中心的組件。

  • 提交日志 - 提交日志是Cassandra中的崩潰恢復(fù)機(jī)制。每個(gè)寫(xiě)操作都寫(xiě)入提交日志。

  • Mem- - mem-表是存儲(chǔ)器駐留的數(shù)據(jù)結(jié)構(gòu)。提交日志后,數(shù)據(jù)將被寫(xiě)入mem表。有時(shí),對(duì)于單列族,將有多個(gè)mem表。

  • SSTable - 它是一個(gè)磁盤(pán)文件,當(dāng)其內(nèi)容達(dá)到閾值時(shí),數(shù)據(jù)從mem表中刷新。

  • 布隆過(guò)濾器 - 這些只是快速,非確定性的算法,用于測(cè)試元素是否是集合的成員。它是一種特殊的緩存。 每次查詢(xún)后訪問(wèn)Bloom過(guò)濾器。

Cassandra 查詢(xún)語(yǔ)言

用戶可以使用Cassandra查詢(xún)語(yǔ)言(CQL)通過(guò)其節(jié)點(diǎn)訪問(wèn)Cassandra。CQL將數(shù)據(jù)庫(kù)(Keyspace)視為表的容器。 程序員使用cqlsh:提示以使用CQL或單獨(dú)的應(yīng)用程序語(yǔ)言驅(qū)動(dòng)程序。

客戶端針對(duì)其讀寫(xiě)操作訪問(wèn)任何節(jié)點(diǎn)。該節(jié)點(diǎn)(協(xié)調(diào)器)在客戶端和保存數(shù)據(jù)的節(jié)點(diǎn)之間播放代理。

寫(xiě)操作

節(jié)點(diǎn)的每個(gè)寫(xiě)入活動(dòng)都由寫(xiě)在節(jié)點(diǎn)中的提交日志捕獲。稍后數(shù)據(jù)將被捕獲并存儲(chǔ)在存儲(chǔ)器表中。每當(dāng)內(nèi)存表滿時(shí),數(shù)據(jù)將寫(xiě)入SStable數(shù)據(jù)文件。所有寫(xiě)入都會(huì)在整個(gè)集群中自動(dòng)分區(qū)和復(fù)制。Cassandra會(huì)定期整合SSTables,丟棄不必要的數(shù)據(jù)。

讀操作

在讀操作,Cassandra 從MEM-表得到的值,并檢查過(guò)濾器以找到保存所需數(shù)據(jù)的相應(yīng)的SSTable。



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)