SpringCloud Gatewayは非ブロッキングモードを使用し、Netflix Zuulよりもパフォーマンスが高く、長い接続をサポートします。そのコアコンポーネントはアサーションとフィルターです。
ゲートウェイモジュールは、サービスゲートウェイ機能を実現するために、前の領事メインプロジェクトに追加されました。
SpringCloud Gatewayルーティング機能は、アサーションを使用して要求とルートを照合します。照合された要求は、処理のために対応するゲートウェイWebプロセッサーに送信され、プロセッサーは処理中に一連のフィルターを通過します。
1.Mavenの依存関係
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
2.構成ファイル
server:
port: 8801
spring:
application:
name: gateway
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: gateway
gateway:
discovery:
locator:
enabled: false
lower-case-service-id: true
routes:
- id: logservice
uri: lb://logservice
predicates:
- Path=/log/**
filters:
- StripPrefix=1
- id: orderservice
uri: lb://orderservice
predicates:
- Path=/order/**
filters:
- StripPrefix=1
# 配置日志
logging:
level:
org.springframework.cloud.gateway: debug
ルートノードの下に複数のルートを設定でき、各ルートには対応するサービスに一致する一意のIDがあります。
述語ノードの下にアサーションを構成します。ゲートウェイにはさまざまな組み込みアサーションがあります。一般的に使用されるのはパスおよびパスルーティングアサーションです。上記のuriのlbは、負荷分散を使用することを意味します。または、特定のURLにすることもできます。
メソッドメソッドルーティングアサーションでは、指定されたリクエストメソッドタイプのみが渡されます。その他には、ヘッダー、Cookie、ホスト、QueryParam、RemoteAddr、DateTimeが含まれます。
3.スタートアップクラスにアノテーションを追加します
@EnableDiscoveryClient
4.ゲートウェイからログサービスと注文サービスにアクセスします
http:// localhost:8801 / log / log
http:// localhost:8801 / order / order