什么是 API网关
API网关是一个服务器,是系统的唯一入口. 从面向对象设计的角度看,它与外观模式类似.
API网关封装了系统内部架构,为每个客户端提供一个定制的API.它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、协议转换、限流熔断、静态响应处理.
API网关方式的核心要点是: 所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能. 通常,网关也是提供REST/HTTP
的访问API.
网关应该具有那些能力
微服务网关作为微服务后端服务的统一入口, 它可以统筹管理后端服务,主要分为数据平面
和控制平面
:
数据平面
主要功能是接入用户的HTTP请求和微服务被拆分后的聚合.使用微服务网关统一对外暴露后端服务的API和契约,路由和过滤功能正是网关的核心能力模块.另外,微服务网关可以实现拦截机制和专注跨横切面的功能,包括协议转换、安全认证、熔断限流、灰度发布、日志管理、流量监控等.
控制平面
主要功能是对后端服务做统一的管控和配置管理.例如,可以控制网关的弹性伸缩; 可以统一下发配置; 可以对网关服务添加标签; 可以在微服务网关上通过配置Swagger功能统一将后端服务的API契约暴露给使用方, 完成文档服务, 提高工作效率和降低沟通成本.
- 限流
- 熔断
- 安全
- 缓存
- 重试
- 负载均衡
- 反向路由
- 认证,鉴权
- 日志收集
- 监控
- IP列表:黑名单,白名单
- 流量染色
- 协议转换
- API管理
下图 是 Kong 官方 的一个简单架构图.
常见的开源网关对比
功能 | Apache APISIX | Kong | Tyk |
---|---|---|---|
项目归属 | Apache | Kong Inc | |
技术架构 | Nginx + etcd | Nginx + postgres | Golang + Redis |
部署模式 | 单机&集群 | 单机&集群 | 单机&集群 |
单核Qps(开启限流和 prometheus) | 18,000 | 1700 | |
平均延时 | 0.2ms | 2ms | |
配置生效时间 | 时间通知, 低于 1ms | 定时轮询 5s | |
支持配置回滚 | [x] | [] | |
热插件更新 | [x] | [] | |
用户自定义负载均衡算法,路由 | [x] | [] | [] |
控制台 | [x] | [] | [] |