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

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

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

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

先来看看业务系统技术栈

平时咱们可能写系统的时候,往往就是基于 SpringBoot+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 网关这些东西,也是要了解一下的,别啥都不知道。

责任编辑:武晓燕 来源: 石杉的架构笔记
相关推荐

2022-11-07 17:50:36

2015-08-18 10:09:13

云服务监控工具负载迁移

2013-01-25 10:12:59

Java语言安全

2013-01-24 10:32:41

JavaOracleJava 7

2012-12-20 09:39:35

程序员

2013-01-10 09:47:50

辞职就业面试

2014-08-08 16:05:36

苹果

2019-06-03 10:14:07

API网关微服务

2017-04-07 13:15:44

程序员辞职

2016-10-25 20:30:11

2021-05-09 23:37:56

IDEAJava 开发者

2020-05-11 17:53:05

Windows微软补丁

2020-12-30 08:47:04

Prometheus开源监控

2012-05-08 10:02:44

2023-10-26 18:08:36

API网关性能

2022-05-16 08:09:45

前端API

2018-08-21 05:12:10

2015-11-12 10:12:53

2016-08-17 10:43:17

2016-06-06 10:20:59

大数据流式计算数据处理
点赞
收藏

51CTO技术栈公众号