在40岁老架构师 尼恩的读者交流群(50+)中,很多小伙伴拿到一线互联网企业如阿里、网易、有赞、希音、百度、滴滴的面试资格。
最近,尼恩指导一个小伙伴简历,写了一个《高并发网关项目》,此项目帮这个小伙拿到 字节/阿里/微博/汽车之家 面邀, 所以说,这是一个牛逼的项目。
为了帮助大家拿到更多面试机会,拿到更多大厂offer。
尼恩决定:给大家出一章视频介绍这个项目的架构和实操,《33章:10Wqps 高并发 Netty网关架构与实操》,预计月底发布。然后,提供一对一的简历指导,让你简历金光闪闪、脱胎换骨。
前面梳理了
- 《日均数十亿访问,个推API网关如何架构?》
- 《工业级Netty网关,京东是如何架构的?》
- 《2亿用户,B站API网关如何架构?》
- 《100万级连接,石墨文档WebSocket网关如何架构?》
- 《单体120万连接,小爱网关如何架构?》
- 《亿级长连接,淘宝接入层网关的架构设计》
- 《100万级连接,爱奇艺WebSocket网关如何架构》
- 《日200亿次调用,喜马拉雅网关的架构设计》
- 《千万级连接,知乎如何架构长连接网关?》
- 《日流量200亿,携程网关的架构设计》
除了以上的10个案例,这里,尼恩又找到一个漂亮的生产级案例:《企业级API网关,金蝶是如何架构的?》。
这些案例,并不是尼恩的原创。这些案例,仅仅是尼恩在《33章:10Wqps 高并发 Netty网关架构与实操》备课的过程中,在互联网查找资料的时候,收集起来的,供大家学习和交流使用。
最新《尼恩 架构笔记》《尼恩高并发三部曲》《尼恩Java面试宝典》的PDF,请到公号【技术自由圈】获取
作者:金蝶云社区shawyen
许多开发者可能已经编写了许多 API 接口,但未必了解或接触过API网关的功能与作用。
在大多数情况下,我们的 API 都是“裸奔”在外,在高流量,高并发等场景下,可能会轻易导致服务异常。在这种情况下,网关就应运而生,为我们的系统提供保护!
注意:请点击图像以查看清晰的视图!
API 网关是一种服务器,作为应用程序编程接口 (API) 的入口点,用于接收和处理来自外部应用程序的请求,并提供适当的响应。可以将其视为一个管理 API 访问的中间件,在请求和响应之间进行转换、路由、安全检查和其他处理。
如果将 API 网关比喻为地铁的进站口,那么它可以更好地理解其重要作用。就像地铁的进站口一样,API 网关是所有流量进入系统的入口点,需要进行安全检查和身份验证,以确保只有授权的用户和应用程序可以访问 API。
当系统中的流量超过 API 的承受能力时,API 网关可以执行限流操作,以确保系统的稳定性和可靠性。这可以通过减少同时连接的数量或限制请求的速率来实现。API 网关还可以执行其他任务,如日志记录、监控和分析,以便更好地了解应用程序的使用情况和性能。
因此,API 网关对于保障应用程序的平稳运行和安全稳定性至关重要。它充当着整个系统的流量大门,管理着所有 API 访问,确保只有经过授权的请求才能进入系统,并提供适当的响应。
网关作为一个如此重要作用的产品,基本上各大互联网公司都会有网关这个中间件,金蝶也不例外。
在苍穹云基础平台部中,有一个名为**KCGW(Kingdee-Cloud-API-Gateway)**的网关组件,它是一款全动态、高性能的自研企业级 API 网关,提供了基础的反向代理、负载均衡、动态路由、服务限流、服务熔断、身份认证、可观测性等功能。
注意:请点击图像以查看清晰的视图!
KCGW 是基于 Golang+etcd 实现的云原生网关,采用数据面与控制面分离的架构,控制面下发规则,数据面处理规则。
注意:请点击图像以查看清晰的视图!
在 KCGW 中,一切都是动态的。
配置、路由规则、插件等都是以毫秒级热更新热加载至内存的,无需重启服务就可以持续更新配置和插件。
KCGW 还引入了 RadixTree 压缩前缀树来作为高性能路由的保障,大家看看路由性能压测数据就知道它有多强悍了。
路由性能压测数据1
路由性能压测数据2
下面我们将简要说明如何使用 KCGW,作为服务的流量保护伞。
假设我们作为 API 发布者,场景是API发布者如何将API发布到网关。
新建服务分组
API 分组可以理解为同一业务 API 的集合,API 开发者以 API 分组为单位,管理分组内的所有 API。
新建服务分组
新建API并发布
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,应用将自身的服务能力封装成 API,并通过 API 网关开放给用户调用。
创建完对应的 API 分组后,我们需要定义 API 的请求、后端信息,并设置对应的认证、流量控制等策略。
创建API的方式有两种:
1)可以通过在界面上定义并创建API;
2)也支持通过swagger来批量导入。
本次我们通过前一种方式来创建API。
新建应用
一个应用(APP)可以定义 API 的调用者身份。一个 API 可以被多个应用授权,同样,多个 API 也可以被同一个应用授权。
我们可以把**“应用”理解为API的消费者**,创建完成后,就可以进行 API 的授权调用测试了!
其他功能
作为一款企业级网关,KCGW 不仅支持上述功能,还提供
- 环境管理
- 多租户
- 多区域
- API 分组管理
- API 的授权订阅
- Swagger 接口的导入导出
- 配额管理
- 限流熔断
- 可观测性
- 调用链等
最后,我们再提供一下API的申请和使用流程
-
租户内调用
-
跨租户调用
租户内调用流程如下:
注意:请点击图像以查看清晰的视图!
跨租户调用流程如下:
注意:请点击图像以查看清晰的视图!
架构之路,充满了坎坷。
架构和高级开发不一样,架构问题是open/开放式的,架构问题是没有标准答案的。
正由于这样,很多小伙伴,尽管耗费很多精力,耗费很多金钱,但是,遗憾的是,一生都没有完成架构升级。
所以,在架构升级/转型过程中,确实找不到有效的方案,可以来找40岁老架构尼恩求助。
前段时间一个小伙伴,他是跨专业来做Java,现在面临转架构的难题,但是经过尼恩几轮指导,顺利拿到了Java架构师+大数据架构师offer 。所以,如果遇到职业不顺,找老架构师帮忙一下,就顺利多了。
- 《NIO圣经:一次穿透NIO、Selector、Epoll底层原理》
- 《Docker圣经:大白话说Docker底层原理,6W字实现Docker自由》
- 《K8S学习圣经:大白话说K8S底层原理,14W字实现K8S自由》
- 《SpringCloud Alibaba 学习圣经,10万字实现SpringCloud 自由》
- 《大数据HBase学习圣经:一本书实现HBase学习自由》
- 《大数据Flink学习圣经:一本书实现大数据Flink自由》
- 《响应式圣经:10W字,实现Spring响应式编程自由》
- 《Go学习圣经:Go语言实现高并发CRUD业务开发》
……完整版尼恩技术圣经PDF集群,请找尼恩领取