随着八月份的到来,2020年已经不知不觉过去了一大半,在疫情的逐渐受控下,全国各大中小学的学生们也逐渐的又迎来了一场假期。对于已经奔赴在职场的大学生们、准备跳槽or看机会的朋友们,今天给大家上一堂API网关知识的查漏补缺课,希望能帮大家斩获心仪的offer~
API网关是什么?
在介绍API网关是什么之前,我们需要知道网关是什么?网关又称为协议转换器,相当于网络之间的“关卡”,用于连接网络。我们知道在没有路由器的情况下,不同网段的网络是不能进行通信的,要实现通信就需要网关,就像从一个房间走向另一个房间必须要经过一扇门一样。网关就像是连接器一样,把不同的东西连接起来了。
随着互联网的兴起,出现了复杂多变的应用系统,应用系统与应用系统之间需要连接起来使得自己更加强大。例如:微信开发平台就会把自己的能力作为开发平台对外开放,企业利用微信公众号的微信开发平台二次开发就可以提供更加丰富的功能,在微信公众号就可以接收告警系统的信息等。应用系统内部的功能模块与功能模块之间需要连接起来使得应用的管理更加便捷。
应用系统与应用系统之间的能力、数据对外开放的模式就是openAPI,通过API网关可以统一管理客户应用的接入、API权限的管理、调用次数管理等。应用内部功能模块与功能模块之间的能力就是微服务API网关,大家都知道随着微服务架构的流行,企业将服务拆分的更加细化,像淘宝这样的业务包含几千个微服务,前端用户的一个请求可能涉及到多个微服务模块的调用,如果通过在调用的URL里写明调用的后端API地址,程序猿们估计是要疯了。每上线一个新服务,需要申请域名、配置Nginx,由不同的运维人员去维护,运维们估计也是要疯了。
而API网关就是把所有的请求入口都汇聚成了一个地址,对于前端开发来说,只需要向一个URL发起请求,后续的请求处理全交由这个URL去管理分配。
API网关能做什么?
API网关会接管所有的入口流量,将所有的请求转发给后端服务器。一个API网关最基本的功能有四个,即统一接入、协议适配、流量监控与容错、安全防护。
网关就是系统的唯一入口,进入系统的所有请求都要经过API网关,就像去上学要走到对应的教室、操场、图书馆、厕所都必须得通过校门才可以进去。这就叫做统一接入。
协议适配还是比较好理解的。在一个庞大的应用系统内部,子系统使用不同协议来进行开发通信是很正常的,但是子系统之间通信和数据传输就存在协议转化的问题了,有的子系统可能使用HTTP协议通信,有的子系统使用Dubbo协议通信,那这两个协议的数据格式不一致,二者就不能互通有无了,就像广东人说广东话,浙江人说浙江话,如果没有统一的语言(比如普通话来进行转化),那么广东人与浙江人是无法进行交流的。同样,有了API网关将不同的通信协议适配成通用协议(如json、xml),从此子系统与子系统之间的通信就再也不是问题了。虽然中国有56个民族,上百种方言,各地的人们聚集在一起使用普通话还是能进行交流。
流量监控与容错主要指的是流量控制、服务降级。因为API网关是唯一的入口,所以当后端服务无法承载业务请求时,如果流量持续的进来就会导致有些请求无法处理,造成不好的用户体验。这时候通过API网关就可以限制流入的请求,让后端服务器免受冲击。就像全国各地的人来到北京要去参观北大校园时,因为学校的空间有限,承载不了无限的人数,保安就会通过校门拦截一部分游客,实现分流入园。服务降级就是指当应用服务出现异常时,通过API网关把用户的请求导入到其它服务或者降级提示服务暂时不可用,同时再通过服务注册中心监听存在问题的服务,一旦服务恢复再把请求恢复,就像是北大校园因为军训原因而不能对外提供参观服务时,保安就会告知游客白天无法参观,傍晚不军训时可进入校园参观。
安全防护主要是指统一的安全认证、黑白名单等技术。安全是非常重要的,所以对于应用服务器的请求都需要拥有权限,通过API网关来进行权限认证是最高效率的方式。目前系统常见的权限管理做法是用户通过登陆服务获取Token(标记/令牌),把它存在客户端,每次请求的时候把该Token放在Header里发送给服务器,API网关解析该Token,知道谁来访问,能做什么事情,从而提高系统的安全性。
API网关的成长之路
随着用户的增多、业务接入的复杂、流量的增长,API网关也在不断的成长,在每个阶段核心要求都不一样,总的来说包括三个阶段,基础阶段、快速发展阶段、平台化阶段。
在基础阶段,用户规模不大、流量不多,因此只需要建设基础能力即可,即统一接入、协议适配、服务注册,能够完成一个用户请求从前端到后台的操作。
在快速发展阶段,用户开始大量增长、业务规模也变得复杂、流量开始增多,这个时候API网关需要保障安全、稳定、性能。对于稳定,可以理解为无论什么时候都不要出现业务不可用的情况,通过对入口请求的限流、对后端服务的降级处理、将不同业务之间流量隔离、弹性伸缩动态扩容实现业务的稳定性,对于安全,可以理解为服务接入时进行鉴权处理。对于性能,可以理解为通过丰富的性能测试场景(如基准性能测试、容量性能测试、稳定性测试、异常性测试)和线上监控平台的搭建,保障服务的业务可用、访问不延迟。
在平台化阶段,用户的增长、业务规模、流量已经达到超大的量级,这时候API网关开始向开放平台发展(比如微信公众平台),需要聚焦于第三方能高效接入、开放、安全。开放平台就有点像SaaS的模式,需要有前端页面,需要支持多租户来允许多个用户使用,需要有完善的解决方案、帮助文档、支持中心、身份管理、信息维护、应用创建等。而API的开放则涉及API的生命周期管理、API接口维护更新等。同时还需要对应的运营管理能力支持,比如开发者管理、应用管理、文档管理、工单管理等。
在本文中我们对网关、API网关、API网关发展的三个阶段进行了查漏补缺的介绍,相信只要好好“复习”,随着疫情的退却,大家也一定能收获心仪的offer~各位加油咯
喜欢我们的文章吗?还想了解互联网哪些技术,欢迎留言告诉我们
【AI课工场】互联网知识也能如此好玩~
更多热门互联网技术文章抢先知微信公众号【kgc-cn】
网友评论