限流部分:

限流方案:

现有限流算法:

代码设计方式:

  1. 抽象接口:


    type GFLimiter interface {
        	ShouldAllow() bool //是否允许
        	accept() error   //通过函数
        	reject() error   //拒绝函数
        }

  2. 完成两种限流方式(令牌桶限流和自适应限流),原因如下:

    1. 在非容器化的环境中,cpu和load一般都会收其他进程影响,所以,使用令牌桶比自适应更合适。
    2. 在容器化环境中,使用cpu来做为指标,可以更好的控制流量,不需要手动设置。
    3. 除此之外,用户可以通过interface 实现自己的限流定义。

熔断部分:

算法部分

  1. Hystrix 算法,类似于固定窗口, 到达出错阈值之后,冷却一段时间,在继续执行。
  2. google_sre 算法: 自适应保护,根据请求成功概率,来控制熔断概率,相较于Hystrix算法,恢复更快,可以在下游服务压力大的时候进行保护,向下游服务发送瞬时大量请求的情况较少。

代码实现计划: