Spring Cloud Gateway

Spring Cloud Gateway

作用

  • 限流
  • 路径重写
  • 动态路由
  • 集成 Spring Cloud DiscoveryClient
  • 集成 Hystrix 断路器

Gateway 和 Zuul

  1. Zuul 是 Netflix 公司的开源产品,Spring Cloud Gateway 是 Spring 家族中的产品,可以和Spring 家族中的其他组件更好的融合。
  2. Zuul1 不支持长连接,例如 websocket。
  3. Spring Cloud Gateway 支持限流。
  4. Spring Cloud Gateway 基于 Netty 来开发,实现了异步和非阻塞,占用资源更小,性能强于 Zuul。

基本用法

添加gateway

编码式

@Bean
RouteLocator routeLocator(RouteLocatorBuilder builder) {    
	return builder.routes().route(
		"id", r -> r.path("/get").uri("http://www.baidu.com")
		).build();
}

配置式

spring:  
  cloud:    
	gateway:      
	  routes:         
	  	- id: id          
	      uri: http://www.baidu.com         
	      predicates:            
	        - Path=/get

服务化

添加依赖

<dependency>    
	<groupId>org.springframework.cloud</groupId>    
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

配置。

spring: 
  application:
    name: gateway
  cloud:    
	gateway:      
	  routes:         
	  	- id: lb://SAY-HI #服务名调用          
	      uri: http://xxx.cn         
	      predicates:            
	        - Path=/get
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

Predicate

  1. 时间匹配
spring:  
  cloud:    
	gateway:      
	  routes:         
	  	- id: id          
	      uri: http://www.baidu.com         
	      predicates:            
	        - After=2020-08-08T01:01:01+08:00[Asia/Shanghai]

表示,请求时间在 2020-08-08T01:01:01+08:00[Asia/Shanghai] 时间之后,才会被路由。
除了 After 之外,还有两个关键字:
Before,表示在某个时间点之前进行请求转发
Between,表示在两个时间点之间,两个时间点用 , 隔开

  1. 请求方式匹配
spring:  
  cloud:    
	gateway:      
	  routes:         
	  	- id: id          
	      uri: http://www.baidu.com         
	      predicates:            
	        - Method=GE
  1. 请求路径匹配
spring:  
  cloud:    
	gateway:      
	  routes:         
	  	- id: id          
	      uri: http://www.baidu.com         
	      predicates:            
	        - Path=/one/two/{segment}
  1. 请求参数匹配
spring:  
  cloud:    
	gateway:      
	  routes:         
	  	- id: id          
	      uri: http://www.baidu.com         
	      predicates:            
	        - Query=key

还是设定参数值规则,例如:以123开头

spring:  
  cloud:    
	gateway:      
	  routes:         
	  	- id: id          
	      uri: http://www.baidu.com         
	      predicates:            
	        - Query=key,123.*

以上几种也可以任意组合使用。

Filter

有 GatewayFilte r和 GlobalFilter两类。如 AddRequestParameter 过滤器

spring:  
  cloud:    
	gateway:      
	  routes:         
	  	- id: id          
	      uri: http://www.baidu.com         
	      predicates:            
	        - Query=key,123.*
	      filters:            
	        - AddRequestParameter=ext,lala

在请求转发路由的时候,自动额外添加参数。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读