1、什么是APISIX?
APISIX 是一个高性能、可扩展的微服务API网关,基于 nginx(openresty)和 Lua 实现功能,借鉴了Kong的思路,将Kong底层的关系型数据库(Postgres)替换成了NoSQL型的 etcd,这使得 APISIX 相较于 Kong 在性能上有了很大提升,在启用各类插件的情况下,Apache APISIX 的性能据说是 Kong 的 10 倍,极具吸引力。
且相较于 Kong 来说,源码更为简洁,二次开发难度更低,但是相对的,开源时间较短,在插件功能完备性上不如Kong,比如缺少关于灰度相关的插件,但是其已纳入Apache 基金会孵化,社区也较为活跃,后期的发展空间较为可观。
和传统的API网关相比,APISIX 和 Kong 一样也是通过插件的形式来提供负载均衡、日记记录、身份鉴权、流量控制等功能。
2、与 Kong的比较
两者优缺点:
产品/特性 | 优势 | 劣势 | 二次开发难度 |
---|---|---|---|
Kong | 开源社区活跃、产品思路清晰 | 代码量大、封装多、依赖关系型数据库、底层架构跟不上趋势 | 支持、难度大 |
APISIX | 基于etcd、代码易读、插件热加载 | 开源时间短 | 支持、难度小 |
从 API 网关核心功能点出发:
功能 | Apache APISIX | Kong |
---|---|---|
动态上游 | 支持 | 支持 |
动态路由 | 支持 | 支持 |
健康检查和熔断器 | 支持 | 支持 |
动态SSL证书 | 支持 | 支持 |
七层和四层代理 | 支持 | 支持 |
分布式追踪 | 支持 | 支持 |
自定义插件 | 支持 | 支持 |
REST API | 支持 | 支持 |
CLI | 支持 | 支持 |
详细比较:
功能 | Apache APISIX | Kong |
---|---|---|
项目归属 | Apache 软件基金会 | Kong Inc. |
是否开源 | Apache 2.0 协议 | Apache 2.0 协议(社区版) |
核心技术 | Nginx + Lua | Nginx + Lua |
数据存储 | etcd | Postgres、Cassandra |
部署模式 | 单机和集群 | 单机和集群 |
支持yaml | Yes | Yes |
交流渠道 | 邮件, 微信群, QQ群, GitHub, Slack, meetup | GitHub, Freenode, 论坛 |
单核 CPU, QPS(开启限流和Prometheus 插件) | 18000 | 1700 |
延迟 | 0.2 ms | 2 ms |
支持Dubbo代理 | Yes | No |
配置回滚 | Yes | No |
支持生命周期的路由 | Yes | No |
插件热加载 | Yes | No |
用户自定义负载均衡算法和路由 | Yes | No |
REST API <--> gRPC 转码 | Yes | No |
支持Tengine | Yes | No |
支持MQTT协议 | Yes | No |
配置生效时间 | 事件驱动, < 1ms | 轮询, 5 seconds |
Dashboard | Yes | No |
IdP认证对接 | Yes | No |
配置中心高可用(HA) | Yes | No |
在指定的时间窗口内限速 | Yes | No |
支持nginx变量作为路由条件 | Yes | No |
网友评论