spring cloud gateway 2深く理解する-filter
4321 ワード
簡単に述べる spring cloud gatewayルーティングフィルタは、着信したHTTP要求または伝えられたHTTP応答 を修正する. spring cloud gatewayは、他のspring cloudコンポーネント を異なるフィルタで集積する.フィルタの種類 GatewayFilter Factores:フィルタ工場が生成するゲートウェイフィルタ Global Filters:グローバルフィルタ ゲートウェイフィルタ
StripPrfixフィルタ機能:一部のURLパスを削除する 構成例(入門教程): 上記のように、ゲートウェイアドレス もし です.に バックグラウンドサービス になる.
PrefixPathフィルタは、URLパスの前に部分的なプレフィックスを追加する とは逆の役割を果たしている.これは、 は、 Hystrixフィルタの役割:Hystrixフィルタは、サーキットをゲートウェイのルートに導入し、カスケード障害の影響からサービスを保護し、下流の故障時に応答を提供することができます. 構成例 は、上述のように配置された後、gatewayは 上はただHystrixフィルタの簡単な構成方式であり、失敗した場合は次のように を構成する.において、 Hystrixを呼び出したfallbackが起動されると、要求は その他のフィルタは公式文書をご覧ください.http://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.0.0.RELEASE/single/spring-cloud-gateway.html#_gatewayfilter_factores
グローバルフィルタ
グローバルフィルタの構成はゲートウェイフィルタとは異なる.また、その作用範囲はすべてのルーティング構成であるが、それぞれの有効条件がある.
LoadBalancer Client負荷バランスフィルタ(eureka登録センターを統合)役割:統合ribonとeureka 構成例(入門教程): ルーティング構成において Netty Routing Filterルーティング構成において を有効にする.は、Nettyの Websocket Routing Filterは、 を要求する.の構成例は以下の通りです. ルーティング構成において を有効にする.は、websocketを使用してフィルタをルーティングする際に、負荷等化フィルタ を使用してもよい.
StripPrfixフィルタ
spring:
cloud:
gateway:
routes:
# eureka
- id: hello_ribbon_route
uri: lb://spring-cloud-producer
predicates:
- Path=/producerInEureka/**
filters:
- StripPrefix=1
http://host:port/producerInEureka/hello
にアクセスした場合StripPrefix
フィルタがない場合、gatewayは、バックグラウンドサービスspring-cloud-producer
に要求するurlを送信します.http://spring-cloud-producer/producerInEureka/hello
StripPrefix
フィルタがある場合、gatewayは、StripPrefix=1
によって割り当てられた値(ここでは1)からURLパスの部分プレフィックスを削除する(ここではプレフィックスを削除する、すなわちproducerInEureka
を削除する).spring-cloud-producer
に要求を送信するurlはhttp://spring-cloud-producer/hello
PrefixPathフィルタ
spring:
cloud:
gateway:
routes:
- id: prefixpath_route
uri: http://example.org
filters:
- PrefixPath=/mypath
StripPrefix
をルーティング/mypath
に一致するすべての要求の経路の前に追加する.prefixpath_route
に対する要求を/hello
に送信する.spring:
cloud:
gateway:
routes:
- id: hystrix_route
uri: http://example.org
filters:
- Hystrix=myCommandName
/mypath/hello
を使用してHystrixCommandオブジェクトとして生成し、ヒューズ管理を行う.spring:
cloud:
gateway:
routes:
- id: hystrix_route
uri: lb://backing-service:8088
predicates:
- Path=/consumingserviceendpoint
filters:
- name: Hystrix
args:
name: fallbackcmd
fallbackUri: forward:/incaseoffailureusethis
- RewritePath=/consumingserviceendpoint, /backingserviceendpoint
myCommandName
はfallbackUri: forward:/incaseoffailureusethis
の時に調整されるべき経路を構成している.fallback
のURIに転送される.グローバルフィルタ
グローバルフィルタの構成はゲートウェイフィルタとは異なる.また、その作用範囲はすべてのルーティング構成であるが、それぞれの有効条件がある.
LoadBalancer Client負荷バランスフィルタ(eureka登録センターを統合)
spring:
cloud:
gateway:
routes:
# eureka
- id: hello_ribbon_route
uri: lb://spring-cloud-producer
predicates:
- Path=/producerInEureka/**
filters:
- StripPrefix=1
/incaseoffailureuset
によって使用されるプロトコルがuri
である場合(lb
を例にして)、gatewayはLoadBalancer Cientを使用して、uri: lb://spring-cloud-producer
をeurkaによって実際のホストとポートとして解析し、負荷の等化を行う.spring-cloud-producer
が使用するプロトコルがuri
またはhttp
である場合、nettyルーティングフィルタはhttps
を使用して、要求をゲートウェイの後のサービスに転送する役割を果たしている.HttpClient
のインフラストラクチャを使用してSpring Web Socket
を転送するために動作し、spring:
cloud:
gateway:
routes:
# Websocket
- id: websocket_route
uri: ws://localhost:3001
predicates:
- Path=/websocket/**
# SockJS
- id: websocket_sockjs_route
uri: http://localhost:3001
predicates:
- Path=/websocket/info/**
Websocket
で使用されるプロトコルがuri
またはws
である場合、Websocketルーティングフィルタは、