[zebra源码]流控设计

之所以要进行流量控制,是要避免业务应用流出量倾斜,超过分库能承载的压力

zebra的限流架构
image.png

粒度

  1. 指定要保护的db节点
  2. 指定要流控的应用ip
  3. 指定sqlId, 计算规则: sqlId = MD5(/appName/{mapper方法}).subString(0, 8)

限流策略:

  1. autoControl 自动限流, 失败率达到一定的阈值后触发 小于的时候逐步恢复(线性、指数)
  2. forceControl 强制限流,会对所有连接进行过滤,立即将流量降到下限; 用于紧急情况,需要手动开启和关闭

流程的处理收拢在 WallFilter(实现JdbcFilter的 processSql方法)

更详细的说明: 参见官方 zebra流量控制

完整目录:数据库中间件zebra源码分析

本文来自博客园,作者:mushishi,转载请注明原文链接:https://www.cnblogs.com/mushishi/p/15022092.html

原文地址:https://www.cnblogs.com/mushishi/p/15022092.html