最近更新时间:2025-03-31 11:22:29
Node SDK提供了多种重试等待策略,默认使用指数等待策略,您也可根据需要选择其他等待策略或自定义等待策略。
指数等待策略的等待时间随着重试次数的增加呈指数增长,公式如下:delay = multiplier * (2 ^ (retryState - 1))
其中:
multiplier
:基础等待时间,默认值为 200ms。
retryState
:当前重试次数。
maxInterval
:单次最大等待时间,默认值为10s。
假设 multiplier = 200ms
,maxInterval = 10s
:
第 1 次重试:200ms * (2^0) = 200ms
,重试间隔时间为200ms。
第 2 次重试:200ms * (2^1) = 400ms
,重试间隔时间为400ms。
第 3 次重试:200ms * (2^2) = 800ms
,重试间隔时间为800ms。
适用于需要快速增加等待时间的场景,如网络请求重试,避免短时间内频繁重试导致服务器压力过大。
var KS3 = require('ks3');
var client = new KS3({
AK: '<ak>',
SK: '<sk>',
BucketName: '<bucketName>',
Endpoint: '<endpoint>',
RetryStrategy: 'ExponentialWait'
})
线性等待策略的等待时间随着重试次数的增加呈线性增长,公式如下:delay = start * retryState
其中:
start
:基础等待时间,默认值为 200ms。
retryState
:当前重试次数。
maxInterval
:单次最大等待时间,默认值为10s。
假设 start = 200ms
,maxDelay = 10s
:
第 1 次重试:200ms * 1 = 200ms
,重试间隔时间为200ms。
第 2 次重试:200ms * 2 = 400ms
,重试间隔时间为400ms。
第 3 次重试:200ms * 3 = 600ms
,重试间隔时间为600ms。
适用于需要逐步增加等待时间的场景,如任务队列处理,避免短时间内大量重试。
var KS3 = require('ks3');
var client = new KS3({
AK: '<ak>',
SK: '<sk>',
BucketName: '<bucketName>',
Endpoint: '<endpoint>',
RetryStrategy: 'LinearWait'
})
固定等待策略的等待时间始终为一个固定值,公式如下:delay = fixedInterval
其中:
fixedInterval
:基础等待时间,默认值为 200ms。
假设 fixedInterval = 200ms
:
第 1 次重试间隔时间为200ms。
第 2 次重试间隔时间为200ms。
第 3 次重试间隔时间为200ms。
适用于需要稳定等待时间的场景,如固定间隔的重试逻辑。
var KS3 = require('ks3');
var client = new KS3({
AK: '<ak>',
SK: '<sk>',
BucketName: '<bucketName>',
Endpoint: '<endpoint>',
RetryStrategy: 'FixedWait'
})
抖动等待策略的等待时间在初始值的基础上增加一个随机抖动值(大于等于0且小于1),公式如下:delay = initial + (Math.random() * jitter)
其中:
initial
:初始等待时间,默认值为 200ms
。
jitter
:抖动范围,默认值为 500ms
。
最终等待时间会被限制在 0
和 maxInterval(默认值10s)
之间。
假设 initial = 200
,jitter = 500
,maxInterval = 10s
:
第 1 次重试:假设随机数为 0,结果为 200 + 0 * 500 = 200
,重试间隔时间为200ms。。
第 2 次重试:假设随机数为 0.8,结果为 200 + 0.8 * 500 = 600
,重试间隔时间为600ms。
第 3 次重试:假设随机数为 0.6,结果为 200 + 0.6 * 500 = 500
,重试间隔时间为500ms。
适用于需要避免重试请求同时到达的场景,如分布式系统中的请求重试,通过抖动减少请求冲突。
var KS3 = require('ks3');
var client = new KS3({
AK: '<ak>',
SK: '<sk>',
BucketName: '<bucketName>',
Endpoint: '<endpoint>',
RetryStrategy: 'JitterWait'
})
纯净模式