技術共有

Spring Cloudプロジェクトの構築

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

サービス分割:

1. 単一責任の原則: マイクロサービス アーキテクチャでは、サービスは 1 つの機能またはビジネス領域のみを担当し、各サービスは明確な定義と境界を持ち、独自の特定のビジネス領域のみに焦点を当てる必要があります。

2. サービスの自律性: サービスの自律性とは、各マイクロサービスが高度な自律性を持つ必要があること、つまり、各サービスが独立して開発、独立してテスト、独立して構築、独立してデプロイ、および独立して運用できる必要があることを意味します。

3. 一方向の依存関係

マイクロサービス間には一方向の依存関係が存在する必要があり、循環依存関係と双方向の依存関係は厳しく禁止されています。

循環依存: A->B->C->A

双方向の依存関係: A->B、B->A

例:

1.注文リスト

2. 製品一覧

注文サービス: 注文 ID を入力し、注文の詳細を取得します。

製品サービス: 製品 ID に基づいて製品の詳細を返します

注文に基づいて注文情報を照会する場合は、注文の製品 ID に基づいて製品の詳細を取得します。

成し遂げる:

実装のアイデア: order-service サービスは http リクエストを product-service サービスに送信し、返された結果を注文結果とマージして、呼び出し元に返します。

実装方法:Springが提供するRestTemplateを使用

1.RestTemplateを定義する

@構成

パブリッククラスBeanConfig{
@豆

パブリック RestTemplate restTemplate{

新しい RestTemplate() を返します。

      }

}

2. order-controllerでrestTemplateを使用する

レストテンプレート:

休む(プレゼンテーション テイト Tranfer) はレイヤーリソースのステータス転送を表します

リソース: 写真、ビデオ、テキストなどのインターネット上のデータはすべてリソースです

プレゼンテーション層: リソースの表現形式 (たとえば、テキストの表現形式は txt、画像の表現形式は jpg、一部のリソースは json、xml、またはバイナリで表現されます。など)

状態転送: ネットワーク経由でリソースにアクセスし、リソースを実行 (追加、変更、削除など) すると、リソースの状態が変化します。簡単に言うと、REST はクライアントとサーバー間の対話形式を表します。 REST 自体は実用的ではなく、RESTful API (REST スタイルのネットワーク インターフェイス) を設計する方法を使用します。

安らかなスタイルには、一般的に次のような特徴があります。

1. リソース

2. 統合インターフェイス: リソースの取得、作成、変更、削除などの操作については、これらのウィンドウは、http プロトコルによって提供される GET、POST、PUT、および DELETE メソッドに対応します。つまり、RESTful スタイルのインターフェイスを使用する場合です。 、インターフェイスからリソースを見つけることはできますが、どのような操作が実行されたのかを知る方法はありません。具体的にどのような操作が行われたのかを知り、http リクエスト メソッドのタイプ (例: 同じ URL) から判断する必要があります。 : GET/blog/{blogId }: ブログをクエリ DELETE/blog/{blogId} ブログを削除)

RESTful API の欠点:

1. RESTful API では通常、リソースに対する操作アクションを GET、POST、PUT、DELETE で区別します。
HTTP メソッドは直接観察することができないため、パケット キャプチャなどのツールを介して観察する必要があります。アクションを URL に配置すると、より直感的になります。
チームの理解とコミュニケーションがより促進されます。
2. 一部のブラウザは GET と POST 以外のリクエストのサポートにあまり適していないため、追加の処理が必要です。
3. リソースの重視 ただし、実際のビジネス ニーズはさらに複雑であり、単に追加、削除、変更、検索するだけではニーズに対応できません。
RESTful API は開発の難易度とコストを増加させます。

プロジェクトに問題があります
1. リモート呼び出しの場合、URL の IP とポート番号はハードコーディングされています (http://127.0.0.1:9090/product/)。IP を変更する場合は、コードを変更する必要があります。
コード
2. 発信者がサービス プロバイダーの IP に依存しないようにするにはどうすればよいですか?
3. 複数のマシンの導入、プレッシャーをどのように共有するか?
4. リモート呼び出しを行う場合、間違った URL を記述することが非常に簡単で、再利用性が高くありません。リモート呼び出しを適切に実装するにはどうすればよいですか?
5. すべてのサービスがこのインターフェイスを呼び出すことができます。リスクはありますか?