背景
API 网关作为一家企业对外暴露所有服务的统一入口,其重要性不言而喻。一旦 API 网关本身的服务可用性出现问题,将直接影响公司对外提供的所有服务,这样的灾难是无法接受的。因而如何确定 API 网关生产合理部署量,就显得至关重要。
预估 API 网关部署量是为了保证 API 网关的性能、可用性和稳定性,以及优化资源利用率和成本效益。如果 API 网关部署量过少,可能会导致请求超时、拥塞、丢包等问题,影响用户体验和服务质量。如果 API 网关部署量过多,可能会造成资源浪费、运维复杂度增加等问题,增加成本和风险。
因此,预估 API 网关部署量是一个重要的步骤,需要根据业务需求、流量预测、性能测试等因素进行合理的规划和调整。本文结合众多不同行业最佳实践,给出三步主要过程供大家参考:
- 网关选型:单 CPU 峰值处理能力
- 业务类型:金融业务、非金融业务
- 高可用要求
网关选型
API 网关基础组件的瓶颈通常是 CPU,而不是网络、磁盘和内存。API 网关产品单 CPU 核心的处理能力,可以很大程度说明产品是否足够优秀,因而在进行 API 网关产品选型时需要侧重考量。处理相同的 API 请求流量,消耗资源越低,意味着最终所需机器数量越少,运维管理更简化,同时也意味着服务的可用性更高。
Apache APISIX 作为一款开源 API 网关产品,启用常见监控、限流限速等企业插件后,保守预计单 CPU 核心最大能提供近 10,000 QPS。不同企业默认启用的插件、硬件环境、网络环境、API 请求特征等都有差异,企业可进行专项测试收集结果。
业务类型
大多数非金融业务企业能将生产环境中 API 网关的 CPU 资源控制在 20-30% 左右,这种情况是比较理想的。即使服务调用 3-5 倍增长,也能正常应付。比如新闻、娱乐、互联网等行业,都可以使用这个负载。
但对银行、金融、证券等行业,API 价值含量较高,日常 CPU 负载在 5-10% 比较理想,这样 API 网关有能力处理比日常高 10-20 倍的突发流量。
高可用要求
如果高可用要求较高,那么 API 网关代理实例最少需要 2 节点。
实践示例
金融类用户
企业示例:
- 日常 API 调用 QPS 是 100000
- API 网关日常负载是 10%
- 网关选型 Apache APISIX(单核心支持 10000 QPS)
根据企业情况,需要的 CPU 数量为:100000 / 10000 / 10% = 100 个。如果使用 CPU 4 核心配置机器,需要 25 台;如果使用 CPU 8 核心机器,则需要 13 台机器。
非金融类用户
企业示例:
- 日常 API 调用 QPS 是 100000
- API 网关日常负载是 25%
- 网关选型 Apache APISIX(单核心支持 10000 QPS)
根据企业情况,需要的 CPU 数量为:100000 / 10000 / 25% = 40 个。如果使用 CPU 4 核心配置机器,需要 10 台;如果使用 CPU 8 核心机器,则需要 5 台机器。
总结
在实际使用中,流量复杂多变,需要灵活调整平均值。采用优秀的 API 网关如 APISIX,以及合理配置硬件资源,企业能够更好地平衡成本与服务需求,确保企业 API 安全、稳定、高效的暴露给最终用户。