什么是服务网关?
服务网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。服务网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。
为什么要选用Gateway?
SpringCloud Gateway(异步非阻塞模型)使用的是Webflux中的reactor-netty响应式变成组件,底层使用了Netty通讯框架,提升了网关的性能,而以前使用的Zuul目前已不再维护。
网关的作用?
网关在系统中处于哪一层?
网关的三大核心概念
路由(route)、断言(predicate)、过滤(fliter)
- 路由:由ID、目标URI、一系列断言和过滤器组成,如果的断言为true则匹配该路由。
- 断言:开发人员可以匹配HTTP请求中的所有内容(如请求头/请求参数),如请求与断言相匹配则进行路由分配。
过滤:使用过滤器可以在请求被路由转发前或后对请求进行修改,进行精细化控制。
gateway工作流程
网关配置
yml文件中添加如下代码

- 代码中注入RouteLocator的Bean
@Configuration**public class **``GateWayConfig {@Bean**public **``RouteLocator customRouteLoactor(RouteLocatorBuilder routeLocatorBuilder) {RouteLocatorBuilder.Builder routes = routeLocatorBuilder.routes();routes.route(``**"path_route_atguigu"**``, //路由规则名称,不可重名r -> r.path(``**"/guonei"**``) //访问/...时转到uri的地址.uri(``**"https://news.baidu.com/guonei"**``)).build();**return **``routes.build();}...}
断言的详细配置
断言可以配置After、Before等如下项目。可参照Spring Cloud Gateway官方文档的第四部分
过滤的详细配置
- 官网定义过滤器
- 单一过滤:Spring Cloud Gateway官方文档第五部分
- 全局过滤:Spring Cloud Gateway官方文档第六部分
- 自定义过滤器
1处必须被继承,2和3为继承类所需实现的方法。3表示优先级,数字越小优先级越大;2表示过滤方法,若不满足条件则返回,满足条件则进行下一个过滤条件。

