gateway

举报
周杰伦本人 发表于 2022/06/24 17:01:35 2022/06/24
【摘要】 gateway 为什么要用网关 网关的作用 总结 ❤️ 感谢大家 gateway 为什么要用网关如果不用网关客户端需要发起多次请求,增加网络通信的成本以及客户端处理的复杂性服务的鉴权会分布在每个微服务中处理,客户端对于每个服务的调用都需要重复鉴权。可能不同服务采用不同的协议,比如HTTP RCP,客户端需要调用多个服务,需要对不同协议进行适配。 网关的作用针对所有请求进行统一鉴权,限流,熔...

gateway

为什么要用网关

如果不用网关

  • 客户端需要发起多次请求,增加网络通信的成本以及客户端处理的复杂性
  • 服务的鉴权会分布在每个微服务中处理,客户端对于每个服务的调用都需要重复鉴权。
  • 可能不同服务采用不同的协议,比如HTTP RCP,客户端需要调用多个服务,需要对不同协议进行适配。

网关的作用

  • 针对所有请求进行统一鉴权,限流,熔断,日志。
  • 协议转换。针对多种不同协议,在网关层可以统一处理后以HTTP对外提供服务。
  • 统一错误码处理。
  • 请求转发,并且可以基于网关实现内外网的隔离。

在网关层进行请求拦截,获取请求中附带的用户身份信息,调用统一认证中心对请求进行身份认证,在确认了身份之后再检查是否有资源的访问权限。

网关的本质是对请求进行路由转发以及对请求前置和后置的过滤。

  • 请求的转发和路由:接收客户端的所有请求,并将请求转发到后端服务中,提供统一的业务接口给客户端
  • 过滤:网关会拦截所有的请求来完成一系列的横切工作,比如鉴权,限流。

配置文件

spring:
  cloud:
    gateway:
      routes:
        - id: define_filter
          predicates:
            - Path=/gateway/**
          filters:
            - name: xppDefine
              args:
                name: xpp
            - name: RequestRateLimiter
              args:
                denyEmptyKey: false
                emptyKeyStatus: SERVICE_UNAVAILABLE
                keyResolver: '#{@ipAddressKeyResolver}'
                redis-rate-limiter.replenishRate: 1
                redis-rate-limiter.burstCapacity: 2
            - StripPrefix=1
          uri: http://localhost:8080/say
  • id:自定义路由ID 保持唯一。
  • uri:目标服务地址,支持普通URI以及lb://应用注册服务名称,后者表示从注册中心获取集群服务地址。
  • predicates:路由条件,根据匹配的结果决定是否执行该请求路由。
  • filters:过滤规则,包含pre和post过滤。其中StripPrefix=1,表示gateway根据该配置的值去掉URL路径的部分前缀,1表示去掉一个前缀,即在转发的目标URI中去掉gateway

gateway相关概念:

  • 路由(Route):它是网关的基本组件,由ID,目标URI,predicates,filters集合组成
  • 谓词(Predicate):java8进入的函数式接口,提供断言功能。可以匹配HTTP请求中的任何内容。如果Predicate集合判断结果为true,则意味着请求会被当前Router进行转发。
  • 过滤器(Filter):为请求提供前置和后置过滤

当客户端发送一个请求到网关时,网关会根据一系列Predicate的匹配结果决定访问哪个Route路由,然后过滤器链进行请求的处理,过滤器链可以在请求发送到后端服务器前和后执行。

这就是网关的大体介绍了,网关可以鉴权、熔断、限流、路由转发。其实网关最重要的就是路由和谓词两部分。

总结

这篇文章我们讲了为什么需要用网关,以及网关在微服务中的作用是什么,希望这篇文章能让你更好的了解网关。

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  1. 欢迎关注我❤️,点赞👍🏻,评论🤤,转发🙏
  2. 关注盼盼小课堂,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。