SpringCloud学习笔记day4 (Gateway快速入门)

        1 Gateway介绍

       gateway是网关的英文名称,又叫做网间连接器、协议转换器。网关是在采用不同体系结构或协议的网络之间进行互通时,用于提供协议转换、路由选择、数据交换等网络兼容功能的设施。出于安全考虑,一切请求都应该需要先经过网关,再进入服务器。

网关的作用:
1.对用户请求做身份认证、权限校验
2.将用户请求路由到微服务,并实现负载均衡
3.对用户请求做限流

​        2 搭建网关服务

1. 创建新的module,引入SpringCloudGateway的依赖和nacos的服务发现依赖:

     <!--nacos服务注册发现依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--网关gateway依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

2.新建application.yml文件并且编写路由配置及nacos地址:

server:
  port: 10010  # 网关端口
spring:
  application:
    name: gateway # 服务名称
  cloud:
    nacos:
      server-addr: nacos:8858 # nacos地址
    gateway:
      routes:
        - id: user-service # 路由标示,必须唯一
          uri: lb://userservice # 路由的目标地址
          predicates: # 路由断言,判断请求是否符合规则
            - Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合

        3 路由断言工厂Route Predicate Factory

        1 网关路由可以配置的内容包括:
● 路由id: 路由唯- -标示
● uri: 路由目的地,支持Ib和http两种
● predicates: 路由断台,判断请求是否符合要求,符合则转发到路由A的地
● filters: 路由过滤器,处理请求或响应

        2 补充说明

● 我们在配置文件中写的断 言规则只是字符串,这些字符串会被Predicate Factory读取并处理,转变为路由判断的
条件
● 例如Path=/user/**是按照路径匹配,这个规则是由
org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory类米处理的
● 像这样的断 工厂在SpringCloudGateway还有十几个

Spring提供了11种基本的Predicate工厂:

 小结

● PredicateFactory 的作用是什么?
读取用户定义的断言条件,对请求做出判断
● Path=/user/**是什么含义?
路径是以/user开头的就认为是符合的

        4 路由过滤器GatewayFilter

        GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理,图解如下所示:

         5 过滤器工厂GatewayFilterFactory

Spring提供了31种不同的路由过滤器工厂,可以在官方文档中查看。例如:

● 过滤器的作用是什么?
①对路由的请求或响应做加工处理,比如添加请求头
②配置在路由下的过滤器只对当前路由的请求生效
● defaultFilters的作用是什么?
①对所有路由都生效的过滤器 

全局过滤器 GlobalFilter

全局过滤器的作用也是处理一切进入网关的请求和微服务响应,与GatewayFilter的作用一样。
区别在于GatewayFilter通过配置定义,处理逻辑是固定的。而GlobalFilter的逻辑需要自已写代码实现。
定义方式是实现GlobalFilter接口。

● 全局过滤器的作用是什么?
对所有路由都生效的过滤器,并且可以白定义处理逻辑
● 实现全局过滤器的步骤?
①实现GlobalFilter接口
②添加@Order注解或实现Ordered接口
③编写处理逻辑 

过滤器执行顺序

请求进入网关会碰到三类过滤器:当前路由的过滤器、DefaultFilter 、GlobalFilter
请求路由后,会将当前路由过滤器和DefaultFilter、GlobalFilter合并到一个过滤器链(集合)中,排序后依次执行每个过滤器

●每一个过滤 器都必须指定- -个int类型的order值,order 值越小,优先级越高,执行顺序越靠前。
●GlobalFilter 通过实现Ordered接口,或者添加@Order注解来指定order值,由我们自已指定
●路由过滤 器和defaultFilter的order由Spring指定,默认是按照声明顺序从1递增。
当过滤器的order值一样时, 会按照defaultFilter >路由过滤器> GlobalFilter 的顺序执行。

        5 跨域问题处理

跨域:域名不一致就是跨域,主要包括:
●  域名不同: www.taobao.com 和www.taobao.org 和www.jd.com 和miaosha.jd.com
●  域名相同, 端口不同: localhost:8080 和localhost8081
跨域问题:浏览器禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截的问题
解决方案: CORS

 网关处理跨域采用的同样是CORS方案,并且只需要简单配置即可实现,如下图所示:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值