データ伝送サービス (DTS) の変更追跡機能は、MongoDB または Redis と併用して、高信頼性かつ低レイテンシーのキャッシュ更新ポリシーを実装できます。このトピックでは、ApsaraDB RDS for MySQL をソース、Tair (Redis 互換) を宛先とする例を用いて、キャッシュ更新ポリシーについて説明します。
前提条件
変更追跡タスクを設定し、コンシューマーグループを追加済みであること。詳細については、「ApsaraDB RDS for MySQL の変更追跡タスクの作成」および「コンシューマーグループの追加」をご参照ください。
Tair (Redis 互換) インスタンスが作成され、パブリックアクセスが有効化されます。 詳細については、「手順 1: インスタンスの作成」および「パブリックエンドポイントの申請」をご参照ください。
説明Tair インスタンスのホワイトリストに、クライアントの IP アドレスまたは CIDR ブロックを追加する必要があります。詳細については、「ホワイトリストの設定」をご参照ください。
背景情報
アプリケーションアーキテクチャでは、アクセス速度を向上させ、高い読み取り同時実行性に対応するために、キャッシュ層を追加することがよくあります。読み取りリクエストはキャッシュにルーティングされ、インメモリでの読み取りによってパフォーマンスが向上します。一方、データの更新は、データの整合性を確保するために ApsaraDB RDS for MySQL などの永続的なデータベースに保存されます。このため、キャッシュとデータベースの同期を維持するためのキャッシュ更新ポリシーが必要です。
操作手順
このセクションでは、IntelliJ IDEA で SDK サンプルコードを実行して、追跡データを消費する方法について説明します。
変更追跡のSDK デモパッケージをダウンロードし、パッケージを解凍します。
IntelliJ IDEA を使用して、解凍した SDK デモパッケージを Maven プロジェクトとして開きます。
/subscribe-demo/src/main/java/com/alibaba/dts/demo/ディレクトリで、DTSMySQL2RedisDemo.javaファイルをダブルクリックします。main関数内のパラメーターを変更します。コード内で緑色にハイライトされている値 (例:
String brokerUrl = "your broker url";の中のyour broker url) を変更する必要があります。変更追跡パラメーター
パラメーター
説明
取得方法
brokerUrl変更追跡タスクのネットワークアドレスとポート番号。
説明SDK クライアントがデプロイされている ECS インスタンスが、変更追跡タスクと同じクラシックネットワークまたは Virtual Private Cloud (VPC) 内にある場合は、内部 IP アドレスを使用してデータを消費し、ネットワーク遅延を最小限に抑えます。
-
ネットワークが不安定になる可能性があるため、パブリックエンドポイントの使用は推奨されません。
DTS コンソールで、対象の変更追跡インスタンスの ID をクリックします。[基本情報] ページで、[ネットワーク] セクションからネットワークアドレスとポート番号を取得できます。
topic変更追跡タスクのサブスクリプショントピック。
DTS コンソールで、対象の変更追跡インスタンスの ID をクリックします。[基本情報] ページの [基本情報] セクションで、[サブスクリプショントピック] を取得できます。
sidコンシューマーグループ ID。
DTS コンソールで、対象の変更追跡インスタンスの ID をクリックし、[データ消費] をクリックします。コンシューマーグループの [コンシューマーグループ ID] と [アカウント] を取得できます。
説明コンシューマーグループアカウントのパスワードは、コンシューマーグループを作成する際に指定します。
userNameコンシューマーグループのアカウント。
警告このトピックで提供されているクライアントを使用しない場合は、ユーザー名を
<コンシューマーグループアカウント>-<コンシューマーグループ ID>のフォーマットで設定してください。例:dtstest-dtsae******bpv。そうしないと、接続に失敗します。passwordアカウントのパスワード。
initCheckpoint消費チェックポイント。SDK クライアントがデータ消費を開始するタイムスタンプです。値は UNIX タイムスタンプである必要があります。例:1620962769。
説明消費チェックポイントは、次の目的で使用できます。
アプリケーションが中断された場合、最後の消費チェックポイントを使用してデータ消費を再開し、データ損失を防ぐことができます。
SDK クライアントの起動時に、消費チェックポイントを指定して、特定の時点からデータを消費できます。
消費チェックポイントは、変更追跡インスタンスのデータ範囲内 (図を参照) である必要があり、UNIX タイムスタンプに変換する必要があります。
説明検索エンジンを使用して UNIX タイムスタンプコンバーターを見つけることができます。
ConsumerContext.ConsumerSubscribeMode subscribeModeSDK クライアントの使用モード。有効な値:
ConsumerContext.ConsumerSubscribeMode.ASSIGN:ASSIGN モード。このモードでは、コンシューマーグループ内の 1 つの SDK クライアントのみが追跡対象データを消費できます。ConsumerContext.ConsumerSubscribeMode.SUBSCRIBE:SUBSCRIBE モード。このモードでは、同じコンシューマーグループ内で複数の SDK クライアントを起動して、ディザスタリカバリを実装できます。
なし
デスティネーション Tair のパラメーター
パラメーター
説明
取得方法
redisUrlTair インスタンスのエンドポイント。
Tair インスタンスの [接続情報] ページに移動します。 接続情報 セクションで、パブリックアクセス の エンドポイント を見つけます。
redisPortTair インスタンスのポート。
Tair インスタンスの [接続情報] ページに移動します。接続情報セクションで、パブリックアクセスのポートを探します。
redisPasswordTair インスタンスのユーザー名とパスワード。
重要値は <user>:<password> 形式の文字列で指定します。たとえば、ユーザー名が
adminで、パスワードがRp829dlwaの場合、このパラメーターをadmin:Rp829dlwaに設定します。これは Tair インスタンスの作成時に指定したものです。
説明パスワードを忘れた場合は、リセットできます。詳細については、「パスワードの変更またはリセット」をご参照ください。
IntelliJ IDEA のトップメニューバーで、 をクリックします。
結果
ソースデータベースにログインし、追跡対象のソーステーブルにいくつかのレコードを挿入します。
プログラムは増分データ変更を消費し、対応するデータをデスティネーションデータベースに書き込みます。
デスティネーションデータベースにログインし、データをクエリします。
クエリを実行すると、データが正常に書き込まれたことを確認できます。