开源微服务API网关,单核2万QPS,今年最值得学习的开源项目

第一部分:解决什么问题。

什么是微服务API网关?

API网关是上承前端用户,下接后端服务的咽喉之地,是所有客户端请求响应出入流量的必经之路。


微服务API网关有什么用?

它除了可以做最基础的反向代理之外,还可以处理通用的公共服务逻辑,如负载均衡、灰度发布、限流熔断、统一认证授权、可观测性、动态路由、协议转换、服务编排、流量镜像、健康检查、监控报警、安全防御等等等等。

说得这么抽象,有没有具体的场景呢?
对应到具体场景,举几个常见的例子。

场景一:负载均衡。

当服务器负载上升时,需要立即对系统资源进行容量评估,适当增加扩容服务器资源,让每台服务器可以平均承载分担请求压力,此时应该采用何种负载策略:轮询、随机还是哈希?如果你有API网关,在后台配置好,即可自动实现。


场景二:灰度发布。

上了一个新功能,需要每天自动放 5% 的流量,10天后再一次性全部放开给所有用户。在此期间,可以对新功能加以验证,并对性能和稳定性加以观测优化,提前发现问题、解决问题?如果你有API网关,在后台配置好,即可自动实现。


场景三:限流熔断。

双 11 即将来临,可能会出现流量大增,如果没有一定的过载保护策略机制,服务也将面临重大考验。希望实现系统状态不健康或超过阈值时,自动保护上游后端服务,触发限流限频或熔断机制,并即时报警,避免整个服务链条发生雪崩,此需求如何实现?如果你有API网关,在后台配置好,即可自动实现。


场景四:统一认证授权。

不少公司用户权限鉴权逻辑散落在各站点服务中,是否可以将目前基于角色的认证逻辑和对外开放平台所使用的 OAuth 授权认证完全抽离出来,统一前置至网关中?如果你有API网关,即可统一实现。

场景五:可观测性。

这么多站点,想知道每个站点的流量分布情况;这么多接口,想知道每个接口的处理时间;无数的报错,想知道异常的分布情况;无数的告警短信与邮件,想统一收口告警规则与策略...更重要的是,如何呈现统一的看板,实现相关指标的可视化呢?如果你有API网关,在后台配置配置即可。

既然API网关这么重要,有没有靠谱的,工业级的API网关可以“拿来主义”呢?

推荐一下,Apache APISIX,Apache基金会最快毕业项目、最活跃的开源API网关项目,个人觉得,它是今年最值得学习的开源项目。

第二部分:架构设计。

Apache APISIX使用了怎样的架构设计方案呢?

一句话概括,它使用了数据平面(data plane)与控制平面(control plane)分离的架构方案。

什么是数据平面与控制平面?

数据平面和控制平面,不是Apache APISIX第一次提出,它是计算机网络,报文路由转发里很成熟的概念:

数据平面(data plane):一般用来做快速转发。

控制平面(control plane):为快速转发提供必要的信息。

开源微服务API网关,单核2万QPS,今年最值得学习的开源项目

它的设计原则是:

(1)在一个路由网关里,转发是最重要的工作,它具备最高的优先级,数据平面(data plane)的设计核心就是高效转发,如何在最短的时间里处理最多的包,往往使用高效内存管理、队列管理、超时管理等技术实现;

(2)控制平面(control plane)则不然,它更偏向于控制与应用;

Apache APISIX的核心架构借鉴了类似的思路。

开源微服务API网关,单核2万QPS,今年最值得学习的开源项目

数据平面:以插件的方式,实现流控,认证,安全,日志等等众多的微服务网关核心功能。

控制平面:以服务与后台的方式,实现数据收集,命令下发,可视化工作台等功能。

画外音:插件的方式,使得用户可以快速配置需要的功能,并能够定制化自己期望的功能。

第三部分:性能。

通过插件实现了这么多功能,它对请求转发性能有多大影响呢?

开源微服务API网关,单核2万QPS,今年最值得学习的开源项目

可以看到:

(1)单核QPS能跑到1.8W+;

(2)延时在0.2ms左右,几乎可以忽略不计;

(3)除了传统的HTTP,还支持Dubbo,MQTT,gRPC等诸多协议;

(4)…

画外音:非常适合做微服务网关。

官网地址:https://apisix.apache.org/

第四部分:demo。

开源微服务API网关,单核2万QPS,今年最值得学习的开源项目

这是我觉得这个开源项目最帅气的地方,项目提供了非常完善的中文手册,能够帮助我们快速上手,快速体验:

(1)如何用几个命令快速安装APISIX;

(2)如何快速配置APISIX;

(3)如何测试并验证APISIX;

(4)OK,可以在后台查看并控制你的网关了;

体验之后,再阅读源码,更有感觉哟。

Git地址:https://github.com/apache/apisix

文档地址:

https://apisix.apache.org/zh/docs/apisix/getting-started

这个项目靠谱吗?有哪些公司在使用?

绝非KPI式开源项目,Apache APISIX已经在NASA、腾讯、华为、微博、网易、贝壳、360等公司有着广泛的使用,已然成为世界上最活跃的开源网关项目。

画外音:你没看错,就是美国航空航天局的那个NASA。

上一篇:安装原生zookeeper报错Address unresolved: 10.19.32.30:3888


下一篇:log4j2配置log4j2.xml不生效