SpringCloud微服务项⽬实战-API⽹关Gateway详解实现
前⾯讲过zuul的⽹关实现,那为什么今天⼜要讲Spring Cloud Gateway呢?原因很简单。就是Spring Cloud已经放弃Netflix Zuul了。现在Spring Cloud中引⽤的还是Zuul 1.x版本,⽽这个版本是基于过滤器的,是阻塞IO,不⽀持长连接。Zuul 2.x版本跟1.x的架构⼤⼀样,性能也有所提升。既然Spring Cloud已经不再集成Zuul 2.x了,那么我今天也就再讲解⼀下Spring Cloud Gateway了。
1. API⽹关
API⽹关是⼀个服务器,是系统的唯⼀⼊⼝。从⾯向对象设计的⾓度看,它与外观模式类似。API⽹关封装了系统内部架构,为每个客户端提供⼀个定制的API。它可能还具有其它职责,如⾝份验证、监控、负载均衡、缓存、请求分⽚与管理、静态响应处
理。API⽹关⽅式的核⼼要点是,所有的客户端和消费端都通过统⼀的⽹关接⼊微服务,在⽹关层处理所有的⾮业务功能。通
常,⽹关也是提供REST/HTTP的访问API。
springcloud集成log4j2⽹关应当具备以下功能:
性能:API⾼可⽤,负载均衡,容错机制。
安全:权限⾝份认证、脱敏,流量清洗,后端签名(保证全链路可信调⽤),⿊名单(⾮法调⽤的限制)。
⽇志:⽇志记录(spainid,traceid)⼀旦涉及分布式,全链路跟踪必不可少。
缓存:数据缓存。
监控:记录请求响应数据,api耗时分析,性能监控。
限流:流量控制,错峰流控,可以定义多种限流规则。
灰度:线上灰度部署,可以减⼩风险。
路由:动态路由规则。
2,SpringCloud Gateway 特征
SpringCloud官⽅,对SpringCloud Gateway 特征介绍如下:
(1)基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0
(2)集成 Hystrix 断路器
(3)集成 Spring Cloud DiscoveryClient
(4)Predicates 和 Filters 作⽤于特定路由,易于编写的 Predicates 和 Filters
(5)具备⼀些⽹关的⾼级功能:动态路由、限流、路径重写
从以上的特征来说,和Zuul的特征差别不⼤。SpringCloud Gateway和Zuul主要的区别,还是在底层的通信框架上。
简单说明⼀下上⽂中的三个术语:
**1)Filter(过滤器)**:
和Zuul的过滤器在概念上类似,可以使⽤它拦截和修改请求,并且对上游的响应,进⾏⼆次处理。过滤器为
org.springframework.cloud.gateway.filter.GatewayFilter类的实例。
**2)Route(路由)**:
⽹关配置的基本组成模块,和Zuul的路由配置模块类似。⼀个Route模块由⼀个 ID,⼀个⽬标 URI,⼀
组断⾔和⼀组过滤器定义。如果断⾔为真,则路由匹配,⽬标URI会被访问。
**3)Predicate(断⾔)**:
这是⼀个 Java 8 的 Predicate,可以使⽤它来匹配来⾃ HTTP 请求的任何内容,例如 headers 或参数。断⾔的输⼊类型是⼀个ServerWebExchange。
3,搭建配置
⾸先我们基于之前的演⽰项⽬,再创建⼀个gateway-service模块,添加依赖:
然后创建启动类:
配置Gateway路由信息:
1,通过yml配置实现
2,通过代码实现,在启动类⾥创建Route实例的配置类GatewayRoutes
然后启动服务测试,按顺序启动,依次启动eureka-server、customer-service、order-service、gateway-service。然后登录eureka客户端。所有服务正常启动,请求接⼝测试。
1,测试customer服务接⼝
2,测试order服务接⼝
今天由于时间关系,先说到这⾥,接下来会继续详细讲⼀些配置,熔断、限流、监控等系列内容。以及redis、MQ等接⼊应⽤。
推荐阅读:
扫码关注,发送关键词获取相关资料:
1. 发“Springboot”领取电商项⽬实战源码;
2. 发“SpringCloud”领取学习实战资料;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。