マイクロサービストランザクションを使用した Spring Data JDBC for ScalarDB の サンプルアプリケーション
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このチュートリアルでは、Spring Data JDBC for ScalarDB を使用してマイクロサービストランザクション用のサンプル Spring Boot アプリケーションを作成する方法について説明します。
これらの機能の詳細については、2フェーズコミットトランザクション および Spring Data JDBC for ScalarDB ガイドを参照してください。
このサンプルアプリケーションの前提条件
- 以下のいずれかの Java Development Kit (JDK):
- Oracle JDK: 8、11、17、または 21 (LTS バージョン)
- OpenJDK ディストリビューション (Eclipse Temurin、Amazon Corretto、または Microsoft Build of OpenJDK): 8、11、17、または 21 (LTS バージョン)
- Docker 20.10以降 (Docker Compose V2以降)
ScalarDB Cluster を使用するには、ライセンスキー (試用ライセンスまたは商用ライセンス) が必要です。ライセンスキーをお持ちでない場合は、お問い合わせください。
サンプルアプリケーション
概要
このチュートリアルでは、ScalarDB の2フェーズコミットインターフェースを使用したトランザクションを通じて、アイテムを注文し、信用枠で支払うことができるサンプル電子商取引アプリケーションを作成するプロセスについて説明します。
このサンプルアプリケーションには、Database-per-service pattern に基づく Customer Service と Order Service という2つのマイクロサービスがあります。
Customer Service は、クレジット限度額やクレジット合計などのクレジットカード情報を含む顧客情報を管理します。Order Service は、注文の確定や注文履歴の取得などの注文操作を担当します。
各サービスには gRPC エンドポイントがあります。クライアントはエンドポイントを呼び出し、サービスも互いにエンドポイントを呼び出します。Customer Service と Order Service は、それぞれ ScalarDB を介して MySQL と Cassandra を使用します。

各サービスは、専用の ScalarDB Cluster を介してデータベースにアクセスします。
両方の ScalarDB Cluster は、Consensus Commit プロトコルに使用される小さな Coordinator データベースにアクセスします。このサンプルアプリケーションでは、セットアップと説明を簡単にするために、Coordinator データベースは Order Service の同じ Cassandra インスタンスに共存していますが、もちろん、Coordinator データベースは別のデータベースとして管理できます。
また、サンプルアプリケーションでは ScalarDB の使用方法の説明に重点を置いているため、アプリケーション固有のエラー処理、認証処理などは省略されています。
ScalarDB での例外処理の詳細については、例外の処理方法を参照してください。
サービスエンドポイント
サービスで定義されているエンドポイントは次のとおりです。
-
Customer Service
getCustomerInfopaymentpreparevalidatecommitrollbackrepayment
-
Order Service
placeOrdergetOrdergetOrders
このサンプルアプリケーションで実行できること
サンプルアプリケーションは、次の種類のトランザクションをサポートしています。
- Customer Service の
getCustomerInfoエンドポイントを介して顧客情報を取得します。 - Order Service の
placeOrderエンドポイントと、Customer Service のpayment、prepare、validate、commit、rollbackエンドポイントを介して、信用枠を使用して注文を行います。- 注文のコストが顧客の信用限度額を下回っているかどうかを確認します。
- チェックに合格し た場合、注文履歴を記録し、顧客が支払った金額を更新します。
- Order Service の
getOrderエンドポイントと、Customer Service のgetCustomerInfo、prepare、validate、commit、rollbackエンドポイントを介して、注文 ID で注文情報を取得します。 - Order Service の
getOrdersエンドポイントと、Customer Service のgetCustomerInfo、prepare、validate、commit、rollbackエンドポイントを介して、顧客 ID で注文情報を取得します。 - Customer Service の
repaymentエンドポイントを介して支払いを行います。- 顧客が支払った金額を減らします。
getCustomerInfo エンドポイントは、コーディネーターからトランザクション ID を受信するときに、参加者サービスエンドポイントとして機能します。