サービスアクセスを高速化し、同時読み取りパフォーマンスを向上させるため、多くのユーザーはサービスアーキテクチャにキャッシュレイヤーを作成します。ビジネスの読み取りリクエストはキャッシュレイヤーにルーティングされ、メモリにキャッシュされたデータを読み取ることでビジネスの読み取りパフォーマンスは強化されます。データの整合性を確保するため、ビジネスの更新データを永続ストレージ RDS に保存できます。ビジネスデータが更新された場合にキャッシュデータが同期、更新されるように、キャッシュ更新ポリシーを実装する必要があります。
記事「Did you know cache invalidation can be solved in this way?」で記述されているように、DTS のデータサブスクリプション機能により、高信頼性かつ低レイテンシのデータ更新ポリシーを実現できます。
このトピックでは、RDS を永続ストレージとして使用し、MongoDB または Redis をキャッシュとして使用している場合に、DTS を使用してキャッシュを更新する方法について説明します。
キャッシュの更新手順
DTS が提供する RDS MySQL 増分サブスクリプション機能を使用して、永続的な RDS データベースから MongoDB/Redis キャッシュに更新データを同期するには、次の手順に従います。
- DTS コンソールで RDS インスタンスのサブスクリプションチャネルを作成します。詳細は、「サブスクリプションチャネルの作成」をご参照ください。
- DTS が提供する SDK をカプセル化し、サブスクリプションチャネルでリッスンしてから、RDS の増分をリアルタイムで取得します。ビジネス要件に基づいて増分データを MongoDB/Redis のデータ更新文にカプセル化した後、RDS から MongoDB/Redis に増分データをリアルタイム同期するために、増分データを MongoDB/Redis キャッシュに同期します。この結果、高信頼性かつ低レイテンシのキャッシュ更新を実現できます。
この機能を簡単に使用できるように、DTS は DTS SDK をカプセル化して、増分データを MongoDB/Redis に同期するデモを提供します。次に、これらのサンプルデモの実行手順を示します。
MongoDB キャッシュ更新デモ
Access Key の作成
キャッシュ更新デモを実行する際、サブスクリプションチャネルが属する Alibaba Cloud アカウントの Access Key/Access Secret を設定する必要があります。したがって、デモを実行する前に、まず Access Key を作成します。Alibaba Cloud アカウントが既に Access Key を作成済みの場合、Access Key を再度作成する必要はありません。そうでない場合、次の手順に従います。
- Alibaba Cloud コンソールにログインし、右上の Alibaba Cloudアカウントをクリックして、アカウント管理センターにアクセスします。
- [Access Key 管理] をクリックして、[Access Key 管理] ページにアクセスします。
- コンソールの右上にある [Access Key の作成] をクリックして、Access Key/Access Secret を作成します。
Java SDK のインストール
DTS で提供され、Java SDK でサポートされている開発環境は、J2SE Development Kit (JDK) 1.5 以降です。
次に、Eclipse プロジェクトを例として、SDK のインストール手順を説明します。
- [SDK ダウンロード] ページにログインして、最新のデータサブスクリプション SDK パッケージ dts-subscribe-3.0.jar をダウンロードします。
- Eclipse にアクセスし、Maven プロジェクトを作成します。[プロジェクト] を右クリックし、[プロパティ] > [Javaビルドパス] > [ライブラリ] > [外部 JAR の追加] の順にクリックし、dts-subscribe-3.0.jar がプロジェクトに追加されるように、dts-subscribe-3.0.jar の保存されているパスを選択します。
- dts-subscribe-3.0.jar を選択し、[OK] をクリックします。上記の手順の後、プロジェクトで DTS Java SDK を使用できます。
サンプルデモの実行
次に、Eclipse プロジェクトを例として、MongoDB データ更新デモの実行方法を説明します。
MongoDB データ更新デモをダウンロードします。
新しく作成したプロジェクトに新しいクラス DTSMySQL2Mongo を作成します。
生成された Java ファイル DTSMySQL2Mongo を開き、その中のコードテンプレートを削除してから、サンプルコードを DTSMySQL2Mongo ファイルに貼り付けます。
Maven を設定します。
<dependency>
<groupId>com.vividsolutions</groupId>
<artifactId>jts</artifactId>
<version>1.13</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.2.0</version>
</dependency>
pom.xml ファイルを編集して Maven の設定を行った後、プロジェクトを右クリックし、[Maven] > [プロジェクトを更新] を選択して Maven 依存関係を更新します。
デモの AccessKeyID、AccessKeySecret、サブスクリプションチャネル ID、mongoUrl、mongoUserName、mongoUserPassword を変更します。具体的には、次のとおりです。
- AccessKeyID は、上記で作成した AccessKey です。
- AccessSecret は、AccessKey に対応する AccessSecret です。
- Subscription_Instance_ID は、サブスクリプションチャネル ID です。
- mongoUrl は、同期させる MongoDB の接続アドレスです。接続文字列の形式は次のとおりです。
- - MongoDB address: MongoDB listening port/default connecting database。例:120.26.122.72:27037/admin1
- mongoUserName は、MongoDB にアクセスするためのアカウントです。
- mongoUserPassword は、MongoDB にアクセスするためのアカウントのパスワードです。
Eclipse でデモファイルを右クリックし、[操作モード] > [JAVA アプリケーション] を選択すると、サンプルデモを実行できます。
Redis キャッシュ更新のデモ
Access Key の作成
キャッシュ更新デモを実行する際、サブスクリプションチャネルが属する Alibaba Cloud アカウントの Access Key/Access Secret を設定する必要があります。したがって、デモを実行する前に、まず Access Key を作成します。Alibaba Cloud アカウントが既に Access Key を作成済みの場合、Access Key を再度作成する必要はありません。そうでない場合、次の手順に従います。
- Alibaba Cloud コンソールにログインし、右上の Alibaba Cloudアカウントをクリックして、アカウント管理センターにアクセスします。
- [Access Key 管理] をクリックして、[Access Key 管理] ページにアクセスします。
- コンソールの右上にある [Access Key の作成] をクリックして、Access Key/Access Secret を作成します。
Java SDK のインストール
DTS で提供され、Java SDK でサポートされている開発環境は、J2SE Development Kit (JDK) 1.5 以降です。
次に、Eclipse プロジェクトを例として、SDK のインストール手順を説明します。
- [SDK ダウンロード] ページにログインして、最新のデータサブスクリプション SDK パッケージ dts-subscribe-3.0.jar をダウンロードします。
- Eclipse にアクセスし、Maven プロジェクトを作成します。[プロジェクト] を右クリックし、[プロパティ] > [Javaビルドパス] > [ライブラリ] > [外部 JAR の追加] の順にクリックし、dts-subscribe-3.0.jar がプロジェクトに追加されるように、dts-subscribe-3.0.jar の保存されているパスを選択します。
- dts-subscribe-3.0.jar を選択し、[OK] をクリックします。上記の手順の後、プロジェクトで DTS Java SDK を使用できます。
サンプルデモの実行
次に、Eclipse プロジェクトを例として、MongoDB データ更新デモの実行方法を説明します。
Redis データ更新デモをダウンロードします。
新しく作成したプロジェクトに新しいクラス DTSMySQL2Redis を作成します。
生成された Java ファイル DTSMySQL2Redis を開き、その中のコードテンプレートを削除してから、サンプルコードを DTSMySQL2Redis ファイルに貼り付けます。
Maven を設定します。
<dependency>
<groupId>com.vividsolutions</groupId>
<artifactId>jts</artifactId>
<version>1.13</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
pom.xml ファイルを編集して Maven の設定を行った後、プロジェクトを右クリックし、[Maven] > [プロジェクトを更新] を選択して Maven 依存関係を更新します。
デモの AccessKeyID、AccessKeySecret、サブスクリプションチャネル ID、redisUrl、redisPort、redisPassword を変更します。具体的には、次のとおりです。
- AccessKeyID は、上記で作成した AccessKey です。
- AccessSecret は、AccessKey に対応する AccessSecret です。
- Subscription_Instance_ID は、サブスクリプションチャネル ID です。
- redisUrl は、同期する Redis の接続アドレスです。たとえば、120.26.122.72 はデモアドレスです。
- redisPort は Redis のリスニングポートです。
- redisPassword は、Redis にアクセスするためのアカウントです。
Eclipse でデモファイルを右クリックし、[操作モード] > [JAVA アプリケーション] を選択すると、サンプルデモを実行できます。
DTS データサブスクリプションと MongoDB/Redis データ更新 writer を使用した、高信頼性かつ低レイテンシのキャッシュ更新ポリシーが完成しました。