网关提供API全托管服务,丰富的API和路由规则动态管理功能,辅助管理大规模的API,以降低管理成本和安全风险,包括路由转发、协议适配、安全认证、访问控制、熔断限流等功能。一般来说,网关对外暴露URL或者接口等路由信息。网关的核心是谓词、路由和Filter过滤器链。
Spring Cloud Gateway启动时基于Netty Server监听一个指定的端口(该端口可以通过server.port属性自定义)。当客户端发送一个请求到网关时,网关会根据一系列Predicate的匹配结果来决定访问哪个Route路由,然后根据过滤器链进行请求的处理。过滤器链可以在请求发送到后端服务之前和之后执行,也就是首先执行Pre过滤器,然后将请求转发到后端服务器,最后执行Post过滤器。
- 路由:路由是网关最基础的部分,路由信息由一个ID、一个目的URL、一组谓词工厂和一组过滤器组成。如果路由谓词为真,则说明请求的URL和配置的路由匹配。
- 谓词:Java 8中的断言函数。Spring Cloud Gateway中的断言函数输入类型是Spring 5.0框架中的ServerWebExchange。Spring Cloud Gateway中的断言函数允许开发者去定义匹配来自于Http Request中的任何信息,比如请求头和参数等。
- 过滤器:一个标准的Spring WebFilter。Spring Cloud Gateway中的过滤器分类两种类型,分别是Gateway Filter和Global Filter。过滤器Filter将会对请求和响应进行修改处理。