对比微服务网关 Kong 和 Apisix
什么是微服务网关?
网关,就是指一个流量的集中式出入口。而 API Gateway,顾名思义,就是在 Gateway 上再添加了一些 API 相关的功能后得到的东西。 具体而言,API Gateway 就是比普通的网关多干了一些以前我们在应用内部实现的事:身份认证,权限控制,基于来源的流量控制,日志服务等,甚至是直接在第七层魔改 HTTP 请求的内容。好处有:
- 把这些功能都从微服务层抽离到了网关层,降低了应用层的复杂度。
- 可以将后端微服务的 API 进一步封装成粗粒度 API,降低客户端的请求次数。
- 可以将后端 API 封装成更通用的格式,保证后端 API 变动不会影响客户端
- 其他
对比Kong 和 Apisix
核心功能覆盖
功能 | Apisix | Kong |
---|---|---|
动态上游 | 支持 | 支持 |
动态路由 | 支持 | 支持 |
健康检查和熔断器 | 支持 | 支持 |
动态SSL证书 | 支持 | 支持 |
七层和四层代理 | 支持 | 支持 |
分布式追踪 | 支持 | 支持 |
自定义插件 | 支持 | 支持 |
REST API | 支持 | 支持 |
CLI | 支持 | 支持 |
多角度对比
功能 | Apisix | Kong | Tyk |
---|---|---|---|
部署模式 | 单机和集群 | 单机和集群 | 单机和集群 |
数据存储 | etcd | Postgres或者Cassandra | Redis |
是否开源 | Apache 2.0 | Apache 2.0 | MPL |
核心技术 | Nginx Lua | Nginx Lua | Golang |
私有部署 | 支持 | 支持 | 支持 |
自定义插件 | 支持 | 支持 | 支持 |
社区活跃度 | 高 | 高 | 高 |
支持yaml | 支持 | 支持 | 不支持 |
对接外部 IdP | 支持 | 不支持 | 不支持 |
压测对比
- 平台:阿里云8C32G
只开启一个Worker
场景 | Apisix QPS | Kong QPS | Apisix延迟 | Kong 延迟 |
---|---|---|---|---|
不开启插件 | 29968 | 14106 | 0.53 ms | 1.17 ms |
开启限流和prometheus插件 | 25134 | 2546 | 0.64 ms | 6.31 ms |
开启4个Worker
场景 | Apisix QPS | Kong QPS | Apisix延迟 | Kong 延迟 |
---|---|---|---|---|
不开启插件 | 88369 | 43224 | 0.176 ms | 0.376 ms |
开启限流和prometheus插件 | 72767 | 7353 | 0.22 ms | 2.19 ms |
总结
通过性能测试可以看到,在不开启插件的情况下,Apache APISIX 的性能(QPS 和延迟)是 Kong 的2倍,但开启了两个常用插件后,性能就是 Kong 的十倍