详解ROMA Connect API 流控实现技术( 三 )

  • 流控服务计算:自主流控阈值S = L/N,并分发给每个API Gateway节点 。
  • 在自主流控阈值范围内,每个API Gateway节点可做自主流控,无需向流控服务发送流控请求 。
  • 当API Gateway集群中有一个节点的API请求量超过自主流控阈值–α时,该节点发送流控请求至流控服务,申请新的流控阈值 。此时,流控服务联系API Gateway的其它节点获得它们处理的API请求量 。然后 , 流控服务重新计算自主流控阈值S = (L – R)/ N,并发送给各个API Gateway节点 。
  • 当流量余额 < δ时,不再更新自主流控阈值 。
  • 当进入下一流控周期时,流控服务重置S,各API Gateway节点联系流控服务更新自主流控阈值 。
  • 算法分析
    • 设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越大 。
    4.4.3动态流控算法基于运行状态、趋势、API调用链进行动态流控 。
    • 请求取得令牌后,流控服务开始处理请求,生成流控响应(接受/拒绝,降级,或黑白名单) 。
    • 基于运行状态的动态流控策略
      • 根据使用网络状态(可用连接数 , 网络延迟),请求处理延迟,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 Ccnnect入门版
    点击关注,第一时间了解华为云新鲜技术~
    【详解ROMA Connect API 流控实现技术】

    推荐阅读