简介
Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Netflix Zuul网关。网关作为流量入口,在微服务系统中有着非常重要的作用,网关常见的功能有路由转发、权限校验、限流控制等。
用户的请求首先经过gateway,根据路径由gateway的predict 去断言进到哪一个 router, router经过各种过滤器处理后,最后路由到具体的业务服务,如图:
核心处理流程
Spring Cloud Gateway 的核心处理流程如下,Gateway的客户端回向Spring Cloud Gateway发起请求,请求首先会被HttpWebHandlerAdapter进行提取组装成网关的上下文,然后网关的上下文会传递到DispatcherHandler。DispatcherHandler是所有请求的分发处理器,DispatcherHandler主要负责分发请求对应的处理器,比如将请求分发到对应RoutePredicateHandlerMapping(路由断言处理器映射器)。路由断言处理映射器主要用于路由的查找,以及找到路由后返回对应的FilteringWebHandler。FilteringWebHandler主要负责组装Filter链表并调用Filter执行一系列Filter处理,然后把请求转到后端对应的代理服务处理,处理完毕后,将Response返回到Gateway客户端。
上代码
工程目录结构如下:
一、新建spring父项目
新建maven项目,pom文件如下:
<groupId>org.springframework.boot
<artifactId>spring-boot-starter-parent
<version>2.2.2.RELEASE
<relativePath/>
<java.version>1.8
<spring-cloud.version>Hoxton.RELEASE
<groupId>org.springframework.cloud
<artifactId>spring-cloud-dependencies
<version>${spring-cloud.version}
<type>pom
<scope>import
</dependencyManagement>
二、添加eureka模块
三、添加两个server模块
四、添加gateway模块