Tair (Redis OSS-compatible) の標準アーキテクチャは、クラスターモードを有効にせずに動作します。すべてのデータが単一のシャードに格納されるため、操作が簡単でコスト効率が高く、Redis プロトコル全体との互換性があります。クラスターアーキテクチャとは異なり、標準アーキテクチャではシャード数の調整がサポートされておらず、高可用性(マルチレプリカ)インスタンスタイプとを提供します。
アーキテクチャタイプ
デプロイモードには クラウドネイティブ と クラシック の 2 種類があります。
クラウドネイティブ標準アーキテクチャ
クラウドネイティブインスタンスは、マスターノード 1 台と最大 9 台のレプリカノードをサポートします。マスターノードはすべての書き込みおよび読み取りワークロードを処理し、レプリカノードはホットスタンバイ状態を維持します。
マルチ AZ 間でフェールオーバーがトリガーされた場合、システムはまず同一 AZ 内での切り替えを試み、ご利用のアプリケーションが AZ 間アクセスを回避できるようにします。
クラシック標準アーキテクチャ
クラシックインスタンスは、マスターノード 1 台とレプリカノード 1 台をサポートします。マルチ AZ デプロイメントの場合、レプリカノードはセカンダリゾーンに配置されます。
仕組み
標準アーキテクチャはマスター・レプリカモデルを採用しています。マスターノードが日常的なワークロードを処理し、レプリカノードはホットスタンバイ状態を維持します。
マスターノードが障害を起こした場合、独自の高可用性 (HA) システムが障害を検出し、フェールオーバーを実行します。
HA システムがマスターノードの障害(ディスク I/O 障害、CPU 障害など)を検出します。
レプリカノードが昇格し、新しいマスターノードになります。
フェールオーバーは全体で 30 秒以内に完了します。
標準アーキテクチャとクラスターアーキテクチャの比較
| 機能 | 標準アーキテクチャ | クラスターアーキテクチャ |
|---|---|---|
| データディストリビューション | 単一シャード | 複数シャード |
| シャード数の調整 | 非対応 | 対応 |
| 読み取り専用レプリカ | 最大 9 台(クラウドネイティブ) | シャードごと |
| 読み書き分離 | 対応 | 対応 |
| Redis プロトコル互換性 | 完全 | 部分互換(マルチキー コマンドに制限あり) |
| 推奨最大秒間クエリ数 (QPS) | 100,000 | 200,000+ |
| 典型的なユースケース | 安定したシングルインスタンスワークロード | 高スループットまたは大規模ワークロード |
特徴
信頼性
サービス信頼性:マスターノードとレプリカノードは別々の物理ホスト上で動作します。マスターノードが障害を起こした場合、独自の HA システムが自動的にフェールオーバーを実行します。
データ信頼性:データ永続化はデフォルトで有効になっており、すべてのデータがディスクに書き込まれます。バックアップおよびリストアもサポートされており、バックアップセットからインスタンスをクローンしたりロールバックしたりすることで、誤った操作からの復旧が可能です。ディザスタリカバリ機能を備えたゾーン(例:中国 (杭州) ゾーン H およびゾーン I)では、ゾーンディザスタリカバリがサポートされています。
Redis プロトコル互換性
標準アーキテクチャは Redis プロトコルと完全互換です。Alibaba Cloud Data Transmission Service (DTS) を使用して増分データ移行を行うことで、自主管理 Redis データベースから標準インスタンスへのワークロード移行をサービス中断なしで実現できます。
独自のレプリケーション機能強化
Alibaba Cloud のマスター・レプリカレプリケーションメカニズムは、ネイティブ Redis レプリケーションのいくつかの制限事項を解決しています。
| ネイティブ Redis の制限事項 | Tair による対応方法 |
|---|---|
| フル同期には fork が必要で、ミリ秒~秒単位の遅延が発生する | ノンブロッキングレプリケーション:fork 問題を解消し、同期による遅延を排除 |
| PSYNC 失敗時に Redis Database (RDB) フル同期がトリガーされ、ディスク I/O および CPU を大量消費する | 先行書込みログ (WAL) を使用してノード間でデータをレプリケート。レプリケーションの中断がパフォーマンスに与える影響を最小限に抑える |
| コピーオンライト (COW) を実行する子プロセスがマスターノードのメモリを消費し、メモリ不足によるクラッシュのリスクがある | COW によるメモリ圧力を排除 |
| GB 単位の RDB ファイル転送により、アウトバウンドトラフィックの急増やシーケンシャル I/O のピークが発生する | WAL ベースのレプリケーションにより、大容量ファイル転送を回避 |
標準アーキテクチャの適用タイミング
シングルインスタンスの秒間クエリ数 (QPS) が 100,000 未満の場合
ネイティブ Redis はシングルスレッドモデルを採用しています。標準アーキテクチャは、秒間クエリ数 (QPS) が 100,000 未満のほとんどのワークロードに適しています。QPS 要件が増加する場合は、読み書き分離を有効にするか、クラスターアーキテクチャに切り替えてください。
Redis プロトコルの完全互換性が必要な場合
標準アーキテクチャは Redis プロトコル全体をサポートしており、クラスターモードで制限されるマルチキーコマンドも使用できます。自主管理 Redis データベースまたは Redis Sentinel から、アプリケーションコードを変更せずに移行できます。
Redis を永続ストレージとして使用する場合
データ永続化、バックアップ、ポイントインタイムリストアが標準搭載されています。バックアップを使用してインスタンスをクローンしたり、誤ってデータを変更した後にロールバックしたりできます。
読み取り中心のワークロードで、ソートやコンピューティング集約型コマンドが少ない場合
読み書き分離を有効にして読み取りスループットをスケーリングできます。大規模かつ CPU 負荷の高いソートやコンピューティング集約型ワークロードの場合は、代わりにクラスターアーキテクチャをご利用ください。
よくある質問
Redis を Sentinel モードで実行しています。クラウドへの移行時にどのアーキテクチャを選択すればよいですか?
標準 HA アーキテクチャを選択し、インスタンスでSentinel 互換モードを有効にしてください。これにより、Redis Sentinel に接続するのと同じ方法で Tair に接続でき、アプリケーションコードを変更する必要はありません。
標準アーキテクチャのインスタンスでメモリが 8 GB あります。メモリをアップグレードせずにパフォーマンスを向上させる方法はありますか?
ボトルネックに応じて、以下の 2 つのオプションがあります。
接続数または帯域幅がボトルネックの場合:読み書き分離を有効にしてください。コード変更やエンドポイントの変更は不要で、いつでも無効化できます。インスタンスは自動的に読み取りおよび書き込みリクエストを適切なノードにルーティングします。
CPU 使用率が常に高い場合:クラスターインスタンスにアップグレードしてください。シャードを追加することで、CPU 負荷を複数ノードに分散できます。アップグレード前に、標準アーキテクチャとクラスターアーキテクチャのコマンド互換性を確認してください。詳細については、「クラスターインスタンスおよび読み書き分離インスタンスでサポートされるコマンドの使用制限」をご参照ください。
次の表は、8 GB の Redis Open-Source Edition インスタンスにおける各アーキテクチャのパフォーマンスを比較したものです。
| アーキテクチャ | メモリ (GB) | CPU コア数 | 帯域幅 (Mbit/s) | 最大接続数 | 秒間クエリ数 (QPS) の参考値 |
|---|---|---|---|---|---|
| 標準アーキテクチャ(マスターノードおよびレプリカノード) | 8 | 2 | 96 | 20,000 | 100,000 |
| 標準アーキテクチャ(読み書き分離有効、マスターノード 1 台、読み取りレプリカ 1 台) | 8 | 4 (2 × 2) | 192 (96 × 2) | 40,000 (20,000 × 2) | 200,000 |
| クラスターアーキテクチャ(2 シャード) | 8 (4 GB × 2 シャード) | 4 (2 × 2) | 192 (96 × 2) | 40,000 (20,000 × 2) | 200,000 |