Gateway网关是是所有微服务的统一入口, 网关的核心功能特性主要体现在请求路由,权限控制,限流三部分
ence/html/#the-addrequestheader-gatewayfilter-factory): 区分用户来源,给请求添加一些标识,一般通过添加新的请求头,全局染色
网关的分类及其技术选型
全局网关(接入层网关): 主要实现负载均衡、请求日志等,不和业务逻辑代码绑定
业务网关(微服务网关): 将请求转发到不同的业务/项目/接口/服务,包含一些业务逻辑代码
在SpringCloud中网关的实现主要包括四种,它旨在为微服务框架提供一种简单有效的统一的API路由管理方式

第一步: 新建一个SpringBoot工程如gateway模块, 引入网关依赖和nacos服务发现依赖
org.springframework.cloud spring-cloud-starter-gateway com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery 
第二步: 在gateway模块中编写启动类
@SpringBootApplication
public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class,args);
    }
}
 
编程式(更灵活): 在项目启动类上添加对应网关代码, 实现https://yupi.icu/yupi到http://yupi.icu/
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    return builder.routes()
        .route("toyupi", r -> r.path("/yupi")
               .uri("http://yupi.icu/"))
         .route("路由Id", r -> r.path("路由规则")
               .uri("路由的目标地址"))
         .route.......
        .build();
}
 
配置式(更直观): 编写基础配置和路由规则
# 快捷配置方式
spring:
  cloud:
    gateway:
      routes:
      - id: after_route
        uri: https://example.org # 路由到固定地址
        uri: lb://Nacos中注册的服务名称 # 路由到某个服务
        predicates: 
        - Cookie=mycookie,mycookievalue  # cookie里必须有mycookie且值是mycookievalue
# 完全展开配置方式        
spring:
  cloud:
    gateway:
      routes:
      - id: after_route
        uri: https://example.org
        predicates:
        - name: Cookie
          args:
            name: mycookie
            regexp: mycookievalue        
 
第一步: 客户端向网关发起请求,如果请求与Handler Mapping定义的路由匹配则将请求转发给Web Handler
第二步: 通过定义的过滤器链过滤用户请求,过滤器可以在代理请求之前或者之后执行
