こんちゃ(´・ω・)ノ
Cassandraの読み込み・書き込みの際の動作・アーキテクチャを
記載する。
【読み込み】
■動作順序
(1) クライアントからの読み込み要求を受け取る。
(2) データを保持しているノードを決定して、該当ノードに送信(フォワード)する。
(3) レプリケーションデータを保持しているノードを決定し、該当ノードに送信(フォワード)する。
(4) Row Cache、Memtable、SStableからデータを取得する。
(5) クライアントへのレスポンス返却を返却する。一貫性レベルによって動作が異なる。
■一貫性レベルの設定による動作の違い
設定 | ノード数 | 説明 |
Zero | 0 | 一貫性の保証なし。 |
One | 1 | 1つのノード(最初のノード)からデータを取得し終わった場合に、クライアントにレスポンスを返却する。 |
Quorum | (n/2)+1 | (全体のノード数/2)+1のノードからデータを取得し、整合性チェックを行った後、問題ない場合はクライアントにレスポンスを返却する。問題がある場合は実データを取得しにいく。 |
All | n | 全てのノードからデータを取得し、整合性チェックを行った後、問題ない場合はクライアントにレスポンスを返却する。問題がある場合は実データを取得しにいく。 |
※ 整合性チェックは、データのダイジェストを使用して行う。
【書き込み】
■動作順序
(1) クライアントからの書き込み要求を受け取る。
(2) どのノードにデータを保持させるかを決定して、該当ノードに送信(フォワード)する。
(3) レプリケーション(コピー)対象のノードを決定し、該当ノードに送信(フォワード)する。
(4) 書き込み情報をCommitLogとして記録。
(5) ColumnFamilyごとにメモリ上のMemtableに書き込まれる。
(6) flashによってMemtableの内容がSstableに書き出される。flashは手動またはMemtableに閾値を設定して、書き込み要求に対して非同期に実行される。
(7) クライアントへのレスポンス返却を返却する。一貫性レベルによって動作が異なる。
■一貫性レベルの設定による動作の違い
設定 | ノード数 | 説明 |
Zero | 0 | 一貫性の保証なし。書き込みが終了する前にすぐにクライアントにレスポンスを返却する。 |
One | 1 | 1つのノードの書き込みだけを保証。1つのノードで書き込みが終わった場合にクライアントにレスポンスを返却する。 |
Quorum | (n/2)+1 | レプリケートするノード数の半分+1ノードへの書き込みを保証する。(全体のノード数/2)+1のノードで書き込みが終わった場合にクライアントにレスポンスを返却する。 |
All | n | すべてのレプリカへの書き込みを保証する。全てのノードで書き込みがおわった場合にクライアントにレスポンスを返却する。 |
【Cassandra】
・
Cassandra - 概要 -・
Cassandra - データモデル -・
Cassandra - 読み込み・書き込みのアーキテクチャ -・
Cassandra - ディレクトリ構成 -・
Cassandra - CLI操作 -・
Cassandra - バックアップ・リカバリ -・
Cassandra - 使用ポート番号 -[0回]
PR
COMMENT