作者:戴泽军
前言
随着微服务架构成为业界主流,API 网关作为访问微服务集群内所有 API 的唯一出入口,地位显得尤为重要。
集群内微服务功能拆分越来越细,对后端而言,模块在独立性、复用性、可维护性方面的优势不言而喻。但对前端而言,复杂性却随之而来。一个前端页面,往往需要从数个甚至数十个 API 中请求数据,而这些 API,很可能还存在如下异构特性:托管 host 不同、实现语言不同、调用方式不同。
面对这样的难题,API 网关的需求应运而生:统一出口、隐藏实现、安全控制、流量控制、负载均衡、权限控制、API 管理等等。这些问题及其解决方案将在后续的文章中一一介绍。本期我们重点讨论 API 网关的另一个重要功能:API 编排。
API 编排的应用
所谓 API 编排,就是通过 API 网关实现一种机制,可以灵活调用和组装后端原生 API,使前端能够根据业务需求,定制化页面所需的聚合 API。其地位和作用,可相较于“Shell 之于 *nix”。
一个典型的 API 编排应用案例如下:
图注:图中方框大小示意调用时数据量大小
可以看出,与后端微服务 API 以“高内聚”为目标不同,聚合 API 以业务需求为导向,通过简单组合已有的原生 API,在后端代理调用多个 API,并对输出数据进行重新剪裁组装。