本文主要讨论网关的相关概念,具体关注如下几个问题:

  • 概念
    • 什么是网关
  • 使用场景
    • 网关在有赞技术生态系统中的使用场景是什么?
  • 网关的优势
    • 网关系统能给我们带来哪些显而易见的好处?
  • 网关的劣势和局限性
    • 网关系统流量不断上涨的过程中,有遇到过哪些棘手问题?
    • 一个请求通过网关,它会有多少额外的性能消耗?
  • 网关的具体实现
    • 如果我要设计一个网关系统,有哪些值得推荐的设计思路?
    • 在网关这样一个高并发系统中,有没有遇到一些有意思的并发问题?
  • 注意事项
    • 网关系统如何保障服务的可靠性?

网关的具体实现

网关架构

有赞Carmen整个网关系统拆分为3个子系统,都由java实现:

  • 控制台,负责API的创建与管理。
  • 核心系统,负责接收、分发请求并且返回结果。
  • 监控系统,负责呈现API的各项监控指标。

youzan-carmen

整个网关系统需要完成下列目标:

  • 提供API管理平台,包括API的配置、沙箱测试、发布、修改、下线。
  • 对外统一使用http协议,网关屏蔽了后端协议的差异性,后端可以专注于提供服务,无需考虑协议的转换。
  • 保护后端服务,提供完善的流控、服务降级、ACL、鉴权机制。
  • 提供API层面的监控与报表,做到对业务自身的掌控,以及对用户行为等进行分析。
  • 为开放平台的持续完善提供基础服务。

网关核心系统

主要功能模块:

  • 请求上下文数据准备模块
  • 安全校验模块
  • 流控,服务降级模块
  • 鉴权模块
  • 缓存模块
  • 后端调用模块,超时控制
  • 结果处理模块
  • 监控数据收集模块

youzan-carmen

控制台系统

控制台的主要功能点:

  • API的创建、功能测试、发布、编辑、自动生成文档
  • API流控、ACL的配置
  • 本地缓存的管理
  • 用户权限管理
  • 鉴权相关的配置与管理

监控系统

监控系统的主要功能点:

  • 网关自身有个针对API层面的监控系统,主要功能如下:
    • 统计每个请求经过每个Filter的时间,这可以让我们监控到每个阶段的性能,帮助我们进行优化和排查问题。
    • 统计API的调用量、成功次数、异常次数。
    • 实时统计调用量、错误量,异常量的top10。
  • 系统监控
    • 主要针对内存、磁盘、CPU等指标,它们超出阈值的之后会自动触发告警,这时相关负责人会及时处理异常。

参考资料