1 概述
基于springboot和spring webflux,基于netty运行,的http网关服务。
它的目标是替换奈飞的zuul。其实它和zuul2的性能差不多。选择其一即可。
考虑到spring的生态,使用spring-cloud-gateway更加有优势
2 核心概念
Route 网关的基础(断言为真时匹配到路由)
- id
- 目标uri
- 断言
- 过滤器
Predicate java8的函数,输入类型是webflux的ServerWebExchange,允许开发人员处理http请求
Filter是gateway上的过滤器,可以在请求发出前后做一些业务上的处理
整体流程
maven配置
代码语言:txt复制 <dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-gateway -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<version>3.0.4</version>
</dependency>
<!--
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>
</dependencies>
服务配置
代码语言:txt复制spring:
application:
name: zuul-gateway-static
cloud:
gateway:
routes:
- id: test1
uri: "http://www.example.com/"
predicates:
- Path=/abc/**
server:
port: 10011
address: 127.0.0.1
debug: true
management:
endpoint:
gateway:
enabled: true
endpoints:
web:
exposure:
include: "*"
logging:
config: classpath:logback-spring.xml
#eureka.instance.ip-address=127.0.0.1
#eureka.client.serviceUrl.defaultZone=http://tom:123456@localhost:9010/eureka/
#eureka.instance.preferIpAddress=true
#eureka.instance.instance-id=${spring.application.name}:${server.address}:${server.port}
#eureka.client.healthcheck.enabled=true
#eureka.instance.lease-expiration-duration-in-seconds=20
#eureka.instance.lease-renewal-interval-in-seconds=15
访问页面就可以看到转发的数据 http://127.0.0.1:10011/abc