4

API网关选型调研

 3 years ago
source link: https://wakzz.cn/2021/03/06/%E6%9E%B6%E6%9E%84/API%E7%BD%91%E5%85%B3%E9%80%89%E5%9E%8B%E8%B0%83%E7%A0%94/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

API网关选型调研

祈雨的博客
2021-03-06
  • 稳定性、社区活跃: 一个开源工具的选型,性能是次要的,真正首要的是工具稳定可靠且开源社区持续维护
  • 控制台简单友好
  • 监控: 监控数据准实时,且清晰友好地展示指定时间区间的多维度数据(RPS、带宽流量、响应时间、HTTP状态码)
  • 路由匹配规则: 事实上域名匹配+路径匹配+方法匹配已经基本够用,如果需要灰度发布就再需要个Header匹配,其他再多再精细的匹配规则也仅仅是锦上添花
  • 鉴权认证: 绑定在路由维度上的鉴权认证,常用的鉴权方式有HMACBasic,另外需要对每个认证用户做权限控制,未授权的路由禁止调用
  • 配置热更新
  • 限流: 支持多个维度的限流方案,例如:调用方IP限流、调用方认证用户限流、API维度限流等
  • ip黑白名单
  • 负载均衡
  • 高性能
  • 自定义插件
  • Kong: 基于openresty+lua的开源网关,github上的star数遥遥领先
  • APISIX: 同样基于openresty+lua的开源网关,官方文档上的性能测试显示其单核性能远高于Kong
  • Tky: golang开源api网关

功能点 Kong APISIX Tky 社区活跃 高,Github有28K的Star 高,Github有4K的Star 高,Github有6K的Star 控制台 开源版不自带控制台,但有第三方开源控制台支持(konga) 自带控制台,但实际使用并不友好 官方控制台非开源收费 监控 基于prometheus的数据监控,展示route/service/total维度的RPS/带宽/响应时长等指标 基于prometheus的数据监控,展示route/service/total维度的RPS/带宽/响应时长等指标

路由匹配规则 Host+Path+Method+Header 精细化的路由规则匹配,且支持使用Nginx 所有内置变量做为路由的条件

鉴权认证 支持HMACJWTBasic等认证,支持route/service维度的权限控制 HMACJWTBasic等,但权限控制需要额外的服务来支持

配置热更新 支持 支持

限流 IP/认证用户等多维度限流 IP/认证用户等多维度限流

ip黑白名单 支持 支持

负载均衡 支持,且提供主动/被动健康检查 支持,且提供主动/被动健康检查

高性能 单核QPS1700(开启限流和 prometheus 插件) 单核QPS18000(开启限流和 prometheus 插件)

自定义插件 支持(lua),插件变动需要重启 支持(lua),插件变动支持热更新

进一步筛选

Kong与APISIX无论是底层原理还是功能实现都非常相近,且以上列出的重要功能点都基本实现了。但实际体验后个人感觉KONG上手更快易于理解,APISIX虽然号称性能更高,但对于我们的应用场景来说实际上单核QPS1700已经完全够用。

另外非常重要的路由授权的实现,APISIX需要额外的服务wolf来实现,且两者存在割裂感,远远不如Kong的使用友好。

如果对性能有极致的要求则使用APISIX,否则个人建议使用Kong。无论是上手易用性还是服务实现完整程度上,个人感觉Kong都略胜与APISIX。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK