什么是API gateaway?API gateway解决那些问题?
在微服务架构中,每个客户端都需要调用一个或多个API,那么客户端如何知道要调用的后端接口是什么?
当引入新的API会API接口更新时,如何把信息同步给客户端?以及API如何处理安全、日志、限速等所有API都需要考虑的问题?
API gateaway是位于客户端和API之间的一个单点入口,它作为反向代理将客户端的请求路由到后面的一组API(同时,API gateaway可以承担cross-cutting交叉功能,如安全与认证,请求速率管理、日志、缓存等)。
如果没有API gateway客户端就会直接直接把请求发送给API,此时可能存在以下问题:
1)客户端调用代码复杂,需要和多个API进行交互,并且要处理来之不同API的不同错误。
2)耦合度高,客户端要知道各个API的调用细节,当API的接口发生变化,客户端也要进行更改.
3)客户端的一次操作可能调用多个API,此时会产生更多的网络调用和延迟.
4)每次公共网络调用API都需要经过安全测试.
5)API必须使用对调用端友好通信协议,如http或websocket.
API归纳为三种模式
1)路由(URL):API gateaway作为反向代理将客户端请求路由到API,API gateaway作为单点入口对客户端和API进行解耦。
2)聚合:当客户端的某个操作需要调用多个API时,API gateaway可以把多个API请求聚合为一个请求,即客户端发送一个请求至API gateaway,API gateaway分发多个请求到各个API,并且将各个API返回到应答聚合成一个应答返回给客户端,从而达到降低请求交互次数的作用。
3)卸载:API gateaway可以卸载API的功能,尤其是一些crossing cutting交叉功能。因此我们可以在API gateway单点实现功能,而不是在各个API上重复实现。