以前ユーレカ、装う、Hystrix、コンフィグ、Benpianは、APIゲートウェイzuulの下で学ぶことを学びました。マイクロサービスアーキテクチャでは、バックエンドサービスは、直接、多くの場合、発呼端末に開いていないですが、適切なサービスリクエストURLに応じて、ゲートウェイAPIを経由します。APIゲートウェイ、サードパーティのサービスプロバイダとの壁を作成するには、当事者間のエンドコールを追加する場合は、この壁の権限は、直接バックグラウンド・サーバーにバランスの取れた配分を要求した後、呼び出し側との通信を制御します。
なぜ私は、APIゲートウェイが必要なのか
クライアント呼び出しの複雑さを簡素化する1、
一般的にはマイクロサービスアーキテクチャモデルのバックエンドサービス内のインスタンスの数は、情報を動的に変更するクライアントアクセスアドレスサービスインスタンスを見つけるのは難しいという点で、動的です。したがってAPIゲートウェイはまた、実装依存の認証ロジックは、内側とサービスとの間のクロスコールの複雑さを簡素化するであろうが、通常軽量ように、ゲートウェイAPIゲートウェイを含むコール・ロジック、のフロントエンドを簡単にするためにマイクロプログラムのサービスに基づきます。
図2に示すように、切断データとポリマー
一般的に表示データの異なるクライアントの需要を言えば、携帯電話やWeb側とエンドまたは低遅延ネットワーク環境や高遅延ネットワーク環境として、矛盾しています。
そのため、クライアントエクスペリエンスを最適化するために、APIゲートウェイは、さまざまなクライアントのニーズに合わせて応答データの汎用性に合わせて調整することができます。しかし、また、それによって、クライアントからのリクエストの数を減らし、APIコール・ロジック重合複数のことができ、クライアントのユーザーエクスペリエンスを最適化
3、マルチチャネルサポート
もちろん、我々はまた、フロントエンドのための別のよく知られた方法のバックエンドによって呼び出され、このモードを使用するために、異なるチャネルおよびクライアント異なるAPIゲートウェイを提供することができる、フロントエンドモードのバックエンドの中で、我々は、異なるターゲットにすることができますクライアントは、彼らのBFFを作成し、BFFは、この記事についての詳細を学ぶために参照することができますされています。パターンは:フロントエンドのためにバックエンド
レガシーシステムの4マイクロサービス変換
サービス改革のためのマイクロシステムが原因の問題多かれ少なかれ、元のシステムに対して、通常、そのようなので、上の技術的負債、コードの品質、保守性、拡張性、など。応答力を強化するため、既存のビジネスを向上させるようにAPIゲートウェイモードはまた、レガシーシステム、マイクロサービスの変換により、元のシステムの問題の修理の漸進的実現のこのタイプの変換に適用されます。抽象化レイヤを導入することにより、徐々に達成するための新しい実装で古いものを交換してください。
春のクラウドシステムでは、春クラウドZuulは、ロードバランシング、リバースプロキシ、認証局のAPIゲートウェイを提供することです。
使用するのは簡単zuul
まず、依存性の導入
春・クラウド・スターター・ネットフリックス - zuul、の導入は、バージョン番号のspringbootと、スプリング・クラウドのバージョン番号を書き留め、ここに起因する一貫性のないバージョンに生じる誤差の実装の過程で現れます。XMLは、直接、後に使用し、スプリング・クラウド・スターター・ネットフリックス - ユーレカ・クライアントの導入後。
<依存性> <のgroupId> org.springframework.cloud </のgroupId> <たartifactId>ばねクラウドスタータのNetflix-zuul </たartifactId> </依存>
<?XMLバージョン= "1.0"エンコード= "UTF-8" ?> < プロジェクトのxmlns = "http://maven.apache.org/POM/4.0.0" のxmlns:XSI = "http://www.w3.org / 2001 / XMLスキーマ・インスタンス」 のxsi:のschemaLocation = "http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 </ modelVersion > < 親> < groupIdを> org.springframework.boot </ groupIdを> < たartifactId > < バージョン> 2.1.7.RELEASE </ バージョン> < relativePath /> <! - ルックアップ親リポジトリから- > </ 親> < groupIdを> com.example </ groupIdを> < たartifactId > SpringColudZuulSimple </ たartifactId > < バージョン> 0.0.1-SNAPSHOT </ バージョン> < パッケージ>戦争</ 梱包> <名前>SpringColudZuulSimple </ 名前> < 説明>春ブーツ用デモプロジェクト</ 記述> < プロパティ> < のjava.version > 1.8 </ のjava.version > < 春-cloud.version > Greenwich.SR2 </ 春-cloud.version > </ プロパティ> < 依存性> < 依存性> < のgroupId > org.springframework.boot </ のgroupId > <たartifactId >春・ブート・スターター・ウェブ</ たartifactId > </ 依存関係> < 依存> < groupIdを> org.springframework.cloud </ groupIdを> < たartifactId >春・クラウド・スタータNetflixの-zuul </ たartifactId > </ 依存関係> < 依存> < groupIdを> org.springframework.cloud </ groupIdを> < たartifactId >春・クラウド・スターター・ネットフリックス-ユーレカ-クライアント</ たartifactId > </ 依存> < 依存性> < のgroupId > org.springframework.boot </ のgroupId > < たartifactId >ばねブートスタータTomcatの</ たartifactId > < スコープ>提供</ スコープ> </ 依存> < 依存関係> < groupIdを> org.springframework.boot </ groupIdを> < たartifactId >ばねブートスタータ試験</ たartifactId > < スコープ>テスト</ スコープ> </ 依存> </ 依存関係> < dependencyManagement > < 依存性> < 依存性> < のgroupId > org.springframework.cloud </ のgroupId > < たartifactId >春・クラウドの依存関係</ たartifactId > < バージョン> $ {春、雲。バージョン} </バージョン> < タイプ> POM </ 入力> < スコープ>インポート</ スコープ> </ 依存関係> </ 依存関係> </ dependencyManagement > < 構築> < プラグイン> < プラグイン> < groupIdを> org.springframework.boot </ groupIdを> < たartifactId >春・ブートのmaven-pluginの</ たartifactId > </プラグイン> </ プラグイン> </ 構築> </ プロジェクト>
第二に、使用@EnableZuulProxy
mainメソッドで@EnableZuulProxyコメントを追加します。
第三に、プロファイルを設定
増加はapplication.propertiesに従います。
spring.application.name =ゲートウェイ・サービスzuul
はserver.port = 8890
zuul.routes.baidu.path = /それ/ **
zuul.routes.baidu.url = HTTPS://www.cnblogs.com/
第四に、テスト
ブラウザの入力HTTPを:// localhostを:8890 / IT / 5ishare、ブラウザは、以下のページにジャンプします。
のサービス
実際にはマイクロサービスアーキテクチャを実装する場合、ユーレカサーバーでサービスインスタンスのサービス名とアドレスの関係がすでに存在しているので、あなただけはZuulは、他のサービスを探しに行くユーレカサーバーに登録する必要があり、あなたは、マッピングをServiceIDを達成することができます。
まず、依存性の導入
上記依存SpringColudZuulSimpleに春クラウド・スターター・ネットフリックス - ユーレカ・クライアントを追加します。
< 依存性> < のgroupId > org.springframework.cloud </ のgroupId > < たartifactId >ばねクラウドスタータのNetflix、ユーレカクライアント</ たartifactId > </ 依存>
第二に、設定を追加
spring.application.name =ゲートウェイ・サービスzuul
はserver.port = 8890
zuul.routes.baidu.path = /それ/ **
zuul.routes.baidu.url = HTTPS://www.cnblogs.com/
zuul.routes .API-a.path = /プロデューサー/ **
zuul.routes.api-a.serviceId =春・クラウド・プロデューサー
eureka.client.serviceUrl.defaultZone =のhttp:// localhostを:8088 /ユーリカ/
第三に、テスト
次にEurekaServer、EurekaClient、SpringColudZuulを開始します。ブラウザの入力HTTPを:// localhostの:? 8890 /プロデューサー/ =こんにちは名cuiyw。
デフォルトゲートウェイのルーティングルール
デフォルトでは、すべてのエージェントはマイクロサービスユーレカサーバーに登録Zuulなり、次のようにZuulルーティングルールがあります。http:// ZUUL_HOST:ユーレカのZUUL_PORT /マイクロいるServiceIDサービス/ **対応するマイクロサービスのサービスIDに転送されます。ルート上のゲートウェイ・サービスzuul-ユーレカプロジェクトの設定をオフに書かれました:
#zuul.routes.api-a.path = /プロデューサー/ **
#1 zuul.routes.api-a.serviceId =春-クラウドプロデューサー
入力リセットHTTPを:// localhostを:8890 /春クラウド・プロデューサー/名前を=こんにちはcuiyw? 。
参考ます。http://www.ityouknow.com/springcloud/2017/06/01/gateway-service-zuul.html