Skip to content

Latest commit

 

History

History
85 lines (51 loc) · 2.87 KB

File metadata and controls

85 lines (51 loc) · 2.87 KB

网关

使用场景

  • 没有网关时带来的问题

    • 增加系统的复杂性,客户端只能自己做逻辑来访问不同的服务
    • 权限问题,不同的用户角色都有自己的权限。将此业务逻辑写在服务端会使得服务端业务耦合
    • 协议问题,不同的服务可能采用不同的编程语言编写
  • 网关带来的好处

    • 权限验证、流量限制、日志打点、缓存
    • 安全(IP 过滤等)
    • 协议转换,针对后端多种不同的协议,在网管层统一处理之后以 http 对外提供服务
    • 提供统一的错误码
  • 网关应用

    • 鉴权认证(统一认证中心)

      • 身份认证
      • 访问权限认证
    • 灰度发布(分流引擎)

      只升级部分服务,让一部分用户继续使用老版本,一部分用户使用新版本,如果用户对于新版本没什么意见,则将所有用户迁移到新版本上来

技术选型

  • OpenResty 是由 NgnixLua 集成的一个高性能 Web 应用服务器

    • 生命周期
    image.png
  • Zuul

    • Netflix 的开源的微服务网管
    • Zuul 的核心由一系列的过滤器组成,它定义了四种标准类型的过滤器,这个会对应请求的整个生命周期
    1.png
  • Gateway

    • Spring 提供的 API 网关技术,目的是取代 Zuul

    • Zuul 存在的缺陷

      1. Zuul 1.x 采用的是传统的 thread per connection 的方式来处理请求,因此性能不好
      2. Zuul 2.x 虽然是一个高性能的网关,但是由于发布时间的原因,Spring Cloud 并没有集成它
    • Spring Cloud Gateway 是依赖于 Spring Boot 2.0Spring WebFluxProject Reactor等技术开发的网关,不仅提供了统一的路由请求方式,还基于过滤链的方式提供了网管最基本的功能

    • Gateway 的请求处理流程

      1.png

    PredicateHttp 请求的属性对应的 PredicateRoutePredicateFactory

    1.png

    Filter

    类型:(1)Pre 型过滤器 (2)Post类型过滤器

    Filter实现方式:(1)Gateway 只会应用到单个路由或者一个分组的路由 (2)Global Filter 会应用到所有的路由

    Filter 实现类

    1.png
  • NacOS 集成

    1.png

  • Sentinel

    1.png
    • 自定义异常