文章简介

目前公司网关产品是基于Spring Cloud Gateway进行开发的,由于对性能的追求所以考虑改用其他框架进行重构。调研过很多的网关框架,进行比较后最终考虑Apisix,原因有如下。

Apache APISIX 是什么?

Apache APISIX 是 Apache 软件基金会下的云原生 API 网关,它兼具动态、实时、高性能等特点,提供了负载均衡、动态上游、灰度发布(金丝雀发布)、服务熔断、身份认证、可观测性等丰富的流量管理功能。我们可以使用 Apache APISIX 来处理传统的南北向流量,也可以处理服务间的东西向流量。同时,它也支持作为 K8s Ingress Controller 来使用。
性能对比

主要特性

多平台支持:APISIX 提供了多平台解决方案,它不但支持裸机运行,也支持在 Kubernetes 中使用,还支持与 AWS Lambda、Azure Function、Lua 函数和 Apache OpenWhisk 等云服务集成。
全动态能力:APISIX 支持热加载,这意味着你不需要重启服务就可以更新 APISIX 的配置。请访问为什么 Apache APISIX 选择 Nginx + Lua 这个技术栈?以了解实现原理。
精细化路由:APISIX 支持使用 NGINX 内置变量做为路由的匹配条件,你可以自定义匹配函数来过滤请求,匹配路由。
运维友好:APISIX 支持与以下工具和平台集成:HashiCorp Vault、Zipkin、Apache SkyWalking、Consul、Nacos、Eureka。通过 APISIX Dashboard,运维人员可以通过友好且直观的 UI 配置 APISIX。
多语言插件支持:APISIX 支持多种开发语言进行插件开发,开发人员可以选择擅长语言的 SDK 开发自定义插件。

主要概念

因为追求性能上面的突破,所以一开始选型就看到了Openresty,经过翻阅资料后发现是基于Nginx的,Nginx本身有着不错的性能,再次经过改装后成为OpenResty,再去查找资料发现Openresty功能非常强的并发,但是对于直接我用Java的上手好像还需要花点时间,并且我需要考虑有一套API和我们之前Java版本的代码进行数据上的交互,那么我还需要最好有API提供的并且是HTTP方便对接。

众里寻他千百度,网关就在灯火阑珊处。对没错,发现了一个国人开源的apisix网关,并且捐助到了Apache,再去查看他的文档比较完备。非常对我的胃口,我知道假如没有一个很好的框架支撑,我的重构之路战线会拉的很长,所以工欲善其事必先利其器。

拓展能力

基于apisix本身就有很多的默认插件使用,非常丰富和强大。假如自己业务一些特殊的,开发者可以进行自定义开发,并且支持的语言也很丰富,从官网了解到的就支持Java、Python、Go、JavaScript是不是很强大,当然本次我为了性能还是默认Lua去进行业务插件开发,这个看个人选择了。

社区活跃度

通过几天摸索,官网提供了邮件订阅,以及几个官方的沟通渠道,比如twitter,slack当然国内用户也有QQ群。以上几项我都加了,最后觉得还是slack比较方便,这里有国内外的一些开发者,很好的进行问题沟通,当然仓库代码issus也是一个不错的地方,总体比较满意。

还有一点是有双周社区在线会议,可以听听大佬们的进度和计划,非常喜欢这种模式,比起国内不停的卷这样的开发方式简直是梦寐以求的。

开源性

毋庸置疑,非常满足,可以满足商业用途。