网站首页 > 教程文章 正文
今天给大家分享一个API网关的知识,很多兄弟可能平时经常搞的都是一些CRUD的业务系统开发,从来没接触过API网关,那今天来讲讲,API网关是啥,到底能对我们起到什么作用呢?这个一般面试的时候也很可能会问到这个知识点的。
先来看看业务系统技术栈
平时咱们可能写系统的时候,往往就是基于spring boot+spring mvc+spring+mybatis这套技术栈来开发业务代码,然后连接一个mysql就行了,你调用别的系统往往就是基于dubbo,注册中心可能是zookeeper也可能是nacos,就类似下面的这个图,对不对?
网关路由请求转发功能
好,那么现在给大家讲第一个痛点,那就是你们公司可能存在n多个业务系统,那琳琅满目的,可能有几十个系统,此时对于前端/APP端他们还能知道哪个请求发送给哪个系统吗,这真的是太麻烦了,对不对,所以说,此时一般会引入一个API网关。
你每个业务系统吧,在API网关里配置一下,自己要处理什么样的请求url,然后API网关收到请求以后,根据请求url路径判断一下,就知道应该把请求转发给哪个业务系统了,完美,对不对?看看下图吧。
网关统一授权和鉴权功能
下一个问题来了,你这个系统能允许别人谁来都随便调用你吗?你不得搞一个授权和鉴权的过程?你不得甄别甄别发送请求来的这个人是好人坏人?你不得想想发送过来的这个请求到底应该不应该处理吗?所以这个时候这个鉴权的事情你自己搞吗?那太麻烦了吧,你也鉴权,别的系统自己也鉴权,那真的是麻烦大了。
所以这个时候,我们就直接在API网关里加入鉴权功能不就完了,一个请求过来是好人还是坏人,API网关就帮你鉴权了,通过鉴权的请求才能往后端发送,如下图。
API网关层流控功能
再下一个痛点来了,那就是假设咱们系统一共就部署了几台机器,总共每秒几千请求了不得了,结果有一天运营搞了一个特别棒的活动,每秒来了几万流量和请求,一下子给你击垮了,你说你怎么办,你扛不住啊?所以这个时候啊,还得在API网关层加入流控的功能,每个业务系统可以配置自己能抗的QPS,他根据这个来限制每秒转发给你的请求不就完了,如下图。
API网关层灰度发布功能
然后呢,还有一个经常遇到的痛点,那就是咱们每次系统上线部署,如果一下子把新的版本部署到所有机器里去,就怕新版本上线就掉俩字,直接就崩溃,这可怎么办。所以一般来说,可以引入一个灰度发布,这个灰度发布意思就是说,假设你系统部署了3台机器,每次上线先部署1台机器,然后线上的流量里划分5%给这个新部署的灰度版本机器,先观察一下咋样,要是没问题,再把后续两台机器给部署了,这就是灰度发布。
灰度发布也可以叫做金丝雀发布,这个金丝雀发布是啥意思呢,就是以前古代有盗版的人下墓的时候先把金丝雀扔进去看看,如果他不叫了,说明墓里有毒气,现在这个灰度发布也是一个意思,先把新版本部署到一台机器里去,观察一下,要是他崩了,就说明代码有问题。
所以此时就可以基于API网关来实现灰度发布了,每次部署了灰度版本以后,让API网关就划分5%的流量给这个灰度版本,一切正常了再全量部署,如下图。
好了,到这里为止,就给大家把这个API网关的作用讲清楚了,大家平时不要老是埋头写crud代码啊,对API网关这些东西,也是要了解一下的,别啥都不知道。
私信 "面试" 免费领取600+页石杉老师原创精品文章汇总PDF
猜你喜欢
- 2025-07-08 对API网关注册和接入的接口安全管理总结
- 2025-07-08 什么是API网关?——驱动数字化转型的“隐形冠军”
- 2025-07-08 27 | API网关:系统的门面要如何做呢?
- 2025-07-08 什么是网关服务?(到底什么是网关)
- 2025-07-08 网关的作用与设计介绍(网关的用途)
- 2025-07-08 Spring Cloud Gateway网关详解(作用功能及原理流程)
- 2025-07-08 什么是API网关?对企业为何重要?(api网关管理系统)
- 2025-07-08 其实,对于微服务网关的主要功能和技术选型,你还需要深入理解下
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)