Cassandra Archi構造と複製係数

Cassandra 処理できるように設計されています ビッグデータ. Cassandraの主な機能は、単一障害点を発生させずに複数のノードにデータを保存することです。

このような理由は、 Cassandraのアーキテクチャでは、ハードウェア障害はいつでも発生する可能性があります。どのノードもダウンする可能性があります。障害が発生した場合、別のノードに保存されているデータを使用することができます。したがって、 Cassandra 分散アーキテクチャで設計されています。

Cassandra ピアツーピアの分散型アーキテクチャを使用して、異なるノードにデータを保存します。

すべてのノードは次を使用して相互に情報を交換します。 ゴシッププロトコル。ゴシップはプロトコルです Cassandra どのノードが相互に通信できるか。

の構成要素 Cassandra Archi構造

以下のコンポーネントが含まれています Cassandra Archi構造:

Cassandra Archi構造
Cassandra Archi構造図

Node

ノードとはデータが保存される場所です。それはの基本的なコンポーネントです Cassandra.

データセンター

ノードの集合体はデータセンターと呼ばれます。 多くのノードはデータセンターとして分類されます。

Cluster

クラスターは、多数のデータセンターの集合です。

コミットログ

すべての書き込み操作はコミット ログに書き込まれます。コミット ログはクラッシュ回復に使用されます。

メモリテーブル

Commit logにデータが書き込まれた後、Mem-tableにデータが書き込まれます。 データはMem-tableに一時的に書き込まれます。

SSTテーブル

Mem-table が特定のしきい値に達すると、データが SSTable ディスク ファイルにフラッシュされます。

データ複製 Cassandra

データ処理中はいつでもハードウェアの問題が発生したり、リンクがダウンしたりする可能性があるため、問題が発生したときにバックアップを提供するソリューションが必要です。 そのため、単一障害点をなくすためにデータが複製されます。

Cassandra これら 2 つの要素に基づいて、データのレプリカを異なるノードに配置します。

  • 次のレプリカをどこに配置するかは、 レプリケーション戦略.
  • さまざまなノードに配置されるレプリカの総数は、 レプリケーション係数.

XNUMX つのレプリケーション要素は、データのコピーが XNUMX つだけ存在することを意味し、XNUMX つのレプリケーション要素は、XNUMX つの異なるノード上にデータの XNUMX つのコピーが存在することを意味します。

単一障害点がないことを保証するために、 レプリケーション係数は XNUMX である必要があります。

レプリケーション戦略には XNUMX 種類あります。 Cassandra.

シンプルな戦略で Cassandra

Simple頭脳系 データ センターが 1 つしかない場合に使用されます。SimpleStrategy は、パーティショナーによって選択されたノードに最初のレプリカを配置します。その後、残りのレプリカはノード リングに時計回りに配置されます。

SimpleStrategy の図は次のとおりです。

シンプルな戦略で Cassandra
シンプルな戦略で Cassandra

ネットワークトポロジ戦略 Cassandra

ネットワークトポロジー戦略 2 つ以上のデータ センターがある場合に使用されます。NetworkTopologyStrategy では、レプリカは各データ センターごとに個別に設定されます。NetworkTopologyStrategy は、別のラックの最初のノードに到達するまで、リング内で時計回り方向にレプリカを配置します。この戦略では、同じデータ センター内の異なるラックにレプリカを配置しようとします。

これは、ラック内で障害や問題が発生する場合があるためです。 その後、他のノード上のレプリカがデータを提供できるようになります。

以下は、ネットワーク トポロジ戦略を図で表したものです。

ネットワークトポロジ戦略 Cassandra
ネットワークトポロジ戦略 Cassandra

書きます Operaの Cassandra

コーディネーターは書き込みリクエストをレプリカに送信します。 すべてのレプリカが稼働している場合、整合性レベルに関係なく書き込みリクエストを受け取ります。

一貫性レベル 成功確認を返すノードの数を決定します。

データがコミット ログに正常に書き込まれた場合、ノードは成功通知で応答します。 メモリテーブル。

たとえば、レプリケーション係数が XNUMX の単一のデータ センターでは、XNUMX つのレプリカが書き込みリクエストを受け取ります。 整合性レベルが XNUMX の場合、XNUMX つのレプリカのみが成功確認を返し、残りの XNUMX つは休止状態のままになります。

残りの 2 つのレプリカがノードのダウンまたはその他の問題によりデータを失った場合、 Cassandra 組み込みの修復メカニズムによって行の一貫性が保たれます。 Cassandra.

ここでは、書き込みプロセスがどのように発生するかを説明します。 Cassandra,

  1. ノードに書き込みリクエストが来ると、まずコミットログに記録されます。
  2. その後 Cassandra データをmemテーブルに書き込みます。各書き込みリクエストで mem テーブルに書き込まれたデータは、コミット ログにも個別に書き込まれます。 Mem-table はメモリに一時的に保存されるデータであり、Commit ログはバックアップの目的でトランザクション レコードを記録します。
  3. mem-table がいっぱいになると、データが SSTable データ ファイルにフラッシュされます。
書きます Operaの Cassandra
書きます Operaの Cassandra

読む Operaの Cassandra

コーディネーターがレプリカに送信する読み取りリクエストには XNUMX つのタイプがあります。

  1. 直接依頼
  2. ダイジェストリクエスト
  3. 修理リクエストを読む

コーディネーターは、レプリカの XNUMX つに直接リクエストを送信します。 その後、コーディネータは、整合性レベルで指定された数のレプリカにダイジェスト要求を送信し、返されたデータが更新されたデータであるかどうかを確認します。

その後、コーディネーターは残りのすべてのレプリカにダイジェスト要求を送信します。 いずれかのノードが古い値を返した場合、バックグラウンドの読み取り修復リクエストによってそのデータが更新されます。 このプロセスは読み取り修復メカニズムと呼ばれます。

まとめ

  • このチュートリアルでは、 Cassandra 内部構造と Cassandra データの複製、書き込み、読み取りをさまざまな段階で行います。
  • また、ここではその方法について説明します Cassandra プロセス全体を通じて一貫性レベルを維持します。
  • の構成要素 Cassandra Archi構造: ノード、データセンター、 Cluster、コミットログ、メモリテーブル、SSTable
  • XNUMX つのレプリケーション要素は、データのコピーが XNUMX つだけ存在することを意味し、XNUMX つのレプリケーション要素は、XNUMX つの異なるノード上にデータの XNUMX つのコピーが存在することを意味します。
  • SimpleStrategy は、データ センターが XNUMX つだけある場合に使用されます。
  • NetworkTopologyStrategy は、XNUMX つ以上のデータ センターがある場合に使用されます。