APIM方案概述

Flomesh常被用来构建APIM(API管理平台)。这里是一个参考方案,方案以开源软件为基础,以易用性、高性能、高稳定、可扩展为目标,在充分满足API管理需求同时,兼顾了中国市场的现状,可以满足目前以及可预见未来技术需求和容量需求。

整体架构

该方案在结构上分为三个层次,网关层、APIPortal层、APIMart层。如下是该方案的整体架构图:

整体架构图

网关层

网关层由两个组件组成。组件一为HTTP/HTTPS网关,基于开源软件Kong构建,具备优异的稳定性、吞吐率和行业领先的低延迟。组件二为Pipe,Pipe是Flomesh团队自主研发的用于补充Kong在非HTTP协议方面处理的能力。Pipe采用C++开发,可以适配多种常见的非HTTP协议,包括Socks协议、Dubbo协议、TCP短连接、MQTT等。同时Pipe基于可可扩展框架设计,可以快速开发适配新的协议和数据格式。

网关层组件都是无状态、易扩展的。网关配置来自上层的API Portal,在执行期间,被缓存到网关的内存中,以保障网关的高吞吐率和高稳定性。在功能上,网关层组件(Kong和Pipe)都是基于插件化设计,既有庞大的社区插件可以选用,也可以根据需要快速开发特定的功能。同时网关层组件具备优秀的横向扩展能力,通过横向扩展,可以有效提高整体的接入能力、吞吐能力。

APIPortal层

API Portal层在功能上主要满足如下几个需求:

  • 多租户/权限/流程。API平台应该可以在多租户环境中使用,这即包含了API提供者、API消费者不同的角色的需求,也包含了组织内部和外部的使用者之间的差异,还有组织内部管理层级和工作流程上的需求。
  • 可视化。API在配置、编排过程中,可视化操作可以显著提高工作效率,降低复杂技术使用的门槛。同时,对于API生命周期、工作流程、历史数据的可视化,可以帮助管理者直观有效的理解业务整体现状。在结合了微服务平台能力以后,可视化可以进一步提升微服务在服务拓扑、服务质量等方面的管理能力。
  • 微服务集成。API Portal通过接口程序,可以和第三方的配置中心(比如常见的微服务注册中心Eureka/Zookeeper/Etcd等)做集成,提升系统整体的配置能力。
  • 第三方集成。API Portal可以和其他第三方API提供者做对接,比如常见的SaaS服务。
  • 一站式运维。在基础设施管理层面,API Portal为管理员提供了运维相关的管理能力,包括部署、扩容、监控、审计、日志等。
  • 开发者支持。API开发者可以通过API Portal快速的导入Swagger配置,完成API设定。同时API开发者可以完成配套的文档撰写和管理,使得API Portal成为一个文档中心和知识库。
  • 消费者支持。API消费者除了可以快速检索API文档之外,还可以调试API的调用,通过自服务方式降低API开发者工作压力,提高API消费者工作效率。

API Portal前台采用前沿的静态站点生成(Static Site Generate)技术,后台采用TypeScript开发,数据存储在关系型数据库中;目前我们支持各种常见的开源关系型数据库,包括但不限于MySQL,PostgreSQL,我们推荐使用PostgreSQL数据库。

APIMart层

Flomesh的API解决方案把API商品化的工作放到了APIMart层。在该层,单一的API,或者多个API的组合,被设计成为“商品”,API消费者可以在这里采购自己需要的API或者API组合,一站式的完成API消费活动。在APIMart上,API商家可以为“商品”设定不同的计费模式、费率,以及优惠、促销等策略。API消费者可以采购API商品,完成订单、支付、发票、账单、对账等多种消费者相关功能。

特点与优势

该方案整体采用开源技术为主,配置以及数据存储以PostgreSQL为主,ElasticSearch为辅。在保障高效、稳定、易用、可扩展的同时,保持了整体堆栈的简洁性,开发、部署、运维提供了有效的基础保障。在提供强大功能的同时,该方案具备易学、易用、易扩展的特点。

同时该方案兼容多种部署环境,包括物理机、虚拟机、公有云、私有云、容器、Kubernetes/Openshift等,并可以做混合部署,为大型企业在混合环境下提供了统一的API堆栈和能力。同时该方案已经在多家大型企业客户落地实施,经验证是有效、实用的。高性能、高可靠、兼容性、易扩展是该方案的优势。

该方案是集成解决方案,同时该方案本身也具备高度的集成能力和广泛的兼容性,主要体现在如下几个方面:

  • 微服务集成。该方案除了可以集成常见的Spring Cloud,Kubernetes/OpenShift微服务平台外,还可以支持国内广泛实用的Dubbo微服务框架,支持Dubbo到REST的转换,为在中国市场快速开展业务提供有力的保障。
  • 监控集成。该方案除了可以集成Prometheus+Grafana的监控方案外,还内置了秒级的实时监控能力,可以支持多达单机十万指标的内存中统计与监控功能,为微服务治理和服务质量管理提供了有效的保障。
  • 日志集成。该方案除了可以集成常用的ELK日志方案外,还可以用PostgreSQL列式数据存储引擎。PostgreSQL列式存储的优势在于可以有效节省存储空间,同时提供优异的查询速度。对于同样数据量的日志,PostgreSQL列式数据库方案可以比ElasticSearch节省超过三分之二的存储空间,同时提供更快的查询速度;同时,该方案还支持关系型数据库的SQL查询能力,为进一步的数据分析和挖掘提供了基础。
  • 分布式跟踪集成。该方案目前支持两种分布式跟踪软件和体系,一个是广泛实用OpenTracing标准,可以适配Zipkin和Jaeger;另外也支持国内常用的Skywalking。
  • 数据分析工具集成。对于使用ElasticSearch的用户,该方案可以快速对接基于Kibana数据分析工具;同时,对于使用PostgreSQL的用户,该方案提供了完整的OLAP支持能力,支持包括Superset等多种BI工具,为完整商业智能分析提供了可能性。

APIM FAQ

  1. 是否支持微服务网关?
  2. 支持哪些监控指标?
  3. 是否支持可扩展的技术报表?
  4. 是否支持基于Spec的API开发?
  5. 是否可以消费第三方的API?
  6. 是否支持对外访问API?
  7. 是否有预置的接口可以支持常见第三方SaaS?
  8. 是否支持API生成和代码生成?
  9. 是否支持SOAP和REST转换?
  10. 是否支持多网关实例?
  11. 是否支持其他协议(除了HTTP)?
  12. 是否支持Mockup?
  13. 是否支持在Mockup中简单的业务逻辑定制?
  14. 是否支持多租户?
  15. 是否支持货币化?
  16. 如何做访问控制?
  17. 是否支持SSL?
  18. 是否支持SSO?
  19. 支持哪些认证授权方式?
  20. 如何保护API?
  21. 如何扩容?
  22. 是否有关于性能的测试报告参考?
  23. 是否支持混合云部署?
  24. 支持哪些数据库和版本?
  25. 是否提供缓存功能?
  26. 是否支持数据库缓存?
  27. 整体架构上,哪些环节支持缓存?
  28. 是否支持云上的托管数据库?
  29. 是否采用UUID全局标识记录?