Cassandra-architecture

提供:Dev Guides
移動先:案内検索

Cassandra-アーキテクチャ

Cassandraの設計目標は、単一障害点なしで複数のノードにわたるビッグデータのワークロードを処理することです。 Cassandraには、ノード間でピアツーピア分散システムがあり、データはクラスター内のすべてのノードに分散されます。

  • クラスター内のすべてのノードは同じ役割を果たします。 各ノードは独立しており、同時に他のノードに相互接続されています。
  • クラスター内の各ノードは、データがクラスター内の実際の場所に関係なく、読み取りおよび書き込み要求を受け入れることができます。
  • ノードがダウンすると、ネットワーク内の他のノードから読み取り/書き込み要求を処理できます。

Cassandraでのデータ複製

Cassandraでは、クラスター内の1つ以上のノードが特定のデータのレプリカとして機能します。 一部のノードが古い値で応答したことが検出された場合、Cassandraはクライアントに最新の値を返します。 最新の値を返した後、Cassandraはバックグラウンドで read repair を実行し、古い値を更新します。

次の図は、Cassandraがクラスター内のノード間でデータ複製を使用して、単一障害点がないことを確認する方法の概略図を示しています。

データ複製

注意-Cassandraは、バックグラウンドで Gossip Protocol を使用して、ノードが相互に通信し、クラスター内の障害のあるノードを検出できるようにします。

Cassandraのコンポーネント

Cassandraの主要なコンポーネントは次のとおりです-

  • ノード-データが保存される場所です。
  • データセンター-関連ノードのコレクションです。
  • クラスター-クラスターは、1つ以上のデータセンターを含むコンポーネントです。
  • コミットログ-コミットログはCassandraのクラッシュリカバリメカニズムです。 書き込み操作はすべてコミットログに書き込まれます。
  • Mem-table -mem-tableはメモリ常駐データ構造です。 コミットログの後、データはmem-tableに書き込まれます。 単一列のファミリの場合、複数のmem-tableが存在する場合があります。
  • SSTable -内容がしきい値に達すると、データがmem-tableからフラッシュされるディスクファイルです。
  • ブルームフィルター-これらは、要素がセットのメンバーであるかどうかをテストするための、迅速で非決定的なアルゴリズムにすぎません。 これは特別な種類のキャッシュです。 ブルームフィルターは、クエリごとにアクセスされます。

Cassandraクエリ言語

ユーザーは、Cassandra Query Language(CQL)を使用して、ノードを介してCassandraにアクセスできます。 CQLは、データベース*(Keyspace)をテーブルのコンテナとして扱います。 プログラマは、 cqlsh:*プロンプトを使用して、CQLまたは個別のアプリケーション言語ドライバーを操作します。

クライアントは、読み取り/書き込み操作のためにいずれかのノードにアプローチします。 そのノード(コーディネーター)は、クライアントとデータを保持するノードの間でプロキシを再生します。

書き込み操作

ノードのすべての書き込みアクティビティは、ノードに書き込まれた*コミットログ*によってキャプチャされます。 その後、データはキャプチャされ、 mem-table に保存されます。mem-tableがいっぱいになると、データは SStable データファイルに書き込まれます。 すべての書き込みは自動的に分割され、クラスター全体に複製されます。 Cassandraは定期的にSSTableを統合し、不要なデータを破棄します。

読み取り操作

読み取り操作中、Cassandraはmem-tableから値を取得し、ブルームフィルターをチェックして、必要なデータを保持する適切なSSTableを見つけます。