ビジネスが複数のリージョンにまたがる場合、ApsaraMQ for RocketMQ インスタンス間でメッセージとコンシューマーの進捗を同期させるには、カスタムレプリケーションパイプラインの構築と保守が必要です。グローバルメッセージレプリケーションは、この負担を解消し、秒レベルのレイテンシーで組み込みのクロスリージョンメッセージレプリケーションを提供します。これにより、ジオディザスタリカバリ、アクティブ地理的冗長性、集中型データ集約をサポートします。グローバルメッセージレプリケーションは、ApsaraMQ for RocketMQ とオープンソースの Apache RocketMQ クラスター (バージョン 4.4.0 以降) の両方に対応しています。
レプリケーション対象
| データタイプ | サポート |
|---|---|
| 通常メッセージ | はい |
| 順序メッセージ | はい |
| スケジュールメッセージまたは遅延メッセージ | はい |
| トランザクションメッセージ | はい |
| コンシューマーの進捗 (オフセット) | はい |
グローバルメッセージレプリケーションは、一方向同期と双方向同期の両方をサポートしています。双方向同期では、デフォルトで循環レプリケーションを防止します。
ソースインスタンスでエラーが発生した場合、クイック同期機能により、宛先グループからソースインスタンス へコンシューマーの進捗を同期し、重複メッセージの消費を削減します。
仕組み
グローバルメッセージレプリケーションは、コネクターを介して非同期でメッセージをレプリケートします。これらのコネクターは数秒でスケールし、ルールベースのタグをメッセージに適用し、レジューム可能なアップロードとダウンロードをサポートします。
インスタンス間のクロスリージョンネットワーク接続は Cloud Enterprise Network (CEN) によって処理され、秒レベルのレイテンシーでメッセージ同期を実現します。
同期中、グローバルメッセージレプリケーションは、ユーザー属性で指定されたタグキーと値に基づいて、各メッセージにタグを追加します。コンシューマーアプリケーションは、SQL-92 フィルタリングメソッドを使用してこれらのタグをフィルタリングし、すべてのデータを受信するか、ローカルで生成されたデータのみを受信するかを制御します。
グローバルメッセージレプリケーションは、対象となる ApsaraMQ for RocketMQ インスタンスの読み取りおよび書き込みリソースを消費します。機能を有効にする前に、インスタンスのコンピューティング仕様を評価してください。
ユースケース
グローバルメッセージレプリケーションに関連するすべてのクラスターは、完全な読み取りおよび書き込み機能を備えた独立したインスタンスです。メッセージはクラスター間で非同期にレプリケートされます。
データ集約 (一方向)
複数のリージョンまたはインスタンスからのメッセージを中央リージョンに集約し、統一的に処理します。各ビジネスユニットは最寄りのサーバーでデータを処理し、クロスネットワークレイテンシーを回避します。一方向同期は、分散リージョンおよびインスタンス (オープンソースの Apache RocketMQ および ApsaraMQ for RocketMQ クラスターを含む) から単一の中央拠点へデータをレプリケートします。
代表的な業界:銀行、証券、保険
アーキテクチャパターン:複数ユニット、単一センター
ジオディザスタリカバリ (一方向)
セカンダリリージョンにスタンバイインスタンスを維持し、一方向レプリケーションによって同期を保ちます。プライマリデータセンターまたはリージョンで障害が発生した場合、スタンバイにトラフィックを切り替えて、サービスを迅速に復旧します。
代表的な業界:すべて
アーキテクチャパターン:2 リージョン、2 データセンター
通常運用時は、セカンダリリージョンでアプリケーションを実行しないため、リソース消費とコストが削減されます。フェールオーバー時には、セカンダリリージョンでアプリケーションを起動し、コンシューマーオフセットのリセット機能を使用して、宛先インスタンス上の履歴メッセージを最小限消費します。
レプリケーションは非同期であるため、障害発生時に少量のデータがスタンバイインスタンスに到達していない可能性があります。フェールオーバー後の重複を処理するために、ビジネスロジックにメッセージのべき等性を実装してください。
アクティブ地理的冗長性 (双方向)
複数のリージョンに同時にアプリケーションをデプロイし、双方向同期によってすべてのアクティブインスタンス間でメッセージを同期させます。両方のリージョンが常に本番トラフィックを処理し、1 つのリージョンが使用できなくなった場合でも事業継続性を確保します。
代表的な業界:金融、エネルギー、およびサービス継続性が重要なその他の業界
アーキテクチャパターン:2 リージョン、2 データセンター
グローバルメッセージレプリケーションは、同期されたメッセージに自動的にタグを付けます。プロデューサーアプリケーションはコード変更を必要としません。コンシューマーアプリケーションは、SQL-92 フィルタリングメソッドを使用して、これらのタグに基づいてすべてのデータまたはローカルで生成されたデータのみを選択します。
リージョンで障害が発生した場合、プロデューサーアプリケーションはすべてのトラフィックを正常なインスタンスにルーティングします。コンシューマーアプリケーションのフィルタリング条件を調整し、コンシューマーオフセットのリセット機能を使用して、他のリージョンからのメッセージを最小限の重複で消費してください。重複メッセージがダウンストリーム処理に影響を与えないように、ビジネスロジックをべき等に設計してください。
メッセージタグ付けの詳細
アプリケーションが接続するインスタンスは、構成されたエンドポイントによって決定されます。同期中、グローバルメッセージレプリケーションは、ユーザー属性のタグキーと値に基づいて、レプリケートされた各メッセージにタグを追加します。コンシューマーアプリケーションは、これらのタグを使用して、すべてのデータを受信するか、ローカルで生成されたデータのみを受信するかを制御します。
タグ付けの動作とコンシューマー構成の詳細については、「使用上の注意」をご参照ください。
利点
ローコードセットアップ:カスタム同期パイプラインを構築することなく、インスタンス間でメッセージをレプリケートします。
柔軟な構成:一方向または双方向同期を設定し、タグベースのフィルタリングを使用して選択的なメッセージ消費を実現します。
秒レベルのクロスリージョンレイテンシー:EventBridge 上に構築されたグローバルメッセージレプリケーションは、リージョン間で安定した低レイテンシーのメッセージ同期を実現します。
課金
グローバルメッセージレプリケーションには、2 つのサービスからコストが発生します。
EventBridge:グローバルメッセージレプリケーションは、メッセージ同期に EventBridge を使用します。料金の詳細については、「EventBridge の課金」をご参照ください。
ApsaraMQ for RocketMQ:レプリケーションは、ソースインスタンスの読み取りリソースと宛先インスタンスの書き込みリソースを消費します。料金の詳細については、「ApsaraMQ for RocketMQ の課金」をご参照ください。
対応エディション、バージョン、リージョン
エディションとバージョン
| エディション / バージョン | 一方向同期 | 双方向同期 |
|---|---|---|
| ApsaraMQ for RocketMQ 5.0 | はい | はい |
| ApsaraMQ for RocketMQ 4.0 (Standard Edition を除くすべてのエディション) | はい | はい |
| ApsaraMQ for RocketMQ 4.0 (Standard Edition) | はい | いいえ |
| ApsaraMQ for RocketMQ Enterprise Platinum Edition と Apache RocketMQ クラスター (バージョン 4.4.0 以降) | はい | はい |
グローバルメッセージレプリケーションは、1 つの ApsaraMQ for RocketMQ インスタンスから複数の宛先インスタンスへのデータ同期をサポートしています。