すべてのプロダクト
Search
ドキュメントセンター

Microservices Engine:15分で始めるサービスガバナンス (Java)

最終更新日:Nov 09, 2025

このトピックでは、Java アプリケーション向けにマイクロサービスガバナンスのコア機能を使用する方法について説明します。

前提条件

説明

RAM ユーザーの場合、Alibaba Cloud アカウントの管理者に <a baseurl="t2314492_v4_2_0.xdita" data-node="4751410" data-root="45393" data-tag="xref" href="t2487291.xdita#" id="b5397d18a1u34">AliyunMSEFullAccess</a> 権限を一時的に付与してもらい、このチュートリアル完了後に削除してもらってください。本番環境では、必要に応じて権限を付与してください。サービス管理の権限付与の詳細については、「マイクロサービス管理の権限付与」をご参照ください。

デモをデプロイする

デモの概要

このデモでは、Nacos インスタンスをレジストリとして使用し、必要に応じて有効にできる Spring Cloud ゲートウェイと Zuul ゲートウェイが含まれています。デフォルトのアプリケーション呼び出しワークフローは A -> B -> C です。アプリケーション A と C にはカナリアリリースバージョンがあります。アプリケーションコードはコードリポジトリから入手できます。

アプリケーション名

サービスフレームワークバージョン

関連コンポーネント

デモ

Zuul

Spring Cloud Greenwich

zuul

pom.xml

SpringCloudGateway

spring-cloud-starter-gateway 4.1.2

spring-cloud-starter-gateway

pom.xml

A

Spring Cloud 2023.0.1

Dubbo 3.3.0

openfeign/httpclient/rocketmq/nacos/loadbalancer

pom.xml

B

Spring Cloud 2023.0.1

Dubbo 3.3.0

httpclient/mybatis/druid/nacos

pom.xml

C

Spring Cloud 2023.0.1

Dubbo 3.3.0

openfeign/httpclient/nacos

pom.xml

image.png

Helm パッケージをダウンロードする

デモ用の Helm パッケージをダウンロードします。Helm パッケージとイメージは定期的に更新されます。

image

デプロイ方法

ACK クラスタの CloudShell を使用して mse-simple-demo をデプロイする

  1. mse-simple-demo ファイルを準備します。

  2. ACK コンソールにログインします。 ターゲットクラスターを選択し、[クラスター情報] ページで [ワークベンチでクラスターを管理] をクリックします。

    image

  3. Helm パッケージをアップロードします。

    image

  4. unzip mse-simple-demo.zip コマンドを実行して、デモパッケージを解凍します。

  5. kubectl create namespace mse-demo コマンドを実行して、--namespace パラメーターに対応する名前空間を作成します。

Helm を使用して mse-simple-demo をデプロイする

次の Helm コマンドを実行して mse-simple-demo をデプロイします。

helm upgrade mse-simple-demo mse-simple-demo \
--set mse.namespace=mse-demo \
--set gateway.springcloud=true  \
--install \
--namespace mse-demo \
--values mse-simple-demo/values.yaml

次のパラメータを変更できます。

  • namespace: デモをインストールする Kubernetes 名前空間です。このパラメーターはオプションです。デフォルト値は `default` です。

  • registry: コンテナイメージアドレスのプレフィックスです。クラスターがデモイメージをプルできない場合は、イメージをアカウントのイメージリポジトリに同期し、このパラメーターを新しいアドレスで更新できます。

  • images.version: イメージのバージョンです。最新バージョンは 3.1.0 です。

  • mse.namespace: MSE マイクロサービスガバナンスに接続されている microservices namespace です。このパラメーターを使用して環境を区別できます。デフォルト値は mse-demo です。

  • nacos.host: Nacos レジストリのアドレスです。デモは自動的に Nacos サーバーを起動します。デモアプリケーションを別のアドレスの Nacos に登録する場合は、このパラメーターを設定します。

  • autoscaling: 自動スケーリングを有効にするかどうかを指定します。デフォルト値は false です。この機能を有効にする前に、kubernetes-cronhpa-controller コンポーネントがクラスターにインストールされていることを確認してください。

  • resources.enable: リソースリクエスト構成を設定するかどうかを指定します。デフォルト値は true です。

基本機能を確認する

エンドツーエンドカナリアリリース

MSE コンソールにログインします。左側のナビゲーションウィンドウで、[マイクロサービスガバナンス] > [エンドツーエンドカナリアリリース] を選択します。

レーングループを作成する

