网关,就是指一个流量的集中式出入口。而 API Gateway,顾名思义,就是在 Gateway 上再添加了一些 API 相关的功能后得到的东西。 具体而言,API Gateway 就是比普通的网关多干了一些以前我们在应用内部实现的事:身份认证,权限控制,基于来源的流量控制,日志服务等,甚至是直接在第七层魔改 HTTP 请求的内容。好处有:
功能 | 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 | 支持 | 不支持 | 不支持 |
场景 | Apisix QPS | Kong QPS | Apisix延迟 | Kong 延迟 |
---|---|---|---|---|
不开启插件 | 29968 | 14106 | 0.53 ms | 1.17 ms |
开启限流和prometheus插件 | 25134 | 2546 | 0.64 ms | 6.31 ms |
场景 | 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 的十倍