工作中,退避重试是非常常见的算法,从tcp的滑动窗口,抑或是arrayList等的扩容,都能看到这个算法的影子。
1-2-4-8
也就是二倍退避,1->2->4->8->16等,往往还会有一个最大值作为限制。
个人觉得非常地学术,适用于大多数场景
1-2-5-10
1,2,5,10也是统计的时候比较好展现,数字对于人来说可读性很高
1-3-9-27
这种策略在GoogleSRE运维指南提到过,为了展示请求的分布,将直方图的边界定义为指数型增长是直观展现请求分布的最好方式。
个人觉得三的倍数有一个好处就是基于延迟的分布计算中间的均值没有小数点,方便一些后续的计算
举个例子如下:
时间区间 平均值
0~1s 500ms
1~3s 2s
3~9s 6s
9~27s 18s
网友评论