- 设u是单个流控周期内自主流控阈值更新的次数,Pi表示第i个API Gateway节点处理API的速度 。
- 单个流控周期的流控请求的数量由L降至u*N 。
- 最优情况是API Gateway集群的每个节点的性能完全一样,此时 , u = 1 。当流控阈值是10000,API Gateway节点数量是10时,单个流控周期的流控请求从10000降至10 。
- API Gateway集群的每个节点的性能越接近 , u越接近1 。API Gateway集群的每个节点的性能差距越大 , u越大 。
- 请求取得令牌后,流控服务开始处理请求,生成流控响应(接受/拒绝,降级,或黑白名单) 。
- 基于运行状态的动态流控策略
- 根据使用网络状态(可用连接数 , 网络延迟),请求处理延迟,API Gateway的cpu、memory等运行状态,动态修改流控阈值 。也可等等 。
- 当cpu、内存等使用率远小于阈值时,正常处理请求 。
- 当cpu、内存等使用率接近阈值时,降低流控阈值(降级) , 减少API Gateway的负载 。
- 当cpu、内存等使用率超过阈值很多时 , 提高降低流控阈值的速度 。
- 当无可用cpu、内存时,直接拒绝请求 。
- 当cpu、内存等使用率降低至正常水平时,恢复流控阈值 。
- 基于运行状态趋势的动态流控策略
- 利用机器学习,分析历史数据,生成预测模型 , 预测API Gateway的负载 , 提前修改流控阈值或降级服务,保证API Gateway负载平滑稳定 。
- 利用机器学习发现应加入黑名单的请求 。
- 基于API调用流的动态流控策略
- Case: API调用流 。
- 设计一种基于API调用流的动态流控策略 。
- 利用机器学习发现API调用流 。流控服务保存API调用关系 。
- 当系统负载较高时 , 当一个API请求达到阈值被限流后 , 对于相关联的同一层次和低层次的所有API请求 , 不再访问Redis获取实时数据和处理,而是直接延迟处理或拒绝 。
- 当API Gateway系统负载正常时,不启动该动态流控策略 。
- 通过这种方式,可在基本不影响API处理速度的前提下 , 降低API Gateway的负载和流控服务的负载 。
点击关注,第一时间了解华为云新鲜技术~
【详解ROMA Connect API 流控实现技术】
推荐阅读
- Go_Goroutine详解
- Go_Channel详解
- Docker | 容器数据卷详解
- MyBatis之ResultMap的association和collection标签详解
- Future详解
- Go的网络编程详解
- gorm中的关联操作详解
- Go中的闭包、递归
- liunx之expect操作详解
- 条件期望:Conditional Expectation 举例详解之入门之入门之草履虫都说听懂了