TiKVの概要

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

アーキテクチャの概要

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

TiKV Architecture

リージョンとRocksDB

各ストア内には RocksDB データベースがあり、データはローカル ディスクに保存されます。すべてのリージョンデータは、各ストアの同じ RocksDB インスタンスに保存されます。 Raftコンセンサス アルゴリズムに使用されるすべてのログは、各ストアの別の 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 つの小さい隣接するリージョンを 1 つのリージョンにマージします。

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

Leaderレプリカをあるノードから別のノードに移動する場合も同様のメカニズムがあります。違いは、LearnerレプリカがFollowerレプリカになった後、Followerレプリカが自身をLeaderに選出するための選挙を積極的に提案する「Leader転送」操作があることです。最後に、新しい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.