Open chenquanzhen opened 1 year ago
Issue Description
Type: feature request
sentinel中的自适应限流采用的是BBR算法,蚂蚁Mosn,淘宝的noah都有自适应限流产品,有以下几个问题,盼解答
- 蚂蚁Mosn 介绍也是在sentinel基础上实现了自适应限流,Mosn用的也是BBR算法吗?有什么改进吗?
- 淘宝noah采用了PID算法,这和sentinel BBR算法有没什么场景上侧重或者说二者优缺点是什么?
- 自适应限流有没什么实践上的建议?
- 后续sentinel会支持更多的自适应限流算法吗?
我来解答一下 MOSN 这块的自适应限流算法和 Sentinel 的区别吧,MOSN 这边没有采用 BBR 的算法,但其根本原理差不多,都是基于排队论控制并发量,Sentinel 采用了 BBR 的方式,而 MOSN 则是采用按比例逐步调节,更像是一种 PID 算法。
MOSN 的改进之处在于会记录每个资源点一分钟的 Histogram 数据,当满足自适应限流的条件时,逐个接口比对当前的并发量和历史数据,判断是否有明显的异常,对于没有异常和本身并发量较小的资源点不会进行自适应限流。通过这种方式尽量减少杀伤范围。除此之外 MOSN 还加入了压测流量直接熔断的特性,当触发自适应限流时,会直接阻断所有的压测流量腾挪资源给线上流量。
@ansiz > MOSN 这边没有采用 BBR 的算法,但其根本原理差不多,都是基于排队论控制并发量,Sentinel 采用了 BBR 的方式,而 MOSN 则是采用按比例逐步调节
关于MOSN的自适应流控,有如下几个问题,盼解答 1、MOSN没有直接采用BBR算法的原因是?是实践中遇到什么问题吗? 2、MOSN 控制算法(采用按比例逐步调节//是指以一个固定的比例,减少当前的并发数?),这块的控制算法能介绍一下吗?
@ansiz > MOSN 这边没有采用 BBR 的算法,但其根本原理差不多,都是基于排队论控制并发量,Sentinel 采用了 BBR 的方式,而 MOSN 则是采用按比例逐步调节
关于MOSN的自适应流控,有如下几个问题,盼解答 1、MOSN没有直接采用BBR算法的原因是?是实践中遇到什么问题吗? 2、MOSN 控制算法(采用按比例逐步调节//是指以一个固定的比例,减少当前的并发数?),这块的控制算法能介绍一下吗?
之所以没有采用跟Sentinel一样的策略有以下原因:
关于控制算法: 我们是以触发限流时的并发量作为基线往下调整,按固定比例来减少并发量,秒级调整
我们是以触发限流时的并发量作为基线往下调整,按固定比例来减少并发量,秒级调整
@ansiz 谢谢回答,还有点问题: 1、这里能进行秒级调整,是根据秒级的cpu使用率情况去调整接口的并发量? 2、做自适应限流的时候看着都是在服务端进行限流,那么在下游负载高时对上游客户端进行限流是否可行? 有什么弊端吗?
我们是以触发限流时的并发量作为基线往下调整,按固定比例来减少并发量,秒级调整
@ansiz 谢谢回答,还有点问题: 1、这里能进行秒级调整,是根据秒级的cpu使用率情况去调整接口的并发量? 2、做自适应限流的时候看着都是在服务端进行限流,那么在下游负载高时对上游客户端进行限流是否可行? 有什么弊端吗?
@ansiz
请教一个问题,如果基于 BBR 算法,为什么 sentinel 内部没有实现排空过程?
如果不实现排空逻辑,在 QPS 不变的时候,响应增加,最后也会允许更多的并发过来。但此时并不是最高效的。
我猜测有2个原因:
所以想请教一下,你们没实现排空具体的原因是什么?有做过相关的调研和测试吗?
@dozer47528 我这边是 MOSN 限流的同学,Sentinel内部的实现请 @sczyh30 帮忙解答一下
Issue Description
Type: feature request sentinel中的自适应限流采用的是BBR算法,蚂蚁Mosn,淘宝的noah都有自适应限流产品,有以下几个问题,盼解答
- 蚂蚁Mosn 介绍也是在sentinel基础上实现了自适应限流,Mosn用的也是BBR算法吗?有什么改进吗?
- 淘宝noah采用了PID算法,这和sentinel BBR算法有没什么场景上侧重或者说二者优缺点是什么?
- 自适应限流有没什么实践上的建议?
- 后续sentinel会支持更多的自适应限流算法吗?
我来解答一下 MOSN 这块的自适应限流算法和 Sentinel 的区别吧,MOSN 这边没有采用 BBR 的算法,但其根本原理差不多,都是基于排队论控制并发量,Sentinel 采用了 BBR 的方式,而 MOSN 则是采用按比例逐步调节,更像是一种 PID 算法。
MOSN 的改进之处在于会记录每个资源点一分钟的 Histogram 数据,当满足自适应限流的条件时,逐个接口比对当前的并发量和历史数据,判断是否有明显的异常,对于没有异常和本身并发量较小的资源点不会进行自适应限流。通过这种方式尽量减少杀伤范围。除此之外 MOSN 还加入了压测流量直接熔断的特性,当触发自适应限流时,会直接阻断所有的压测流量腾挪资源给线上流量。
老哥你好,借个楼,mosn有提供默认的自适应限流方式吗?我看了下代码,只看到了在pkg/filter/stream/flowcontrol
中提供了扩展,限流的SlotChain
需要自己实现的吧?这里讨论的mosn自适应限流方式具体是哪块代码
@yejialiango 是扩展的SlotChain实现的,不过这部分代码一直没精力提到社区来,所以你目前没看到,我这边只分享了大致的实现思路
了解了,多谢老哥解答
Issue Description
Type: feature request
sentinel中的自适应限流采用的是BBR算法,蚂蚁Mosn,淘宝的noah都有自适应限流产品,有以下几个问题,盼解答