spring cloud gateway的工作原理
spring cloud gateway是spring官方基于spring5.0,spring boot2.0和project reactor等技术开发的网关,spring cloud gateway旨在为微服务架构提供简单,有效且统一的api路由管理方式。spring cloud gateway作为spring cloud 生态系统中的网关,目标是替代netflix zuul,其不仅提供统一的路由方式,并且还基于filter链的方式提供了网关基本的功能,例如:安全,监控、埋点,限流等。
spring cloud gateway 的核心处理流程如下图,gateway的客户端回向spring cloud gateway发起请求,请求首先会被httpwebhandleradapter进行提取组装成网关的上下文,然后网关的上下文会传递到dispatcherhandler。dispatcherhandler是所有请求的分发处理器,dispatcherhandler主要负责分发请求对应的处理器,比如将请求分发到对应routepredicatehandlermapping(路由断言处理器映射器)。路由断言处理映射器主要用于路由的查找,以及找到路由后返回对应的filteringwebhandler。filteringwebhandler主要负责组装filter链表并调用filter执行一系列filter处理,然后把请求转到后端对应的代理服务处理,处理完毕后,将response返回到gateway客户端。
在filter链中,通过虚线分割filter的原因是,过滤器可以在转发请求之前处理或者接收到被代理服务的返回结果之后处理。所有的pre类型的filter执行完毕之后,才会转发请求到被代理的服务处理。被代理的服务把所有请求完毕之后,才会执行post类型的过滤器。