精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

瞧瞧別人家的接口重試,那叫一個優雅!

開發 前端
對于有些需要自定義退避算法、熔斷策略和多層防護的大中型系統(如支付核心接口),我們可以使用 Resilience4j。

前言

記得五年前的一個深夜,某個電商平臺的訂單退款接口突發異常,因為銀行系統網絡抖動,退款請求連續失敗。

原本技術團隊只是想“好心重試幾次”,結果開發小哥寫的重試代碼竟瘋狂調用了銀行的退款接口 82次!

最終導致用戶賬戶重復退款,平臺損失過百萬。

老板在復盤會上質問:“接口重試這么基礎的事,為什么還能捅出大簍子?”

大家啞口無言,因為所有人都以為只要加個 for 循環,再睡幾秒就完事了……

這篇文章跟大家一起聊聊重試的7種常用方案,希望對你會有所幫助。

1.暴力輪回法

問題場景

某實習生寫的用戶注冊短信發送接口。

在一個while循環中,重復調用第三方的發短信接口給用戶發送短信。

代碼如下:

public void sendSms(String phone) {
    int retry = 0;
    while (retry < 5) { // 無腦循環
        try {
            smsClient.send(phone);
            break;
        } catch (Exception e) {
            retry++;
            Thread.sleep(1000); // 固定1秒睡眠
        }
    }
}

事故現場

某次短信服務器出現了過載問題,導致所有請求都延遲了3秒。

這個暴力循環的代碼在 0.5秒內同時發起數萬次重試,直接打爆短信平臺,觸發了 熔斷封禁,連正常請求也被拒絕。

教訓

  • ?? 不做延遲間隔調整:固定間隔導致重試請求集中爆發
  • ?? 無視異常類型:非臨時性錯誤(如參數錯誤)也嘗試重試
  • ?? 修復方案:加上隨機的重試間隔,并過濾不可重試的異常

2.Spring Retry

應用場景

Spring Retry適用于中小項目,通過注解快速實現基本重試和熔斷(如訂單狀態查詢接口)。

通過聲明@Retryable注解,來實現接口重試的功能。

配置示例

@Retryable(
    value = {TimeoutException.class}, // 只重試超時異常
    maxAttempts = 3,
    backoff = @Backoff(delay = 1000, multiplier = 2) // 1秒→2秒→4秒
)
public boolean queryOrderStatus(String orderId) {
    return httpClient.get("/order/" + orderId);
}

@Recover // 兜底回退方法
public boolean fallback() {
    return false; 
}

優勢

  • 聲明式注解:代碼簡潔,與業務邏輯解耦
  • 指數退避:自動拉長重試間隔
  • 熔斷集成:結合 @CircuitBreaker 可快速阻斷異常流量

3.Resilience4j

高階場景

對于有些需要自定義退避算法、熔斷策略和多層防護的大中型系統(如支付核心接口),我們可以使用 Resilience4j。

核心代碼如下:

// 1. 重試配置:指數退避 + 隨機抖動
RetryConfig retryConfig = RetryConfig.custom()
    .maxAttempts(3)
    .intervalFunction(IntervalFunction.ofExponentialRandomBackoff(
        1000L, // 初始間隔1秒
        2.0,   // 指數倍數
        0.3    // 隨機抖動系數
    ))
    .retryOnException(e -> e instanceof TimeoutException)
    .build();

// 2. 熔斷配置:錯誤率超50%時熔斷
CircuitBreakerConfig cbConfig = CircuitBreakerConfig.custom()
    .slidingWindow(10, 10, CircuitBreakerConfig.SlidingWindowType.COUNT_BASED) 
    .failureRateThreshold(50)
    .build();

// 組合使用
Retry retry = Retry.of("payment", retryConfig);
CircuitBreaker cb = CircuitBreaker.of("payment", cbConfig);

// 執行業務邏輯
Supplier<Boolean> supplier = () -> paymentService.pay();
Supplier<Boolean> decorated = Decorators.ofSupplier(supplier)
    .withRetry(retry)
    .withCircuitBreaker(cb)
    .decorate();

效果

某電商大廠上線此方案后,支付接口 超時率下降60% ,且熔斷觸發頻率降低近 90%

真正做到了“打不還手,罵不還口”。

4.MQ隊列

適用場景

高并發、允許延時的異步場景(如物流狀態同步)。

