ScalarDB Cluster をはじめよう
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このチュートリアルでは、Java API を通じて ScalarDB Cluster を使用するサンプルアプリケーションを作成する方法について説明します。
概要
このチュートリアルでは、ScalarDB を使用して商品を注文し、信用枠で支払いを行うことができるサンプルの電子商取引アプリケーションを作成するプロセスについて説明します。
サンプルアプリケーションの焦点は ScalarDB の使用方法を示すことにあるため、アプリケーション固有のエラー処理、認証処理、および同様の機能はサンプルアプリケーションには含まれていません。ScalarDB での例外処理の詳細については、例外の処理を参照してください。
次の図は、サンプルアプリケーションのシステムアーキテクチャを示しています。
このサンプルアプリケーションで実行できること
サンプルアプリケーションは、次の種類のトランザクションをサポートしています:
- 顧客情報を取得します。
- 信用枠を使用して注文を行います。
- 注文のコストが顧客の信用限度額を下回っているかどうかを確認します。
- チェックが成功した場合は、注文履歴を記録し、顧客が支払った金額を更新します。
- 注文 ID で注文情報を取得します。
- 顧客 ID で注文情報を取得します。
- 支払い を行います。
- 顧客が支払った金額を減らします。
このサンプルアプリケーションの前提条件
- Eclipse Temurin の OpenJDK LTS バージョン (8、11、17、または 21)
- Kubernetes クラスターで実行されている ScalarDB Cluster
- ScalarDB Cluster をローカルにデプロイする方法 の手順に従ってデプロイした Kubernetes クラスターで ScalarDB Cluster が実行されていることを前提としています。
このサンプルアプリケーションは、Eclipse Temurin の OpenJDK でテストされています。ただし、ScalarDB 自体は、さまざまなベンダーの JDK ディストリビューションでテストされています。互換性のある JDK ディストリビューションを含む ScalarDB の要件の詳細については、要件を参照してください。
ScalarDB Cluster のセットアップ
次のセクションでは、サンプルの電子商取引アプリケーションをセットアップする方法について説明します。
ScalarDB サンプルリポジトリのクローンを作成する
ターミナル を開き、次のコマンドを実行して ScalarDB サンプルリポジトリのクローンを作成します。
git clone https://github.com/scalar-labs/scalardb-samples
次に 、次のコマンドを実行して、サンプルアプリケーションが含まれているディレクトリに移動します。
cd scalardb-samples/scalardb-sample
build.gradle を変更する
ScalarDB Cluster を使用するには、任意のテキストエディターで build.gradle を開きます。次に、dependencies セクションから com.scalar-labs:scalardb の既存の依存関係を削除し、dependencies セクションに次の依存関係を追加します。
dependencies {
...
implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.3'
}
database.properties を変更する
ScalarDB Cluster に接続するには、database.properties も変更する必要があります。ただし、その前に、Envoy サービスリソース (scalardb-cluster-envoy) の EXTERNAL-IP アドレスを取得する必要があります。サービスリソースを取得するには、次のコマンドを実行します。
kubectl get svc scalardb-cluster-envoy
CLUSTER-IP、PORT(S)、AGE の値がそれぞれ異なる、以下のような出力が表示されま す。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
scalardb-cluster-envoy LoadBalancer 10.105.121.51 localhost 60053:30641/TCP 16h
この場合、EXTERNAL-IP アドレスは localhost です。
database.properties では、scalar.db.transaction_manager プロパティに cluster を指定し、scalar.db.contact_points が Envoy サービスリソースに接続するためのクライアントモードとして indirect を使用する必要があります。
次のコマンドを実行して database.properties を開きます。
vim database.properties
次に、database.properties を次のように変更します。
scalar.db.transaction_manager=cluster
scalar.db.contact_points=indirect:localhost
クライアントモードの詳細については、Java API を使用した ScalarDB Cluster の開発者ガイド.