TiKVの概要

TiKV は分散型のトランザクション キー値データベースであり、 ACID準拠のトランザクション API を提供します。 RocksDB に格納されたRaftコンセンサスアルゴリズムおよびコンセンサス状態の実装により、TiKV は複数のレプリカ間のデータの一貫性と高可用性を保証します。 TiDB 分散データベースのstorageレイヤーとして、TiKV は読み取りおよび書き込みサービスを提供し、アプリケーションから書き込まれたデータを永続化します。また、TiDB クラスターの統計データも格納します。

アーキテクチャの概要

TiKV は、Google Spanner の設計に基づいて、マルチラフト グループ レプリカ メカニズムを実装します。リージョンは、キーと値のデータ移動の基本単位であり、ストア内のデータ範囲を参照します。各リージョンは複数のノードに複製されます。これらの複数のレプリカがRaftグループを形成します。リージョンのレプリカはピアと呼ばれます。通常、 リージョンには 3 つのピアがあります。それらの 1 つはリーダーであり、読み取りおよび書き込みサービスを提供します。 PDコンポーネントは、すべてのリージョンのバランスを自動的に調整して、TiKV クラスター内のすべてのノード間で読み取りと書き込みのスループットのバランスがとれるようにします。 PD と慎重に設計されたRaftグループにより、TiKV は水平方向のスケーラビリティに優れ、100 TB を超えるデータを格納するように簡単に拡張できます。

TiKV Architecture

リージョンと RocksDB

各ストア内には RocksDB データベースがあり、データはローカル ディスクに保存されます。すべてのリージョンデータは、各ストアの同じ RocksDB インスタンスに保存されます。 Raftコンセンサス アルゴリズムに使用されるすべてのログは、各 Store の別の RocksDB インスタンスに保存されます。これは、シーケンシャル I/O のパフォーマンスがランダム I/O よりも優れているためです。 raft ログとリージョンデータを格納するさまざまな RocksDB インスタンスを使用して、TiKV は raft ログと TiKV リージョンのすべてのデータ書き込み操作を 1 つの I/O 操作に結合して、パフォーマンスを向上させます。

リージョンとRaftのコンセンサスアルゴリズム

リージョンのレプリカ間のデータの一貫性は、 Raftコンセンサス アルゴリズムによって保証されます。 リージョンのリーダーのみが書き込みサービスを提供でき、データがリージョンの大部分のレプリカに書き込まれた場合にのみ、書き込み操作が成功します。

TiKV は、クラスター内の各リージョンに適切なサイズを維持しようとします。現在、リージョンサイズはデフォルトで 96 MiB です。このメカニズムは、PDコンポーネントがTiKV クラスター内のノード間でリージョンのバランスを取るのに役立ちます。リージョンのサイズがしきい値 (デフォルトでは 144 MiB) を超えると、TiKV はリージョンを 2 つ以上のリージョンに分割します。 リージョンのサイズがしきい値 (デフォルトでは 20 MiB) より小さい場合、TiKV は 2 つの小さい隣接する Region を 1 つのリージョンにマージします。

PD がレプリカを 1 つの TiKV ノードから別のノードに移動する場合、まずターゲット ノードにLearnerレプリカを追加します。LearnerレプリカのデータがLeaderレプリカのデータとほぼ同じになった後、PD はそれをFollowerレプリカに変更し、削除します。ソース ノードのFollowerレプリカ。

あるノードから別のノードへのLeaderレプリカの移動には、同様のメカニズムがあります。違いは、 LearnerレプリカがFollowerレプリカになった後に、 Followerレプリカが自身をLeaderとして選択するための選択を積極的に提案する " Leader Transfer" 操作があることです。最後に、新しいLeaderはソース ノードの古いLeaderレプリカを削除します。

分散トランザクション

TiKV は分散トランザクションをサポートしています。ユーザー (または TiDB) は、同じリージョンに属しているかどうかを気にすることなく、複数のキーと値のペアを書き込むことができます。 TiKV は 2 フェーズ コミットを使用してACID制約を実現します。詳細はTiDB 楽観的トランザクションモデルを参照してください。

TiKVコプロセッサー

TiDB は、一部のデータ計算ロジックを TiKV コプロセッサーにプッシュします。 TiKV コプロセッサー は、各リージョンの計算を処理します。 TiKV コプロセッサーに送信される各リクエストには、1 つのリージョンのデータのみが含まれます。

このページは役に立ちましたか?

Playground
登録なしで TiDB の機能をワンストップでインタラクティブに体験できます。
製品
TiDB Cloud
TiDB
価格
PoC お問い合わせ
エコシステム
TiKV
TiFlash
OSS Insight
© 2024 PingCAP. All Rights Reserved.
Privacy Policy.