實現原理

  1. 首次請求失敗后,將消息投遞至 延時隊列
  2. 隊列根據預設的延時時間(如5秒、30秒、1分鐘)重試消費
  3. 若達到最大重試次數,則轉存至 死信隊列(人工處理)

RocketMQ代碼片段如下:

// 生產者發送延時消息
Message<String> message = new Message();
message.setBody("訂單數據");
message.setDelayTimeLevel(3); // RocketMQ預設的10秒延遲級別
rocketMQTemplate.send(message);

// 消費者重試
@RocketMQMessageListener(topic = "DELAY_TOPIC")
public class DelayConsumer {
    @Override
    public void handleMessage(Message message) {
        try {
            syncLogistics(message);
        } catch (Exception e) {
            // 重試次數 + 1,并重新發送到更高延遲級別
            resendWithDelay(message, retryCount + 1);
        }
    }
}

如何RocketMQ的消費者消費失敗,會自動發起重試。

5.定時任務

適用場景

對于有些不需要實時反饋,允許批量處理的任務(如文件導入)的業務場景,我們可以使用定時任務。

在這里以Quartz為例。

具體代碼如下:

@Scheduled(cron = "0 0/5 * * * ?") // 每5分鐘執行
public void retryFailedTasks() {
    List<FailedTask> list = failedTaskDao.listUnprocessed(5); // 查失敗任務
    list.forEach(task -> {
        try {
            retryTask(task);
            task.markSuccess();
        } catch (Exception e) {
            task.incrRetryCount();
        }
        failedTaskDao.update(task);
    });
}

6.兩階段提交

適用場景

對于嚴格保證數據一致性的場景(如資金轉賬),我們可以使用兩階段提交機制。

關鍵實現

  1. 第一階段:記錄操作流水到數據庫(狀態為“進行中”)
  2. 第二階段:調用遠程接口,并根據結果更新流水狀態
  3. 定時補償:掃描超時的“進行中”流水重新提交

大致代碼如下:

@Transactional
public void transfer(TransferRequest req) {
    // 1. 記錄流水
    transferRecordDao.create(req, PENDING);
    
    // 2. 調用銀行接口
    boolean success = bankClient.transfer(req);
    
    // 3. 更新流水狀態
    transferRecordDao.updateStatus(req.getId(), success ? SUCCESS : FAILED);
    
    // 4. 失敗轉異步重試
    if (!success) {
        mqTemplate.send("TRANSFER_RETRY_QUEUE", req);
    }
}

7.分布式鎖

應用場景

對于一些多服務實例、多線程環境的防重復提交(如秒殺)的業務場景,我們可以使用分布式鎖。

這里以Redis + Lua的分布式鎖為例。

代碼如下:

public boolean retryWithLock(String key, int maxRetry) {
    String lockKey = "api_retry_lock:" + key;
    for (int i = 0; i < maxRetry; i++) {
        // 嘗試獲取分布式鎖
        if (redis.setnx(lockKey, "1", 30, TimeUnit.SECONDS)) {
            try {
                return callApi();
            } finally {
                redis.delete(lockKey);
            }
        }
        Thread.sleep(1000 * (i + 1)); // 等待釋放鎖
    }
    return false;
}

總結

重試就像機房里的滅火器——永遠不希望用到它,但必須保證關鍵時刻能救命。

我們工作中選擇哪種方案?

別只看技術潮流,而要看業務的長矛和盾牌,需要哪種配合。

最后送大家一句話:系統穩定的秘訣,是永遠對重試保持敬畏。

責任編輯:武曉燕 來源: 蘇三說技術
相關推薦

2025-07-14 00:00:00

接口重試MQTT冪等性

2022-12-12 08:14:47

2025-05-30 08:20:54

2024-11-12 08:20:31

2025-04-08 08:20:33

2024-10-24 08:21:33

2024-12-02 00:59:30

Spring

2025-04-22 08:20:51

2025-03-06 08:21:02

判空entity對象

2025-02-28 08:21:00

2025-08-19 10:01:43

2020-11-03 16:00:33

API接口微服務框架編程語言

2020-11-17 09:34:31

API接口后端

2022-06-10 13:03:44

接口重試while

2017-11-12 21:32:52

戴爾

2015-09-24 09:22:16

nodejs頁面始末

2016-01-08 09:49:19

