摘要:本文将详细描述API Gateway流控实现,揭开高性能秒级流控的技术细节 。1、概述ROMA平台的核心系统ROMA Connect源自华为流程IT的集成平台,在华为内部有超过15年的企业业务集成经验 。依托ROMA Connect , 可以将物联网、大数据、视频、统一通信、GIS等基础平台及各个应用的服务、消息、数据统一集成适配以及编排,屏蔽各个平台对上层业务的接口差异性 , 对上提供服务、消息、数据集成使能服务,以支撑新业务的快速开发部署,提升应用开发效率 。适用于平安园区、智慧城市、企业数字化转型等场景 , 图1展示了ROMA Connect的功能视图 。
![详解ROMA Connect API 流控实现技术](http://img.zhejianglong.com/231018/0645511U9-0.jpg)
文章插图
图1 ROMA Connect功能视图
其中APIC(APIC Connect)作为核心组件包含了API Gateway能力,承载了API的集成和开放能力,流控作为API Gateway的关键特性,为用户的API集成、开放提供了快速、有效的安全防护,本文将详细描述API Gateway流控实现,揭开高性能秒级流控的技术细节 。
体验ROMA Ccnnect入门版
2、高并发高吞吐系统流控需求2.1流量控制的动因在高并发高吞吐系统中,通常的技术关键词是降级、缓存、流控等,流控更是其中的核心技术,当然,这些技术是相辅相成的 。
1、流控的价值
- 提升系统稳定性/防止雪崩
- 保障高优先级服务
- 降低响应时延,提升用户体验
- 提升系统有效吞吐量
- 限制性业务使用等
- …
- 限制总并发数(比如数据库连接池、线程池)
- 限制瞬时并发数(如nginx的limit_conn模块)
- 限制时间窗口内的平均速率
- 限制远程接口调用速率
- 限制MQ的消费速率
- 限制网络流量
- 限制CPU与内存的使用率
- …
![详解ROMA Connect API 流控实现技术](http://img.zhejianglong.com/231018/06455115S-1.jpg)
文章插图
图2 业务挑战
而对于流控的具体挑战如下:
- 每天10次与每分钟10万次的流控同时存在
- 流控反馈周期比流控周期还久
- 流控的维度特别多
- 流控同步处理时间影响用户体验
- 流控静态设置,要么过高要么过低
- 流控失效造成业务失效
- 流控节点部署复杂资源消耗高
- …
![详解ROMA Connect API 流控实现技术](http://img.zhejianglong.com/231018/064551M21-2.jpg)
文章插图
图3 常见流控逻辑架构
各种方案的优缺点如下表所示:
![详解ROMA Connect API 流控实现技术](http://img.zhejianglong.com/231018/0645511948-3.png)
文章插图
3.2常见流控算法3.2.1计数器算法优点:算法简单易实现 。
不足:(1)输出不平滑 。(2)有临界问题,在流控周期边界处易发生输出激增,大幅超过流控阈值,冲坏后端服务 。
3.2.2滑动窗口算法
![详解ROMA Connect API 流控实现技术](http://img.zhejianglong.com/231018/064551Lb-4.png)
文章插图
优点:(1)可以解决计数器算法的临界问题 。(2)算法简单易实现 。
不足:(1)精度要求越高需要的窗口格子越多 , 内存开销较大 。(2)不保证输出平滑 。
3.2.3漏桶算法
![详解ROMA Connect API 流控实现技术](http://img.zhejianglong.com/231018/0645513260-5.jpg)
文章插图
优点:(1)输出速度与输入速度无关,是恒定的,流控效果平滑 。(2)无临界问题 。(3)不依赖令牌 。
不足:(1)由于漏桶输出速度恒定,所以不支持一定程度的突发请求 。(2)如果桶满,输入数据会被丢弃
3.2.4令牌桶算法
![详解ROMA Connect API 流控实现技术](http://img.zhejianglong.com/231018/0645512441-6.jpg)
文章插图
优点:(1)允许一定程度的突发流量 。(2)通过定制令牌添加方法 , 可定制复杂的流控策略 。(3)无临界问题 。
不足:(1)当桶内无可用令牌时,输入请求会被直接丢弃 。(2)不支持按优先级处理输入请求 。
4、ROMA Connect流控技术实现4.1总体策略
- 对高精度与高吞吐进行分层,区别不同场景的流控,采用不同策略与算法
- 对高精度低吞吐流控进行持久化; 高吞吐高频纯内存计数策略
- 高吞吐高频流控,不进行 HA 保障,故障后数据清零重新计算
- 多维度多优先级,采用Policy 多维度控制,单一请求可触发多Policy