今天给大家分享一个API网关的知识。很多兄弟可能平时做一些CRUD业务系统开发,并没有接触过API网关。今天我们就来说说,什么是API网关,它能为我们起到什么作用?这个知识点一般面试的时候很可能会问到。我们来看看业务系统技术栈。通常我们在写系统的时候,往往是基于SpringBoot+SpringMVC+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网关的作用给大家解释清楚了。不要总是埋头编写粗制滥造的代码。您还需要了解API网关等内容。不要什么都不做。知道。
