最近更新时间: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'
})
纯净模式
