什么是网关
在微服务架构里,服务的粒度被进一步细分,各个业务服务可以被独立的设计、开发、测试、部署和管理。这时,各个独立部署单元可以用不同的开发测试团队维护,可以使用不同的编程语言和技术平台进行设计,这就要求必须使用一种语言和平台无关的服务协议作为各个单元间的通讯方式。
换句话说就是网关为所有的请求提供了统一的入口,方便我们对服务请求和响应做统一管理。
为什么要用网关
API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。
什么是gateway
Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。
gateway工作原理
客户端向Spring Cloud网关发出请求。如果网关处理程序映射确定请求与路由匹配,则将其发送到网关Web处理程序。该处理程序运行通过特定于请求的过滤器链发送请求。过滤器由虚线分隔的原因是,过滤器可以在发送代理请求之前或之后执行逻辑。执行所有“前置”过滤器逻辑,然后发出代理请求。发出代理请求后,将执行“后”过滤器逻辑。
路由规则
路由和过滤器是gateway中非常重要的两个概念,gateway本身提供了非常丰富的路由规则和多种过滤器来适配我们的需求。gateway提供了11种路由规则,分别是:
后置路由谓词工厂
该谓词匹配在当前日期时间之后发生的请求。参数名为 After
前置路由谓词工厂
该谓词匹配当前日期时间之前发生的请求。参数名为 Before
时间段路由谓词工厂
该谓词匹配在datetime1之后和datetime2之前发生的请求。参数名为 Between
cookie路由谓词工厂
该谓词匹配具有给定名称的cookie,并且值匹配正则表达式。参数名为 Cookie
标头路由谓词工厂
该谓词与具有给定名称的标头匹配,并且值与正则表达式匹配。参数名为 Header
主机路由谓词工厂
该谓词是指由路由进行匹配,匹配多个路由时用,隔开。参数名为 Host
方法路由谓词工厂
该参数是一个或多个要匹配的HTTP方法。参数名为 Method
路径路由谓词工厂
该谓词是指在请求路径上加一个前缀,以此来匹配。参数名为 Path
查询路由谓词工厂
RemoteAddr路由谓词工厂<