一、 网关介绍

  1. 微服务为什么要用网关?
  2. 1.方便客户端做统一接入->减少客户端的交互次数
  3. 2.流量监控->限流
  4. 3.权限过滤器->安全防护
  5. Spring cloud gatewayspring官方基于Spring 5.0Spring Boot2.0等技术开发的非阻式,响应
  6. 式的网关,并且支持websocker长连接,Spring Cloud Gateway作为Spring Cloud生态系统中的网
  7. 关,目标是替代Netflix Zuul网关。我们知道Zuul1 是基于 Servlet 框架构建,采用的是阻塞和多线
  8. 程方式,不支长连接,比如,websocket,这种方式在内部延迟严重、设备故障较多情况下会引起系统线程
  9. 增加,严重时会造成服务器崩溃。虽然zuul2.x已经出来了,基于Netty,也是非阻塞的,支持长连接,但
  10. 由于zuul2的多次跳票,SpringCloud暂时还没有整合计划。

二、搭建网关工程

2.1 创建网关工程

工程名:ecs-basic->ec-basic-gateway
添加maven包:
注意:因为Spring cloud gateway是基于Spring webFlux框架实现的,会与Spring web有冲突,所以需要调整一下Spring web包的位置,可以放到ecs-common工程的pom下

  1. <!--微服务客户端 -->
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  5. </dependency>
  6. <!--Gateway 路由-->
  7. <dependency>
  8. <groupId>org.springframework.cloud</groupId>
  9. <artifactId>spring-cloud-starter-gateway</artifactId>
  10. </dependency>

image.png

2.2 添加配置文件

  1. server:
  2. port: 80
  3. spring:
  4. application:
  5. name: gateway-server
  6. #REDIS (RedisProperties)
  7. # Redis数据库索引(默认为0)
  8. redis:
  9. database: 4
  10. # Redis服务器地址
  11. host: 118.25.178.111
  12. # Redis服务器连接端口
  13. port: 6380
  14. # Redis服务器连接密码(默认为空)
  15. password:
  16. # 连接池最大连接数(使用负值表示没有限制)
  17. jedis:
  18. pool:
  19. max-active: 8
  20. # 连接池最大阻塞等待时间(使用负值表示没有限制)
  21. max-wait: -1
  22. # 连接池中的最大空闲连接
  23. max-idle: 8
  24. # 连接池中的最小空闲连接
  25. min-idle: 0
  26. # 连接超时时间(毫秒)
  27. timeout: 10000
  28. #注册中心地址
  29. eureka:
  30. client:
  31. serviceUrl:
  32. defaultZone: http://localhost:8100/eureka/

2.3 创建启动类

image.png