Tair DRAMベースインスタンスは、ホットデータに対する同時実行性の高い読み取りおよび書き込み操作が多数発生し、Community Edition インスタンスが提供できるパフォーマンスよりも高いパフォーマンスが求められるシナリオに適しています。Community Edition インスタンスと比較して、DRAMベースインスタンスは、マルチスレッドパフォーマンスの向上や複数の拡張データ構造の統合など、より多くのメリットを提供します。
メリット
項目 | 説明 |
互換性 |
|
パフォーマンス |
|
同期モード | 準同期レプリケーションモードが追加でサポートされています。このモードでは、クライアントによって開始された更新がマスターノードで実行された後、マスターノードはログをレプリカノードに複製します。レプリカノードがログの受信を確認した後にのみ、クライアントに応答が返されます。これにより、高可用性スイッチオーバー中にデータが失われることがありません。 |
デプロイメントアーキテクチャ |
|
複数の Redis モジュールの統合 | |
エンタープライズグレードの機能 |
|
データセキュリティ |
|
シナリオ
Tair DRAMベースインスタンスは、ライブストリーミング、フラッシュセール、オンライン教育などのシナリオに適しています。次のセクションでは、典型的なシナリオについて説明します。
シナリオ 1:フラッシュセール中、一部のキャッシュされたホットキーの QPS が 200,000 を超える場合があります。Community Edition インスタンスはこの要件を満たすことができません。
標準 DRAMベースインスタンスは、パフォーマンスの問題なく、フラッシュセール中のリクエストを効率的に処理できます。
シナリオ 2:Community Edition クラスタインスタンスには、データベーストランザクションと Lua スクリプトに制限があります。
DRAMベースインスタンスは高パフォーマンスを提供し、Community Edition クラスタインスタンスのコマンドの使用制限をなくします。
シナリオ 3:1 つのマスターノードと複数のレプリカノードで構成されるセルフマネージド Redis クラスターを作成しました。ワークロードが増加するにつれて、レプリカノードの数と O&M コストが増加します。
読み書き分離アーキテクチャを使用する DRAMベースインスタンスは、1 つのデータノードと最大 5 つの読み取り専用レプリカを提供して、数百万の QPS を処理するのに役立ちます。
シナリオ 4:数千万の QPS を処理するためにセルフマネージド Redis クラスターを作成しました。ワークロードが増加するにつれて、データシャードの数と O&M コストが増加します。
DRAMベースクラスタインスタンスは、クラスターを 3 分の 2 に縮小し、O&M コストを大幅に削減できます。
スレッディングモデルの比較
スレッディングモデル | 説明 |
図 1. Redis のシングルスレッディングモデル | Community Edition インスタンスとネイティブ Redis データベースは、シングルスレッディングモデルを使用します。リクエスト処理中、Community Edition インスタンスとネイティブ Redis データベースは、次の手順を実行する必要があります。リクエストの読み取り、リクエストの解析、データの処理、応答の送信。このシナリオでは、ネットワーク I/O 操作とリクエストの解析が、使用可能なリソースのほとんどを消費します。 |
図 2. Tair のマルチスレッドモデル | パフォーマンスを向上させるために、各 Tair DRAMベースインスタンスは複数のスレッドで実行され、これらの手順のタスクを並列処理します。
各 DRAMベースインスタンスは、I/O スレッドでリクエストを読み取って解析し、解析されたリクエストをコマンドとしてキューに入れ、これらのコマンドをワーカースレッドに送信します。次に、ワーカースレッドはコマンドを実行してリクエストを処理し、別のキューを使用して応答を I/O スレッドに送信します。 Tair DRAMベースインスタンスは、最大 4 つの同時 I/O スレッドをサポートします。ロックされていないキューとパイプラインを使用して、I/O スレッドとワーカースレッド間でデータを送信し、マルチスレッドパフォーマンスを向上させます。 説明
|
Redis 6.0 のマルチスレッドモデルは、Redis 6.0 より前のメジャーバージョンのシングルスレッディングモデルの最大 2 倍のパフォーマンスを提供するために、大量の CPU リソースを消費します。DRAMベースインスタンスの Real Multi-I/O モデルは、完全に高速化された I/O スレッドを提供して、多数の同時接続を維持し、スループットを線形的に向上させます。
パフォーマンス比較
Community Edition インスタンスは、ネイティブ Redis データベースと同じシングルスレッディングモデルを使用します。シングルスレッディングモデルでは、各データノードは 80,000 ~ 100,000 QPS をサポートします。Tair DRAMベースインスタンスはマルチスレッドモデルを使用しており、I/O スレッド、ワーカースレッド、および補助スレッドがリクエストを並列処理できます。DRAMベースインスタンスの各データノードは、Community Edition インスタンスの各データノードの約 3 倍のパフォーマンスを提供します。次の表は、Community Edition インスタンスとさまざまなアーキテクチャの Tair DRAMベースインスタンス、およびそれらのユースケースの比較を示しています。
アーキテクチャ | Community Edition インスタンス | Tair DRAMベースインスタンス |
標準アーキテクチャ | 単一ノードで必要な QPS が 100,000 を超える場合、これらのインスタンスは適していません。 | 単一ノードで必要な QPS が 100,000 を超える場合、これらのインスタンスは適しています。 |
クラスターアーキテクチャ | クラスタインスタンスは複数のデータノードで構成されます。各データノードは、標準インスタンスと同様のパフォーマンスを提供します。データノードがホットデータを格納し、ホットデータに対する大量の同時リクエストを受信すると、データノードに格納されている他のデータの読み取りおよび書き込み操作に影響が及ぶ可能性があります。その結果、データノードのパフォーマンスが低下します。 | これらのインスタンスは、低いメンテナンスコストでホットデータの読み取りと書き込みに高パフォーマンスを提供します。 |
読み書き分離アーキテクチャ | これらのインスタンスは高い読み取りパフォーマンスを提供し、読み取り操作の数が書き込み操作の数よりも多いシナリオに適しています。ただし、これらのインスタンスは、多数の同時書き込み操作をサポートできません。 | これらのインスタンスは高い読み取りパフォーマンスを提供し、多数の同時書き込み操作をサポートできます。これらのインスタンスは、多数の書き込み操作を処理する必要があるが、読み取り操作の数が書き込み操作の数よりも多いシナリオに適しています。 |
複数の Redis モジュールの統合
オープンソース Redis と同様に、Community Edition は、String、List、Hash、Set、Sorted Set、Stream など、さまざまなデータ構造をサポートしています。これらのデータ構造は、一般的な開発ワークロードをサポートするには十分ですが、高度なワークロードには不十分です。高度なワークロードを管理するには、アプリケーションデータを変更するか、Lua スクリプトを実行する必要があります。
DRAMベースインスタンスは、複数の社内 Tair モジュールを統合して、Tair の適用範囲を拡大します。これらのモジュールには、exString (Redis 文字列機能を強化するコマンドを含む)、exHash、exZset、GIS、Bloom、Doc、TS、Cpc、Roaring、Search、Vector が含まれます。これらのモジュールは、複雑なシナリオでのビジネス開発を簡素化し、ビジネスイノベーションに集中できるようにします。
Redis 7.0 または 6.0 と互換性のある DRAMベースインスタンス は、上記のすべてのデータ構造をサポートしています。
Redis 5.0 と互換性のある DRAMベースインスタンス は、TairVector 以外の上記のすべてのデータ構造をサポートしています。
エンタープライズグレードの機能
エンタープライズグレードの機能 | 説明 |
Tair インスタンスのデータフラッシュバック機能を有効にすると、Tair は追記専用ファイル (AOF) バックアップデータを最大 7 日間保持します。保持期間中、秒単位で正確なポイントインタイムを指定してインスタンスを作成し、指定したポイントインタイムのバックアップデータを新しいインスタンスに復元できます。 | |
プロキシクエリキャッシュ機能を有効にすると、構成されたプロキシノードはホットキーのリクエストとレスポンスをキャッシュします。特定の有効期間内にクライアントから同じリクエストが受信された場合、Tair はキャッシュからリクエストへのレスポンスを取得し、クライアントにレスポンスを返します。このプロセス中、Tair はバックエンドデータシャードと対話する必要はありません。詳細については、「プロキシクエリキャッシュを使用してホットキーによって発生した問題に対処する」をご参照ください。 | |
Tair 用 Redis グローバル分散キャッシュは、Community Edition に基づいて開発されたアクティブ地理的冗長データベースシステムです。Redis グローバル分散キャッシュは、異なるリージョンにある複数のサイトが同時にサービスを提供するビジネスシナリオをサポートしています。企業がアリババのアクティブ地理的冗長アーキテクチャを複製するのに役立ちます。 | |
DTS を使用した双方向データ同期 | Data Transmission Service (DTS) は、Tair インスタンス間の双方向データ同期をサポートしています。この同期ソリューションは、アクティブ地理的冗長性や地理的ディザスタリカバリなどのシナリオに適しています。詳細については、「Tair インスタンス間の双方向データ同期を構成する」をご参照ください。 |
よくある質問
Q:クライアントが新しいモジュールによって提供されるコマンドをサポートしていない場合はどうすればよいですか?
クライアントで新しいデータモジュールのコマンドを使用する前に、アプリケーションコードでコマンドを定義できます。これらのコマンドを組み込みでサポートするクライアントを使用することもできます。詳細については、「クライアント」をご参照ください。