什么是网关?
大家都知道,从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关。顾名思义,网关(Gateway) 就是一个网络连接到另一个网络的“关口”。也就是网络关卡。
网关是一个服务,是访问内部系统的唯一入口,提供内部服务的路由中转,额外还可以在此基础上提供如身份验证、监控、负载均衡、限流、降级与应用检测等功能。
Spring Cloud Gateway 与 Zuul 对比
zuul1.x与zuul2.x
Zuul 1.x 基于同步 IO
zuul2.x
基于异步io
zuul1.x 对比 zuul2.x 性能提升
zuul 与Gateway对比
SpringCloud Gateway 使用
断言 predicates
多个断言可以配合使用
path断言
predicates:
- Path=/mg/**
Query断言
参数值可以写正则,也可以只写参数名
predicates:
- Query=foo,ba.
Method断言
predicates:
- Method=get
Host断言
predicates:
- Host=mashibing.com
Cookie断言
predicates:
- Cookie=name,yiming
基本路由
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
配置文件
spring:
cloud:
gateway:
routes:
- id: muroute
uri: http://localhost:8080
filters:
- StripPrefix=2
server:
port: 80
整合Eureka
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
配置
spring:
cloud:
gateway:
discovery:
locator:
// 开启从eureka 拉取服务列表 并自动映射
enabled: true
application:
name: myGateWay
eureka:
client:
service-url:
defaultZone: http://euk1.com:7002/eureka/
server:
port: 80
负载均衡
spring:
cloud:
gateway:
discovery:
locator:
enabled: true
routes:
- id: mdb
predicates:
- Path=/mangodb/**
uri: lb://MDB
filters:
- StripPrefix=1