vlambda博客
学习文章列表

云原生(05):白话API网关

构建云原生应用的方法中建议使用微服务,微服务基本都是基于API对外提供服务,这就凸显了API的作用。只要涉及到信息化治理,必然会涉及API治理。谈到ESB总线,也会提到API治理。API网关也随之诞生。

在云原生里还有一个术语:服务网格(Service Mesh)。这个术语很容易与API网关混淆,其中的区别,我们下篇再讲,本篇主要讲述API网关主要做什么用?

API网关一般具备以下功能:

  • 日志
  • 监控
  • 安全
  • 服务发现
  • 版本控制
  • 超时
  • 熔断
  • 重试
  • 聚合查询

这些功能主要分为三大类:

统一

日志

API网关统一处理日志汇集。一般的网关都会提供文件、RSYSLOG、Elasticsearch等类型日志。这样后端的服务就不需要单独处理日志。

监控

微服务体系下有很多接口,要监管每个接口的健康状况,需要逐个系统对接,工作量比较大。而通过API网关,则可以使用同一种方法进行集中的API健康状况监控。

安全

如同监控一样,安全问题也可以由API网关统一管理授权,同时减少了各个API接口的安全授权工作量。

便利

服务发现

通过API网关,再借助服务发现机制,可以实现API网关与具体API接口之间的灵活匹配与发现,而无需硬编码或者修改配置文件来对应两者之间的关系。

版本控制

API接口经过完善,存在版本不一致的情况,这时可以通过/v1和/v2这种路径URL来进行版本之间的兼容处理。

负载

超时

如果一个API接口连续多次超时,则网关应当将该接口移除后端服务池。

熔断

如果一个API接口的负载超过额定量,则需要降级服务,仅反馈必要的提示信息,不能粗暴的拒绝服务。

重试

如果一个API接口出现问题,网关必须具备一定的机制去尝试连接,这称为重试。

聚合查询

一个API接口不足以提供所有信息,则可以通过举个多个API提供服务。

白话文

说白了,API网关就是一个反向代理,不同的产品的差别,就在于反向代理的基础上加入了哪些特性。有的产品加入了API设计功能,有的产品加入了对某个特性的支持,有的产品加入了API网关自身的高可用,这也就有了Kong、Tyk、Zuul、Express API Gateway、Traefik、Ambassador、MuleSoft、Apigee等产品。

另外有些产品是可以本地化部署(On Promise),有些是SaaS服务。国内的几大云服务商都提供在线API网关服务。

另外,还有一个趋势,有些API网关产品向云原生靠拢,也提供了Service Mesh版本。



接下来向大家推荐《云原生架构进阶实战》这本书。该书是我本人撰写的,历时数月,多次修改,在机械工业出版社出版。该书聚焦于云原生架构的理念和基础知识,并通过实战向大家讲解和展示云原生架构的魅力。该书第一遍需要几分钟即可读完,第二遍需要两到三天读完,第三遍以后,可以作为工具书来翻阅,之后可以品位其中的思想精髓。值得您购买。点击“阅读原文”即可进入京东上的购买页面。





往期推荐