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


3.2.4令牌桶算法

详解ROMA Connect API 流控实现技术

文章插图
优点:(1)允许一定程度的突发流量 。(2)通过定制令牌添加方法,可定制复杂的流控策略 。(3)无临界问题 。
不足:(1)当桶内无可用令牌时,输入请求会被直接丢弃 。(2)不支持按优先级处理输入请求 。
4、ROMA Connect流控技术实现4.1总体策略
  • 对高精度与高吞吐进行分层,区别不同场景的流控,采用不同策略与算法
    • 对高精度低吞吐流控进行持久化; 高吞吐高频纯内存计数策略
    • 高吞吐高频流控,不进行 HA 保障,故障后数据清零重新计算
  • 多维度多优先级,采用Policy 多维度控制,单一请求可触发多Policy
    • 解耦复杂控制,采用多条简单策略分别映射;降低用户使用复杂度
    • 单一请求可触发所有满足条件的 Policy,进行综合流控
  • 通过分发策略、异步、批申报等机制,降低请求时延与降低Controller 工作量
    • 尽可能在 Filter/SDK 级别处理,避免流控请求影响业务时延
    • 尽可能少上报到 Controller,降低 Controller 负载提升 Controller 效率
  • Filter 与算法门限降级放通,避免Ratelimit机制故障对业务造成影响
  • 采用KEY/VALUE 模式和多维,提供通用机制,适应不同场景不同应用流控诉求
    • 立足API Gateway第一个应用场景
    • Controller 不需理解具体业务,由基于SDK封装的Filter适配具体业务与流控Controller
4.2逻辑视图
  • RateLimit SDK访问根据一致性hash访问sharding后的RateLimit Controller,对于高吞吐高精度的流控集中在Controller内存进行限流计算 。
  • RateLimit Controller对于高精度高吞吐只集中在本地内存计算,无需考虑crash后保留历史限流信息 。
  • RateLimit Controller对于高精度低吞吐的限流采取异步持久化策略,确保Controller crash后流控的精度 。
  • 当Ratelimit Controller服务终止的时候,Ratelimit SDK支持自动降级 。
  • 根据API Gateway采集的API Response latency等信息反馈,支持动态调整流控策略 。
  • 支持SLA-Based 流控 Policies 。

详解ROMA Connect API 流控实现技术

文章插图
4.3架构设计
  • 采用独立的Controller 方案
    • 独立集群 Controller 提供全局精确高吞吐流控
    • Controller 内部采用 Sharding 机制
  • 采用通用的Policy与Key/Value模型
    • 采用可扩展的 Domain/Policy机制,适应不同业务场景
    • 不同Policy关联不同的算法
  • 提供SDK与Tools,开发API G等插件
    • 提供可重用的SDK与调试工具等
    • 预实现API Gateway等流控插件
  • 外置日志、流控数据分析模块
    • 通过数据挖掘、预测等反馈到配置/策略管理模块,动态修订流控策略

详解ROMA Connect API 流控实现技术

文章插图
4.4内置算法4.4.1带缓存带颜色的令牌桶算法