ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-01-17 22:03:30  阅读:175  来源: 互联网

标签:网关 开源 API Apache 平面 APISIX


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

什么是微服务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):为快速转发提供必要的信息。

图片

它的设计原则是:

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

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

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

图片

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

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

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

第三部分:性能。

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

图片

可以看到:

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

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

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

(4)…

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

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

第四部分:demo。

图片

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

(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。

标签:网关,开源,API,Apache,平面,APISIX
来源: https://blog.csdn.net/Andrew_Chenwq/article/details/122549276

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有