天天写CRUD的你,到了该给系统接入API网关的时候了!

WxJava

共 1483字,需浏览 3分钟

 ·

2022-05-18 01:20


目录

  • 先来看看业务系统技术栈

  • 网关路由请求转发功能

  • 网关统一授权和鉴权功能

  • API 网关层流控功能

  • API 网关层灰度发布功能


今天给大家分享一个 API 网关的知识,很多兄弟可能平时经常搞的都是一些 CRUD 的业务系统开发,从来没接触过 API 网关。


那今天来讲讲,API 网关是啥,到底能对我们起到什么作用呢?这个一般面试的时候也很可能会问到这个知识点的。


先来看看业务系统技术栈


平时咱们可能写系统的时候,往往就是基于 SpringBoot+Spring MVC+Spring+Mybatis 这套技术栈来开发业务代码,然后连接一个 MySQL 就行了。


你调用别的系统往往就是基于 Dubbo,注册中心可能是 Zookeeper 也可能是 Nacos。


就类似下面的这个图,对不对?

90fd4dc835f60cf945de60a004a49685.webp

网关路由请求转发功能


好,那么现在给大家讲第一个痛点,那就是你们公司可能存在 n 多个业务系统,那琳琅满目的,可能有几十个系统。


此时对于前端/APP 端他们还能知道哪个请求发送给哪个系统吗,这真的是太麻烦了,对不对?所以说,此时一般会引入一个 API 网关。


你每个业务系统吧,在 API 网关里配置一下,自己要处理什么样的请求 url,然后 API 网关收到请求以后,根据请求 url 路径判断一下,就知道应该把请求转发给哪个业务系统了,完美,对不对?


看看下图吧:

999a73fb7fdee501cbaa51a6c8d78978.webp

网关统一授权和鉴权功能


下一个问题来了,你这个系统能允许别人谁来都随便调用你吗?你不得搞一个授权和鉴权的过程?你不得甄别甄别发送请求来的这个人是好人坏人?


你不得想想发送过来的这个请求到底应该不应该处理吗?所以这个时候这个鉴权的事情你自己搞吗?那太麻烦了吧,你也鉴权,别的系统自己也鉴权,那真的是麻烦大了。


所以这个时候,我们就直接在 API 网关里加入鉴权功能不就完了,一个请求过来是好人还是坏人,API 网关就帮你鉴权了,通过鉴权的请求才能往后端发送。


如下图:

2b80c6f1bb2e75be324fb38f41b6904f.webp

API 网关层流控功能


再下一个痛点来了,那就是假设咱们系统一共就部署了几台机器,总共每秒几千请求了不得了,结果有一天运营搞了一个特别棒的活动,每秒来了几万流量和请求,一下子给你击垮了,你说你怎么办,你扛不住啊?


所以这个时候啊,还得在 API 网关层加入流控的功能,每个业务系统可以配置自己能抗的 QPS,他根据这个来限制每秒转发给你的请求不就完了。


如下图:

c2a3decb738d2e3a44288d6e3b036960.webp

API 网关层灰度发布功能


然后呢,还有一个经常遇到的痛点,那就是咱们每次系统上线部署,如果一下子把新的版本部署到所有机器里去,就怕新版本上线就掉俩字,直接就崩溃,这可怎么办。


所以一般来说,可以引入一个灰度发布,这个灰度发布意思就是说,假设你系统部署了 3 台机器,每次上线先部署 1 台机器,然后线上的流量里划分 5% 给这个新部署的灰度版本机器,先观察一下咋样,要是没问题,再把后续两台机器给部署了,这就是灰度发布。


灰度发布也可以叫做金丝雀发布,这个金丝雀发布是啥意思呢,就是以前古代有盗版的人下墓的时候先把金丝雀扔进去看看,如果他不叫了,说明墓里有毒气,现在这个灰度发布也是一个意思,先把新版本部署到一台机器里去,观察一下,要是他崩了,就说明代码有问题。


所以此时就可以基于 API 网关来实现灰度发布了,每次部署了灰度版本以后,让 API 网关就划分 5% 的流量给这个灰度版本,一切正常了再全量部署。


如下图:

9fcf367da82fc8283fe4947d42e2bb66.webp

好了,到这里为止,就给大家把这个 API 网关的作用讲清楚了,大家平时不要老是埋头写 crud 代码啊,对 API 网关这些东西,也是要了解一下的,别啥都不知道。


2f2d5bb6a88e53b13057138a14bdeace.webp

点个在看你最好看

50854d8267e4311dcbe4fce007451429.webp
浏览 23
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报