本文主要讨论网关的相关概念,具体关注如下几个问题:
- 概念
- 什么是网关
- 使用场景
- 网关在有赞技术生态系统中的使用场景是什么?
- 网关的优势
- 网关系统能给我们带来哪些显而易见的好处?
- 网关的劣势和局限性
- 网关系统流量不断上涨的过程中,有遇到过哪些棘手问题?
- 一个请求通过网关,它会有多少额外的性能消耗?
- 网关的具体实现
- 如果我要设计一个网关系统,有哪些值得推荐的设计思路?
- 在网关这样一个高并发系统中,有没有遇到一些有意思的并发问题?
- 注意事项
- 网关系统如何保障服务的可靠性?
网关的具体实现
网关架构
有赞Carmen整个网关系统拆分为3个子系统,都由java实现:
- 控制台,负责API的创建与管理。
- 核心系统,负责接收、分发请求并且返回结果。
- 监控系统,负责呈现API的各项监控指标。
整个网关系统需要完成下列目标:
- 提供API管理平台,包括API的配置、沙箱测试、发布、修改、下线。
- 对外统一使用http协议,网关屏蔽了后端协议的差异性,后端可以专注于提供服务,无需考虑协议的转换。
- 保护后端服务,提供完善的流控、服务降级、ACL、鉴权机制。
- 提供API层面的监控与报表,做到对业务自身的掌控,以及对用户行为等进行分析。
- 为开放平台的持续完善提供基础服务。
网关核心系统
主要功能模块:
- 请求上下文数据准备模块
- 安全校验模块
- 流控,服务降级模块
- 鉴权模块
- 缓存模块
- 后端调用模块,超时控制
- 结果处理模块
- 监控数据收集模块
控制台系统
控制台的主要功能点:
- API的创建、功能测试、发布、编辑、自动生成文档
- API流控、ACL的配置
- 本地缓存的管理
- 用户权限管理
- 鉴权相关的配置与管理
监控系统
监控系统的主要功能点:
- 网关自身有个针对API层面的监控系统,主要功能如下:
- 统计每个请求经过每个Filter的时间,这可以让我们监控到每个阶段的性能,帮助我们进行优化和排查问题。
- 统计API的调用量、成功次数、异常次数。
- 实时统计调用量、错误量,异常量的top10。
- 系统监控
- 主要针对内存、磁盘、CPU等指标,它们超出阈值的之后会自动触发告警,这时相关负责人会及时处理异常。
参考资料
文档信息
- 本文作者:Bob.Zhu
- 本文链接:https://adolphor.github.io/2018/11/24/things-about-net-gateway/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)