姚刚,吴海莉,王从镔.浅析微服务架构API网关的作用[J].信息系统工程,2020(12):16-18.
目录 Table of Contents
阅读本论文后,主要讨论以下两点:
- API 网关的架构
- API 网关的选型
API 网关的架构
Core
- Core(核心网关)系统的功能主要是对客户请求的接收, 它将请求指向给上层的服务端,并且会把这些处理结果返回给客户端或下层服务端。
- 可以以集群的形式部署,需要额外的负载均衡器,反向代理连接业务集群。
- 可以实现核心的功能:认证鉴权、限流熔断、负载均衡、反向代理、服务编排、协议转换、日志记录、数据缓存、服务注册/发现和版本/灰度发布等。
Admin
- Admin(网关管理)系统负责配置系统的各种策略,如: 限流、缓存以及告警等基础信息。
- 可以以集群的形式部署,但是入口是统一的。
- 可以实现管理的功能:API 单个管理、API 分组管理、SDK/文档生成、访问配置、流控配置、协议转换配置、数据缓存配置和监控告警配置等。
Monitor
- Monitor(监控日志) 系统负责生成运维管理报表等。
- 可以以集群的形式部署,采集可以多个节点进行。
- 可以实现监控的功能:日志处理、生成报表和自动告警等。
持久层
管理库:记录管理信息
日志库:记录日志信息
Redis:缓存与限流
Zookeeper:服务注册与服务发现
OpenResty API Gateway
- 在 OpenResty API Gateway 中主要实现安全、限流、缓存、日志、监控和身份认证等功能,另外还可以实现制定服务的注册、路由重写和负载均衡等策略。
Aggr API Gateway
- 在 Aggr API Gateway 中可 以使用超时、缓存、熔断、重试、查询聚合等策略。
注:作者没有进一步阐述为什么需要分成两个网关,即 OpenResty API Gateway 和 Aggr API Gateway。
API 网关的选型
安全性
- 用户密码使用加盐 sha256 加密
- 租户密钥使用 Md5 加密
高可用
弹性伸缩
- k8s 副本伸缩
热更新
- MySQL 和 Redis 做数据同步
容灾备份
- MySQL 主从备份
高性能
高并发
- gin
大流量
- 限流、熔断、降级
扩展性
- 中间件的洋葱结构
生命周期管理
- 可参考 Uber Edge Gateway 的设计
总结
本文提出了微服务 API 网关的通用设计架构,并指出在技术选型过程中需要考虑安全性、高可用、高性能、扩展性和生命周期管理等问题。