[エンドツーエンドカナリアリリース] ページで:

  1. [レーングループとレーンの作成] をクリックします。選択した microservices namespace にレーングループが既に存在する場合は、[+ レーングループの作成] をクリックします。

  2. [レーングループの作成] ページでパラメーターを設定し、[OK] をクリックします。

image

レーンを作成する

[エンドツーエンドカナリアリリース] ページの下部で:

  1. [最初の分割レーンの作成] をクリックします。選択した microservices namespace にレーンが既に作成されている場合は、[レーンの作成] をクリックします。

  2. [レーンの作成] パネルでレーン設定を構成し、[OK] をクリックします。

    image

    image

共通リクエストをベースバージョンにルーティングする

説明

Web ページのアドレスは、ゲートウェイ SLB のアドレスです。このアドレスを見つけるには、ACK コンソールでクラスターの詳細ページに移動します。[ワークロード] > [デプロイメント] を選択します。デプロイメントページで、`spring-cloud-gateway` デプロイメントをクリックします。表示される詳細ページで、[アクセス方法] タブをクリックします。[サービス] セクションの [外部エンドポイント] 列で IP アドレスとポートを確認できます。

ブラウザでゲートウェイの SLB アドレスにアクセスし、次のリクエストを送信します。

image

image

カナリアリクエストをカナリアリリースバージョンにルーティングする

image

image

詳細については、「自己管理型の Spring Cloud Gateway または Zuul ゲートウェイに基づくエンドツーエンドカナリアリリースの実装」をご参照ください。

グレースフルスタートとシャットダウン

MSE コンソールにログインします。左側のナビゲーションウィンドウで、[マイクロサービスガバナンス] > [アプリケーションガバナンス] を選択します。[アプリケーションリスト] ページで、目的のアプリケーションの名前をクリックして概要ページに移動します。

グレースフルスタートとシャットダウンを構成する

アプリケーションの概要ページの左側のナビゲーションウィンドウで、[トラフィックガバナンス] を選択します。デフォルトでは、いくつかのグレースフル起動とシャットダウン機能が提供されています。すべての機能を使用するには、コンソールでグレースフル起動とシャットダウンの設定を有効にして構成できます。

image

イベントとプロセスを表示する

image

詳細については、「グレースフルスタートとシャットダウン」をご参照ください。

スロットリングルール

MSE コンソールにログインします。左側のナビゲーションウィンドウで、[マイクロサービスガバナンス] > [アプリケーションガバナンス] を選択します。[アプリケーションリスト] ページで、目的のアプリケーションの名前をクリックして概要ページに移動します。

スロットリングルールの設定

アプリケーションの概要ページの左側のナビゲーションウィンドウで、[トラフィックガバナンス] を選択します。トラフィックガバナンスページで、[フロー保護] > [インターフェイススロットリング] を選択し、[スロットリングルールの追加] をクリックします。

image

スロットリング効果

ブラウザでゲートウェイの SLB アドレスにアクセスし、次のリクエストを送信します。

image

アプリケーション A には 1 つのノードがあります。シングルノードのスロットリングしきい値は 5 に設定されており、QPS (クエリ/秒) は 5 で安定しています。

image

詳細については、「トラフィック保護とは」をご参照ください。

サンプルリクエスト

説明

`localhost` をゲートウェイの SLB アドレスに置き換えてください。ゲートウェイの Pod からリクエストを送信できます。

# 通常リクエスト
http://localhost:20000/A/a
A[10.0.0.47][config=base] -> B[10.0.0.39] -> C[10.0.0.48]

# カナリアリクエスト
http://localhost:20000/A/a?name=xiaoming
Agray[10.0.0.41][config=base] -> B[10.0.0.55] -> Cgray[10.0.0.30]

# 通常リクエスト (Feign)
http://localhost:20000/A/aByFeign
A[10.0.0.47][config=base] -> B[10.0.0.55]

# 通常リクエスト (A が B と C を順次リクエスト)
http://localhost:20000/A/a2bc
A[10.0.0.47][config=base] -> C[10.0.0.48]
A[10.0.0.47][config=base] -> B[10.0.0.55] -> C[10.0.0.49]

# Dubbo リクエスト
http://localhost:20000/A/dubbo
A[10.0.0.44] -> B[10.0.0.39]name:A -> C[10.0.0.49] params:A

# Dubbo カナリアリクエスト
http://localhost:20000/A/dubbo?name=xiaoming
Agray[10.0.0.41] -> B[10.0.0.39]name:A -> Cgray[10.0.0.30] params:A

