1.はじめにゲートウェイZuul
Zuul一つでNetflixのOSSであり、JVMベースのルーティングおよびサーバロードバランサです。サービスフレームワークは、ルーティング、モニタリング、耐障害性、セキュリティ、および他の側面を提供します。ユーレカ、リボン、Hystrix他のコンポーネントとのZuul作品。
Zuulのコアは、我々のような拡張機能の多くをフィルタリングすることができ、それを通してフィルターです。
- 1)動的ルーティングを動的にそのような集約されたデータやサービスリターン複数のようないくつかの処理を実行するために、異なるバックエンドサービスロジックにクライアント要求をルーティングします。
- 2)リクエストモニタは、システム全体に要求、要求応答詳細なログ記録、リアルタイムのトラフィック統計情報を監視し、現在のシステムを監視することができます
状態制御。
- バックエンドサービスを保護するために、すべての要求へのアクセス、拒否不正な要求で認証を行うための3)認証、認可。
- 電力供給会社のいくつかは、主要なイベントの間、システムの安定性を確保するために、より現実的なユーザーの同時実行をシミュレートする必要があるように4)ストレステストストレステストは、非常に重要な仕事です。Zuulをすることで
、動的バックエンドサービスをクラスタに要求を転送することができ、それはまた、いくつかの特別な治療を行うために、実際のテスト・トラフィックとトラフィックを識別することができます。 - 5)発行の灰色のリリースでは、システム全体の安定性を保証することができたときに、調整の問題の影響度ということを確実にするために、初期のグレーで見つけることができます。
2.なぜゲートウェイzuulを使用
一般的に、異なるマイクロサービスは、異なるネットワークアドレスを持っているし、外部クライアントは、ビジネスニーズを完了するバイオが可能な複数のサービス・インターフェースを呼び出す必要があります。例えば、映画のチケットコレクションAPP、マイクロフィルムの分類サービス、ユーザーのマイクロサービス、少額決済サービスを呼び出すことができます。クライアントとマイクロサービスが直接通信する場合は、以下の質問があります:
- #異なるマイクロサービスのための複数のクライアント要求は、クライアントの複雑さの増加に
- #クロスドメインリクエストは、認証プロセスは、特定の複雑なシーンでは比較的複雑です
- #各サービスは、別々の認証が必要です
3.手順は単純なプロセスです
指定されたマイクロゲートウェイを介してサービスにアクセスするためのフロントエンドプログラム。
4.Zuulゲートウェイ建物
(1)は、POMにMODUL追加の依存関係のMavenを作成します
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
</dependencies>
(2)YMLプロファイルを追加します
server:
port: 9998
spring:
application:
name: diplomaproject-managerzuul
eureka: #将此服务注册到eureka
client:
service-url:
defaultZone: http://127.0.0.1:9999/eureka/
instance:
prefer-ip-address: true #可以跨域访问
zuul:
routes:
host:
connect-timeout-millis: 15000 #HTTP连接超时大于Hystrix的超时时间
socket-timeout-millis: 60000 #socket超时
diplomaproject-person: #服务名称
path: /user/** #配置请求url的请求规则
serviceId: diplomaproject-person #指明eureka注册中心的服务id
(3)起動クラスを追加
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
@EnableEurekaClient
@EnableZuulProxy //使用网关代理
public class ManagerZuulApplication {
public static void main(String[] args) {
SpringApplication.run(ManagerZuulApplication.class);
}
}