一、 网关介绍
微服务为什么要用网关?
1.方便客户端做统一接入->减少客户端的交互次数
2.流量监控->限流
3.权限过滤器->安全防护
Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0等技术开发的非阻式,响应
式的网关,并且支持websocker长连接,Spring Cloud Gateway作为Spring Cloud生态系统中的网
关,目标是替代Netflix Zuul网关。我们知道Zuul1 是基于 Servlet 框架构建,采用的是阻塞和多线
程方式,不支长连接,比如,websocket,这种方式在内部延迟严重、设备故障较多情况下会引起系统线程
增加,严重时会造成服务器崩溃。虽然zuul2.x已经出来了,基于Netty,也是非阻塞的,支持长连接,但
由于zuul2的多次跳票,SpringCloud暂时还没有整合计划。
二、搭建网关工程
2.1 创建网关工程
工程名:ecs-basic->ec-basic-gateway
添加maven包:
注意:因为Spring cloud gateway是基于Spring webFlux框架实现的,会与Spring web有冲突,所以需要调整一下Spring web包的位置,可以放到ecs-common工程的pom下
<!--微服务客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--Gateway 路由-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
2.2 添加配置文件
server:
port: 80
spring:
application:
name: gateway-server
#REDIS (RedisProperties)
# Redis数据库索引(默认为0)
redis:
database: 4
# Redis服务器地址
host: 118.25.178.111
# Redis服务器连接端口
port: 6380
# Redis服务器连接密码(默认为空)
password:
# 连接池最大连接数(使用负值表示没有限制)
jedis:
pool:
max-active: 8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1
# 连接池中的最大空闲连接
max-idle: 8
# 连接池中的最小空闲连接
min-idle: 0
# 连接超时时间(毫秒)
timeout: 10000
#注册中心地址
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8100/eureka/