惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
N
Netflix TechBlog - Medium
G
Google Developers Blog
L
LangChain Blog
腾讯CDC
大猫的无限游戏
大猫的无限游戏
U
Unit 42
Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
The GitHub Blog
The GitHub Blog
博客园_首页
GbyAI
GbyAI

祈雨的笔记

安全多方计算MPC spark原理解析 kueue执行源码分析 spark on k8s执行源码分析 spark-operator源码解析 系统压测遇到的缓存击穿问题 我的世界PC与安卓联机 蚂蚁金服流量投放平台的AIG改造 G1大对象致Old区占用率高 日志打印导致接口响应率下跌分析 Groovy加载类导致OOM分析 ERROR日志打印导致CPU满载 记OceanBase死锁超时 应用发版期间服务响应超时 Ark Serverless初探 系统优化复盘一二三 The user specified as a definer does not exist Kong网关初探 CPU火焰图常用工具 配置中心选型调研 root操作Nginx导致用户组错误 基于Proxifier使用代理 FastJSON字段智能匹配踩坑 Nacos初探 记一次Nginx服务器CPU满荷载故障 基于券系统分库分表的思考 limit不参与SQL成本计算致索引失效 Linux常用性能监控命令 golang低版本http2偶现400 hostname in certificate didn't match
API网关选型调研
祈雨的笔记 · 2021-03-06 · via 祈雨的笔记

需求

  • 稳定性、社区活跃: 一个开源工具的选型,性能是次要的,真正首要的是工具稳定可靠且开源社区持续维护
  • 控制台简单友好
  • 监控: 监控数据准实时,且清晰友好地展示指定时间区间的多维度数据(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。