# スロットリングテスト用のリクエスト
http://localhost:20000/A/flow
A[10.0.0.17][config=base] -> B[10.0.0.39] sleepTime:9 -> C[10.0.0.48] sleepTime:8 code:200
http://localhost:20000/A/dubbo-flow
A[10.0.0.17] -> B[10.0.0.55]name:A -> C[10.0.0.48] params:A
http://localhost:20000/A/isolate
A[10.0.0.42][config=base] -> B[10.0.0.55] sleepTime:504 -> C[10.0.0.48] sleepTime:8 code:200
http://localhost:20000/A/dubbo-isolate
A[10.0.0.17] -> B[10.0.0.55]name:isolate -> C[10.0.0.49] params:isolate
http://localhost:20000/A/params/hot
A[10.0.0.17][config=base] params:hot -> B[10.0.0.55] sleepTime:5 params:hot -> C[10.0.0.49] sleepTime:6 params:hot code:200
http://localhost:20000/A/dubbo-params/hot
A[10.0.0.17] params:hot -> B[10.0.0.55]name:hot -> C[10.0.0.49] params:hot

# データベースリクエスト
http://localhost:20000/A/sql?command=query&id=1
A[10.0.0.44][config=base] -> B[10.0.0.39] result:{"age":1,"email":"emailUpdate%40demo.com","id":1,"name":"name1Update"}
http://localhost:20000/A/sql?command=update&name=name1Update&email=emailUpd***@demo.com&age=1&id=1
A[10.0.0.44][config=base] -> B[10.0.0.55] result:true

# spring boot リクエスト
http://localhost:20000/spring_boot

追加情報

アプリケーション接続

このメソッドでは、接続したい各アプリケーションのデプロイメントに msePilotAutoEnable: "on" ラベルを明示的に追加する必要があります。実際には、MSE オペレーションセンターで Kubernetes 名前空間全体のマイクロサービスガバナンスを有効にして、アプリケーションをバッチで接続できます。

詳細については、「ACK および ACS マイクロサービスアプリケーションを MSE ガバナンスセンターに接続する (Java)」をご参照ください。

グレースフルスタートとシャットダウン

説明

デプロイメント中にグレースフル起動とシャットダウンを有効にしなかった場合は、後で次の手順を実行して有効にできます。

  1. グレースフル起動とシャットダウンを使用するには、ACK コンソールにログインします。クラスター情報ページの左側のナビゲーションウィンドウで、[運用管理] > [アドオン] を選択し、検索ボックスで cronhpa を検索して [インストール] をクリックします。

  2. 次の YAML ファイルを使用して、スケジュールされたスケーリングタスクを作成します。`Namespace` フィールドは、Helm のインストール時に選択した Kubernetes 名前空間と同じに設定する必要があります。

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: CronHorizontalPodAutoscaler
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: cronhpa-deployment-spring-cloud-b
  namespace: mse-demo # 注: namespace フィールドは、Helm のインストール時に選択した Kubernetes 名前空間と同じである必要があります。
spec:
  jobs:
  - name: scale-out
    schedule: 0 0/6 * * * *
    targetSize: 6
  - name: scale-in
    schedule: 0 5/6 * * * *
    targetSize: 2
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: spring-cloud-b

ゲートウェイの自動リクエスト設定

自動リクエスト送信はデフォルトで有効になっています。Container Service コンソールにログインできます。ナビゲーションバーで、[ワークロード] > [ステートレス] をクリックします。ステートレスページで、spring-cloud-gateway アプリケーションをクリックします。詳細ページで、右上隅の [編集] をクリックし、自動リクエスト用に次の環境変数を設定します。

環境変数キー

説明

デフォルト値

enable.auto

自動トラフィックのマスター スイッチ

true

enable.rpc.invoke

Dubbo リクエストのスイッチ

true

enable.sql

データベースリクエストのスイッチ

true

enable.sentinel.demo.flow

Sentinel ルール関連のリクエストのスイッチ。その中で:

  • flow リクエストはスロットリングルールのテストに使用できます。

  • isolate リクエストには一定レベルの同時実行性があり、分離ルールのテストに使用できます。

  • params は `hot` パラメーターを運び、ホットスポットルールのテストに使用できます。

true

enable.gray

タグベースのカナリアリクエストのスイッチ

false

demo.qps

QPS でのリクエストレート。これは /a パスのリクエストレートを制御します。他のパスのレートは、この値に相対的です。

20

image.png