DockerDocker案例云應用開發

2017-09-22 13:22:59

大數據南京大學宿舍

2023-12-30 20:04:51

MyBatis框架數據

2021-07-14 06:31:08

京東互聯網加薪
點贊
收藏

51CTO技術棧公眾號

久久免费视频网| 日韩亚洲欧美成人一区| 欧美日韩综合另类| 波多野结衣激情视频| 色喇叭免费久久综合| 日韩欧美123| 国产精品免费成人| 黄av在线播放| 99久久99久久精品免费看蜜桃| 欧洲美女免费图片一区| 国产人与禽zoz0性伦| 91蝌蚪精品视频| 欧美日韩国产丝袜另类| 中文字幕中文字幕在线中一区高清| www.久久久久久久久久| 三级影片在线观看欧美日韩一区二区| 久久久久999| 大黑人交xxx极品hd| 99综合99| 欧美亚洲国产bt| 农民人伦一区二区三区| 日本蜜桃在线观看| 91麻豆福利精品推荐| 成人黄色免费看| youjizz在线视频| 欧美二区视频| 色先锋资源久久综合5566| 欧美肉大捧一进一出免费视频| 性欧美video另类hd尤物| 色婷婷综合久久久中文一区二区| 日本一二三区视频在线| 99reav在线| 久久久久久久久久美女| www.久久草| 97人妻精品一区二区三区动漫| 三级影片在线观看欧美日韩一区二区 | 那种视频在线观看| 肉体视频在线| 亚洲美女免费在线| 亚洲砖区区免费| 国产在线网站| 久久综合色天天久久综合图片| 99久久久久国产精品免费| 96日本xxxxxⅹxxx17| 免费观看30秒视频久久| 国产成人亚洲综合91精品| 国产成人无码精品亚洲| 亚洲午夜激情在线| 色与欲影视天天看综合网| 最新一区二区三区| 国产精品二区不卡| 最近2019中文字幕一页二页| 国内精品卡一卡二卡三| 精品一区二区三| 国产亚洲精品久久久优势| 成人免费看aa片| 亚洲精品一级二级三级| 亚洲免费精彩视频| 国产美女喷水视频| 日韩三区视频| 精品视频—区二区三区免费| 天天插天天射天天干| 久久中文资源| 日韩精品中文字幕视频在线| 久久亚洲AV成人无码国产野外| 日韩人体视频| 亚洲无限av看| 一本在线免费视频| 日韩久久视频| 免费不卡欧美自拍视频| 男女免费视频网站| 亚洲日本免费| 日本国产一区二区三区| 无码任你躁久久久久久久| 美女视频一区在线观看| 成人精品aaaa网站| aa视频在线免费观看| 懂色av一区二区三区免费看| 久久精品一二三区| 国产www.大片在线| 成人免费小视频| 一卡二卡三卡视频| 日韩欧美一区二区三区在线观看| 欧美中文字幕一区| 欧美xxxxxbbbbb| 免费萌白酱国产一区二区三区| 亚洲精品在线看| 亚洲精品卡一卡二| 黄色在线成人| 国产精品久久久久免费a∨大胸| 国产乱码精品一区二三区蜜臂 | 久久尤物视频| 国产一区二中文字幕在线看 | 欧美xnxx| 日韩一区二区影院| 丰满少妇一区二区三区| 久久国产亚洲| 97视频在线观看亚洲| 超碰在线免费97| 国产a视频精品免费观看| 欧美午夜精品久久久久免费视| 免费av在线网站| 黑人精品xxx一区| 天天久久综合网| 亚洲精品国产动漫| 九九精品视频在线观看| 999视频在线| 国产不卡高清在线观看视频| 日韩欧美在线一区二区| h片在线观看视频免费| 欧美日韩一区在线观看| 欧美大喷水吹潮合集在线观看| 国产电影一区二区在线观看| 欧美一乱一性一交一视频| 99国产精品一区二区三区| 久久久久久久网| 亚洲精品久久久久久久蜜桃臀| 精品久久久网| 精品亚洲一区二区三区| 久久久久成人精品无码| 麻豆91在线播放| 欧美午夜欧美| 韩日毛片在线观看| 日韩美女在线视频| 香蕉成人在线视频| 久久婷婷亚洲| 久久99精品国产一区二区三区| 成人在线观看亚洲| 欧美三级韩国三级日本一级| aa一级黄色片| 亚洲人体偷拍| 国产日韩欧美精品| 97影院秋霞午夜在线观看| 欧美色爱综合网| 免费看污片网站| 日韩午夜精品| 国产一级精品aaaaa看| 日本无删减在线| 欧美二区在线观看| 国产精品成人在线视频| 日韩精品一区第一页| 久久精品五月婷婷| 蜜桃视频动漫在线播放| 亚洲国产精品久久精品怡红院| 男女免费视频网站| 国产成人免费视频网站| 国产女人18毛片| 国产不卡精品| 欧美大片免费观看| 性欧美18一19性猛交| 亚洲精品欧美在线| 激情小说欧美色图| 韩国在线一区| 国产中文一区二区| 欧美久久天堂| 亚洲欧美国产视频| 久久精品无码av| 久久久久国产免费免费| 热久久精品国产| 成人羞羞网站入口免费| 国产精品久久久久久久电影| av每日在线更新| 欧美浪妇xxxx高跟鞋交| 欧美极品视频在线观看| 丰满岳乱妇一区二区三区| 男的插女的下面视频| 色综合久久中文| 国产成人激情视频| 人人干在线视频| 日韩欧美中文字幕制服| 精品一级少妇久久久久久久| 99re亚洲国产精品| 男人插女人下面免费视频| 久久精品国产68国产精品亚洲| 成人精品在线观看| 丁香花在线电影小说观看| 亚洲激情成人网| 国产情侣呻吟对白高潮| 亚洲欧洲美洲综合色网| 亚洲欧美高清在线| 日韩中文字幕91| 樱花www成人免费视频| 伊人精品综合| 国产精品久久久久久久av大片| 国产福利在线播放麻豆| 亚洲国产精品久久| 做爰视频毛片视频| 一区二区三区欧美亚洲| 久久久久国产精品无码免费看| 轻轻草成人在线| 无码人妻精品一区二区蜜桃百度| 西野翔中文久久精品字幕| 国产美女扒开尿口久久久| 男女视频在线| 这里只有精品视频| 国产黄色片av| 在线精品视频免费观看| 欧美又粗又大又长| 久久人人97超碰com| 久久精品亚洲天堂| 久久久成人网| 成人午夜免费在线视频| 精品久久一区| 国内成+人亚洲| 日韩三级一区| 日本久久中文字幕| 国产高清在线a视频大全| 亚洲最大中文字幕| 日本激情一区二区| 91麻豆精品国产91久久久| 一级黄色免费网站| 亚洲精品videosex极品| 国产黄色片在线| 99久久婷婷国产综合精品| 在线看免费毛片| 老**午夜毛片一区二区三区| 国自产拍偷拍精品啪啪一区二区 | 91丨九色丨黑人外教| 被黑人猛躁10次高潮视频| 久久久亚洲人| 免费看又黄又无码的网站| 亚洲国产精品综合久久久| 色噜噜狠狠一区二区三区| 欧美在线一级片| 国产精品毛片久久| 欧美人与物videos另类| 福利在线一区| 91久久国产综合久久蜜月精品| 成人福利片在线| 国产a∨精品一区二区三区不卡| 毛片网站在线看| 久久99久久99精品免观看粉嫩| av网站无病毒在线| 亚洲色图校园春色| 香蕉视频国产在线| 亚洲国产高潮在线观看| 国模人体一区二区| 欧美一卡二卡在线| 99热这里只有精品66| 欧美人牲a欧美精品| 一区二区www| 欧美日韩国产中文| 一本色道久久综合无码人妻| 欧美在线免费观看亚洲| 波多野结衣在线观看一区| 日韩欧美亚洲范冰冰与中字| 久久一区二区三区视频| 欧美日韩国产中文字幕| 国产综合色香蕉精品| 亚洲s色大片| 色系列之999| 欧美成人hd| 久久久91精品国产| 草莓福利社区在线| 大胆欧美人体视频| 主播国产精品| 久久久久国产一区二区三区| 波多野在线观看| 91高清视频在线免费观看| 蜜桃视频m3u8在线观看| 日本欧美国产在线| 主播大秀视频在线观看一区二区| 国产人妖伪娘一区91| 国产精品视频一区二区三区| 91亚洲精品丁香在线观看| 2023国产精华国产精品| 好吊妞www.84com只有这里才有精品| 欧美a一欧美| 欧美日韩在线精品一区二区三区| 日韩在线观看| 国产成人永久免费视频| 99精品视频免费| 另类小说色综合| 国产一级精品在线| 国产精品二区视频| 99精品国产91久久久久久| 爱爱免费小视频| 国产精品久久久久久户外露出 | 日本人妻一区二区三区| 91欧美激情一区二区三区成人| 国产熟女一区二区| 亚洲欧美一区二区久久| 国产精品成人网站| 欧美这里有精品| xxxx国产精品| 亚洲欧美制服丝袜| 麻豆网站视频在线观看| 国内揄拍国内精品| 97精品国产综合久久久动漫日韩 | 女一区二区三区| 永久域名在线精品| 99精品免费| 中文字幕日韩久久| 久久久久青草大香线综合精品| 亚洲精品久久久久久国| 大桥未久av一区二区三区| 国产又粗又猛又爽又黄视频 | 一区二区黄色片| 亚洲日本中文字幕区| 国产www在线| 日韩一区二区三| 国产黄色在线播放| 久久久中精品2020中文| 久久免费影院| 麻豆精品视频| 精品1区2区3区4区| 久久久久久久久久一区二区| 91网站在线播放| 免费在线观看国产精品| 91国产免费观看| 日韩在线观看视频一区二区三区 | 久久噜噜色综合一区二区| 日韩欧美在线视频日韩欧美在线视频| a级片免费视频| 正在播放欧美一区| 自拍偷拍亚洲视频| 91传媒免费看| 色一区二区三区四区| 999香蕉视频| 9l国产精品久久久久麻豆| 国精品无码一区二区三区| 欧美亚洲精品一区| 青青草在线视频免费观看| 欧美大成色www永久网站婷| 电影亚洲一区| 欧美亚洲爱爱另类综合| 亚洲裸体俱乐部裸体舞表演av| 国产精品中文久久久久久| 中文字幕一区二区三区在线观看 | 久久精品国语| 精品影片一区二区入口| 亚洲综合色视频| 国产av无码专区亚洲av麻豆| 久久精品视频导航| 亚洲欧洲日韩精品在线| 亚洲精蜜桃久在线| 日本强好片久久久久久aaa| 丰腴饱满的极品熟妇| 欧美日韩亚洲高清| 艳母动漫在线看| 96精品视频在线| 外国成人在线视频| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 成人综合婷婷国产精品久久蜜臀| 国模无码国产精品视频| 在线综合亚洲欧美在线视频| 里番在线观看网站| 91精品久久久久久久久久另类| 久久日文中文字幕乱码| 手机免费av片| 亚洲欧美日韩精品久久久久| 国产丰满果冻videossex| 久久国产精品久久久| 91精品福利观看| 欧美 国产 精品| 国产成人丝袜美腿| 国产亚洲精品av| 日韩电影免费观看在线观看| 韩日成人影院| 自拍另类欧美| 国产美女精品一区二区三区| 九九精品在线观看视频| 精品少妇一区二区三区在线视频| 91福利在线尤物| 欧美极品一区| 蜜桃视频一区二区三区在线观看| 欧美一级片在线视频| 日韩欧美国产综合在线一区二区三区| 青草在线视频在线观看| 精品视频一区在线| 日韩在线卡一卡二| 亚洲波多野结衣| 精品嫩草影院久久| 在线观看网站免费入口在线观看国内| 日本不卡一区二区三区在线观看| 欧美aa在线视频| 欧美另类视频在线观看| 亚洲国产精品高清久久久| 国模视频一区| 日本高清视频免费在线观看| av欧美精品.com| 中文永久免费观看| 欧美成人午夜激情在线| 女仆av观看一区| 中文字幕av专区| 一区二区不卡在线视频 午夜欧美不卡在 | 国产一区二区三区成人欧美日韩在线观看 | 波多野结衣一区二区三区在线 | 日韩激情小视频| 日韩av在线免费观看一区| 91tv亚洲精品香蕉国产一区| 中文字幕在线中文| 99精品视频免费在线观看| 亚洲熟妇无码久久精品| 国内精品久久久久久久久| 成人6969www免费视频| 香蕉视频免费网站| 欧美性视频一区二区三区| 51av在线| a级网站在线观看|