阿里雲アカウント: 阿里雲雲原生マイクロサービスアーキテクチャに基づくSpring Cloudプロジェクト導入チュートリアル
市場では、マイクロサービスの導入に関するチュートリアルがたくさんあります。すぐに、サーバー上でNginx、Nacos、Sentinel、Zipkin…… グループパンチが終わって、サーバーのメモリが爆発しました様々なプロファイルは人を半分の命に落とすことができる。
雲が生まれた時代には、このように遊ぶのはあまりにも非効率的だった。阿里雲はすでにマイクロサービスベース (登録センター、配置センター、ゲートウェイ、制限ダウングレード) をすべて作成した
クラウドネイティブ管理サービス
。
今日このチュートリアルは複雑な枠組み理論を使わず、でたらめを言わない。私たちは直接一つの基準で
Spring Cloudマイクロサービスプロジェクト
例えば、最も接地的な実戦方式で
阿里雲雲原生構造 (MSE ACK/SAE) に基づいて、ゼロからマイクロサービスの導入と走る
。
コアアーキテクチャ設計
手を出す前に、私たちが実現するクラウドネイティブのマイクロサービス導入トポロジーを見てみましょう
【クライアント要求】
│
▼
【阿里雲原生ゲートウェイ (MSE)】 -- (自動発見サービス) --> 【マイクロサービス登録センター (MSE Nacos)】
ページを飛ぶ
── ──> 【マイクロサービスA (軽量アプリケーション/SAE)】
ページを飛ぶ
└ ─ ─ ─> 【マイクロサービスB (軽量アプリケーション/SAE)】 <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
従来のアプローチはECSにNacosとGatewayをインストールすることで、クラウドのネイティブアプローチは阿里雲を直接使用することである
の
MSE (マイクロサービスエンジン)
そして
SAE(Serverlessアプリケーションエンジン)
。これにより、サーバの基盤を維持する必要がなく、秒レベルの柔軟な拡張が可能になります。
最初のステップ: マイクロサービスコードの改造 (クラウドネイティブに対応)
ローカルで実行されているSpring Cloudプロジェクトをクラウドに移行するには、まず構成ファイルを変更して、阿里雲の管理Nacosと連携させる。
1.依存関係の導入
あなたの
Pom.xml
に標準的なSpring Cloud Alibaba依存を導入しました:
XML
<グリジェンス>
<GroupId> com.alibaba.cloud</groupId>
<ArtifactId> spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</Dependency>
<グリジェンス>
<GroupId> com.alibaba.cloud</groupId>
<ArtifactId> spring-cloud-starter-alibaba-nacos-config</artifactId>
</Dependency>
2. 設定ファイルを編集する
地元では、私たちはいつもNacosアドレスを死んでいます
Localhost: 8848
。クラウドのネイティブ導入では
コードにIPパスを書かないでください
。環境変数を直接使用して動的に注入するには:
YAML
# ブートストラップ.ymlまたはアプリ.yml
Spring:
アプリ:
Name: order-service # あなたのサービス名
Cloud:
Nacos:
ディスカバリー:
Server-addr: ${NACOS_SERVER_ADDR:localhost:8848} # 優先読み取り環境変数
巻き: $ {nacos_巻き: public}
Config:
Server-addr: ${NACOS_SERVER_ADDR:localhost:8848}
File-extension: yaml
💡なぜこのように書くのですか。$ {変数名: デフォルト値} の書き方で、ローカル開発時に環境変数を渡さなければ、依然としてlocalhost; クラウドに行ってクラウドプラットフォームは、実際の阿里雲クラスタのアドレスを自動的に注入して、コード「一連のコンパイル、至るところで実行」を実現してくれます。
ステップ2: 阿里雲でMSE Nacosを開設して配置する (1分)
今、私たちは阿里雲に行ってマイクロサービスの「脳」を処理します。登録センターと配置センターです。
阿里雲コンソールにログインし、「マイクロサービスエンジンMSE」を検索して入力します。
「インスタンスの管理」をクリックします $ \ right arrow $ 「インスタンスを作成」し、「Nacos」を选択します。
バージョン選択: 最新の安定版 (Nacos 2.Xなど) を選択します。クラスター仕様は業務量に応じて選択し、個人テストや小プロジェクトは開発テスト型 (シングルノード) を選択すればよく、生産環境は専門型(3ノード高利用) を選択しなければならない。
作成が完了したら、インスタンスの詳細ページに進みます。2つのコアネットワークのアドレスが表示されます。イントラネットアドレス (mse-xxxx-nacos-ctl.tbls.com:8848に似ている) パブリックネットワークのアドレス (パブリックネットワークのデバッグが開通する必要がある場合、生産環境は安全のためにイントラネットのみを推奨します)
このイントラネットアドレスを記録して、それが私たちの次の要塞がマイクロサービスに与える変数である。
ステップ3: SAEを使用してマイクロサービス・コンポーネントを導入する (4分)
マイクロサービスのコンポーネントが多く、従来のK8s(ACK) で導入するには、大量のYAMLファイルを書く必要があり、Pod、Deploymentなどの概念も理解する必要がある。
ここではもっと簡単なものをおすすめします
SAE(サーバーレスアプリケーションエンジン)
、それはあなたがK8sクラスタを維持する苦痛をなくして、Jarパッケージやミラーを直接アップロードすれば走ることができる。
1.梱包項目
ローカルプロジェクトのルートでMavenコマンドを実行し、マイクロサービスを標準のJarパッケージにパッケージ化します
バッシュ
Mvnクリーンパッケージ-DskipTests
梱包したものを手に入れる
Order-service.jar
。
2.SAEでアプリを作成する
阿里雲「ServerlessアプリケーションエンジンSAE」コンソールに入ります。
「アプリケーションリスト」 $ \ right arrow $ 「アプリケーションを作成」をクリックします。
アプリケーションの導入方法: 「JARパッケージの導入」を選択します (Dockerに精通している場合は、ミラーの導入を選択することもできます)。
実行時環境: 対応するJDKバージョン (Java 8やJava 11/17など) を選択します。
梱包したばかりのorder-service.jarをアップロードします。
3.環境変数を注入する (コアステップ)
配置ページの
「詳細設定」
中、見つけます
「環境変数」
オプション。最初のステップのコードに残した空を覚えています
位ですかここでそれを補充します
キー
値 (Value)
NACOS_SERVER_ADDR
ステップ2でコピーしたMSE Nacosイントラネットアドレスを入力します
Nacos_.com
Nacosに新しい名前空間を作ったらIDを入力し、持っていなければpublicを入力します
4.アプリケーションを起動する
「確認」をクリックして作成し、導入します。SAEは自動的にバックグラウンドで計算リソースをスケジュールし、コンテナを引き上げ、Jarパッケージを実行します。1 ~ 2分待って、状態が「実行中」になったのを見て、サービスがクラウドを走ることに成功した。
戻ってログインできます
MSE Nacosコンソール
「サービス管理」リストを更新すると表示されます
オーダー ‐ サービス
登録に成功しました!
ステップ4: クラウドネイティブゲートウェイを構成して外部アクセスを実現する (2分)
マイクロサービスはネットで走り始めましたが、ネットユーザーはどうやって訪問しますか?私たちは一つの統一的な入り口が必要です。つまり、マイクロサービスのゲートウェイです。阿里雲MSEは独自の「クラウドネイティブゲートウェイ」を提供し、従来のSpring Cloud Gatewayに完全に取って代わる。
MSEコンソール $ \ right元々クラウドネイティブゲートウェイ $ \ right元々ゲートウェイ $ ゲートウェイインスタンスのリストに入り、「作成」をクリックします。
作成したばかりのMSE Nacosインスタンスを関連付けます。
ゲートウェイの作成が成功したら、ゲートウェイの詳細ページに入り、左側の「サービスソース」をクリックします。ソースタイプは「MSE Nacos」を選択し、Nacosインスタンスをチェックします。
左側の「ルート設定」をクリックします。マッチパス: 例えば/order/と入力します。ターゲットサービス: ドロップダウンメニューでNacosに登録したorder-serviceを直接選択します。
「保存して公開」をクリックします。
このとき、クラウドのネイティブゲートウェイが提供するパブリックネットワークIPとパス (https:// ゲートウェイIP/order/createなど) にアクセスします
ゲートウェイはNacosのマイクロサービスノードを自動的に感知し、要求を完璧に転送します。
実戦ピット回避と高級調整ガイド
ホワイトスクリーン/登録できませんか?まずネットワークセキュリティグループを調べてください! MSE Nacos、SAEアプリケーションは、同じVPC (仮想プライベートクラウド) と同じスイッチの下にある必要があります。SAEのマイクロサービスが狂っていることを発見したら、すぐに二つの製品のVPC属性が一致しているかどうかをチェックします。
マイクロサービスの優雅なオフライン問題マイクロサービスは、新しいバージョンがリリースされたときにアクセスしているユーザーのエラーを引き起こす可能性が最も高い。阿里雲SAEは優雅なオフライン機能を持っている。原
理: マイクロサービスが破棄される前に、SAEは積極的にMSE Nacosにログアウト信号を送り、ゲートウェイが新しいトラフィックを転送しなくなり、古い要求が処理されてから容器を閉じる。どのように使うか: SAEアプリケーションの高度な設定で、「マイクロサービスロスレスオフライン」スイッチをオンにして、コードを修正する必要はありません。
メモリオーバーフロー (OOM) エラー多くの初心者がJVMメモリとシステムメモリを混同している。SAEで1コア2G仕様のインスタンスを購入した場合、JVMパラメータに-Xmx2gを書かないでください。システム自体もメモリを食べるからです。黄金法則: JVMの最大ヒープメモリ (-Xmx) は、インスタンス仕様の60% ~ 70% 程度に設定する必要があります。たとえば、2G仕様のインスタンスでは、JVMパラメータは-Xmx1300mに設定することを推奨します。
おめでとうございます! ここまで、高可用性で、自動的に柔軟に伸縮できるクラウド・ネイティブ・マイクロ・サービス・システムが完全に開通した。面倒なミドルウェアの運送次元に別れを告げて、すべてのエネルギーを業務コードの作成に投入することができる。

