SpringCloudエントリー2 ---ユーレカ(サービス発見コンポーネント)
SpringCloudを装う(サービスコール成分)--- 3はじめに
SpringCloudエントリ4 --- Hystrix(ヒューズアセンブリ)
SpringCloudエントリ-5 --- Zuul(サービングゲートウェイ)
第五章では、我々はZuulの右SpringCloud(サービングゲートウェイ)の簡単な説明を行います。
1.なぜ我々はマイクロゲートウェイサービスが必要なのか
一般的に、異なるマイクロサービスは、異なるネットワークアドレスを持っているし、外部クライアントは、ビジネスニーズを完了するために、複数のサービス・インターフェースを呼び出す必要があります。例えば、映画のチケットコレクションAPPは、マイクロフィルムの分類は、ユーザーのマイクロサービス、少額決済サービスのサービスをコールバックすることがあります。クライアントとマイクロサービスが直接通信する場合は、についての質問があります:
#のクライアントが繰り返し異なるマイクロサービスを要求し、クライアントの複雑さを増す;
#特定の場面で扱わクロスドメインリクエスト、比較的複雑であり、
#の認証は、複雑な、各サービスは、別々の認証が必要になります。 #は、直接クライアントとマイクロ・サービスの通信は、その後、再構築が実現するのは困難になる場合、再分割マイクロサービスである必要があり、プロジェクトの反復で、再構築することは困難である。
#いくつかのサービスは、他のマイクロを使用することができます契約は、直接アクセスが困難になります。
これらの問題は、マイクロサービスゲートウェイの手段によって解決することができます。マイクロサービスゲートウェイは、クライアントとサーバとの間に中間層を介在されている、すべての要求は、ゲートウェイにサービスを提供する外部のマイクロ通過します。
2、Zullプロフィール
Zuulは、オープンソースNetflixのマイクロサービスゲートウェイである、と彼はユーレカ、リボン、Hystrixおよびその他のコンポーネントを組み合わせて使用できます。:Zuulのコアコンポーネントは、これらのフィルタは、以下の機能を実行することができ、一連のフィルタです
:#アイデンティティ認証とセキュリティの各リソースの識別検証の要件を、そして一貫性のないこれらの要求を拒否し、
#のレビューと監視:監視要求サービスの負荷を。
#動的ルーティング:異なるバックエンド・クラスタに動的ルート要求;
#ストレス試験:性能を理解するために、クラスタへのトラフィックを増加させる;
#負荷分散:負荷の種類ごとに割り当てられた容量に対応し、そして限界値は廃止超えています要求;
#静的応答処理:内部クラスタに転送を避けるために応答するエッジ位置、;
#多地域柔軟性:クロスドメインルーティング要求はELB(ElasticLoadバランス)多様の用途を達成するように設計された領域をAWS;
Zuulの春は、クラウドを統合されていますそして、強化。
Zuulを使用した後、アーキテクチャは、フォームの進化を図:
3、Zuulゲートウェイ統合
(1)サブモジュールtest_manager、のpom.xml依存ユーレカクライアントとzuulの導入を作成します
<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)application.ymlを作成します
server:
port: 9011
spring:
application:
name: test‐manager #指定服务名
eureka:
client:
serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址
defaultZone: http://127.0.0.1:6868/eureka/
instance:
prefer‐ip‐address: true
zuul:
routes:
test‐gathering: #活动
path: /gathering/** #配置请求URL的请求规则
serviceId: tensquare‐gathering #指定Eureka注册中心中的服务id
test‐article: #文章
path: /article/** #配置请求URL的请求规则
serviceId: tensquare‐article #指定Eureka注册中心中的服务id
test‐user: #用户
path: /user/** #配置请求URL的请求规则
serviceId: tensquare‐user #指定Eureka注册中心中的服务id
(3)は、クラスの書き込みを開始します
@EnableZuulProxy
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
4、Zuulフィルタ
単純なフィルタを作成しますzuul
@Component
public class WebFilter extends ZuulFilter {
@Override
public String filterType() {
return "pre";// 前置过滤器
}
@Override
public int filterOrder() {
return 0;// 优先级为0,数字越大,优先级越低
}
@Override
public boolean shouldFilter() {
return true;// 是否执行该过滤器,此处为true,说明需要过滤
}
@Override
public Object run() throws ZuulException {
System.out.println("zuul过滤器...");
return null;
}
}
スタートZuulサービスは、フィルタが実行されたことがわかります
のfilterTypeを:次のように、zuulに四つの異なるライフサイクルを、フィルタの種類を表す文字列を返しフィルタタイプの定義:
- 前:リクエストがルーティングされる前に、呼び出すことができます
- ルート:ルートが呼び出されたときに要求
- ポストは:ルートとフィルタエラーが発生した後に呼び出され
- エラーは:要求の処理中にエラーが発生したときに呼び出されます
filterOrder : INT配列行うことにより、フィルタを定義する
shouldFilterは:フィルタは、この関数は、フィルタを切り替えることによって達成することができるように、実行されるべきかどうかを決定するブール値を返します。フィルタは常にアクティブであるので、上記の例では、我々は直接、trueを返します
実行:指定された論理フィルタを。
ゲートウェイサービスは、各マイクロサービスの背面に集中するために、業務に関連した電流制限はないが、彼らのビジネス・サービスを行うことができ、認証、単にフィルタリング、事前にサービス、配信サービスを行うことができますので、これまでZuulが完了導入されています。