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

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

開發 前端
這篇文章跟大家一起聊聊接口重試的8種常用方案,希望對你會有所幫助。?

2025年某電商平臺深夜故障,因重試策略不當導致銀行退款接口被調用82次,引發重復退款126萬元!

復盤發現:80%的開發者認為重試就是for循環+Thread.sleep(),卻忽略了重試風暴、冪等性缺失、資源雪崩等致命問題。

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

一、重試機制的原因

1.為什么需要重試?

臨時性故障占比超70%,合理重試可將成功率提升至99%以上。

2.重試的三大陷阱

  • 重試風暴:固定間隔重試引發請求洪峰(如萬次重試壓垮服務)
  • 數據不一致:非冪等操作導致重復生效(如重復扣款)
  • 鏈路阻塞:長時重試耗盡線程資源(如數據庫連接池枯竭)

二、基礎重試方案

1.暴力輪回法(青銅)

問題代碼:

// 危險!切勿直接用于生產!
public void sendSms(String phone) {
    int retry = 0;
    while (retry < 5) {
        try {
            smsClient.send(phone);
            break;
        } catch (Exception e) {
            retry++;
            Thread.sleep(1000); // 固定1秒間隔
        }
    }
}

事故案例:某平臺短信接口重試風暴,觸發第三方熔斷封禁。

優化方向:增加隨機抖動 + 異常過濾。

2.Spring Retry(黃金)

聲明式注解控制重試:

@Retryable(
    value = {TimeoutException.class}, // 僅重試超時異常
    maxAttempts = 3,
    backoff = @Backoff(delay = 1000, multiplier = 2) // 指數退避:1s→2s→4s
)
public boolean queryOrder(String orderId) {
    return httpClient.get("/order/" + orderId);
}

@Recover // 兜底降級
public boolean fallback(TimeoutException e) {
    return false; 
}

優勢:

  • 注解驅動,業務零侵入
  • 支持指數退避策略
  • 無縫集成熔斷器@CircuitBreaker

三、高階重試方案

1.Resilience4j(白金)

應對高并發場景的重試+熔斷組合拳:

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

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

// 組合裝飾
Supplier<Boolean> supplier = () -> paymentService.pay();
Supplier<Boolean> decorated = Decorators.ofSupplier(supplier)
    .withRetry(Retry.of("payment", retryConfig))
    .withCircuitBreaker(CircuitBreaker.of("payment", cbConfig))
    .decorate();

效果:某支付系統接入后超時率下降60%,熔斷觸發率降低90%

2.Guava-Retrying(鉆石)

靈活定制復雜重試邏輯:

Retryer<Boolean> retryer = RetryerBuilder.<Boolean>newBuilder()
    .retryIfResult(Predicates.equalTo(false)) // 返回false重試
    .retryIfExceptionOfType(IOException.class)
    .withWaitStrategy(WaitStrategies.exponentialWait(1000, 30, TimeUnit.SECONDS))
    .withStopStrategy(StopStrategies.stopAfterAttempt(5))
    .build();

retryer.call(() -> uploadService.upload(file)); // 執行

核心能力:

  • 支持結果/異常雙模式觸發
  • 提供7種等待策略(隨機、指數、遞增等)
  • 可監聽每次重試事件

四、分布式重試方案

1.MQ延時隊列(星耀Ⅰ)

適用場景:異步解耦的高并發系統(如物流狀態同步)

架構原理:

RocketMQ實現:

// 生產者發送延時消息
Message msg = new Message();
msg.setBody(orderData);
msg.setDelayTimeLevel(3); // RocketMQ預設10秒延遲
rocketMQTemplate.send(msg);

// 消費者
@RocketMQMessageListener(topic = "RETRY_TOPIC")
publicclass RetryConsumer {
    public void consume(Message msg) {
        try {
            process(msg);
        } catch (Exception e) {
            // 提升延遲級別重發
            msg.setDelayTimeLevel(5); 
            resend(msg);
        }
    }
}

優勢:

  • 重試與業務邏輯解耦
  • 天然支持梯度延時
  • 死信隊列兜底人工處理

2.定時任務補償(星耀Ⅱ)

適用場景:允許延遲的批處理任務(如文件導入)

@Scheduled(cron = "0 0/5 * * * ?") // 每5分鐘執行
public void retryFailedTasks() {
    List<FailedTask> tasks = taskDao.findFailed(MAX_RETRY);
    tasks.forEach(task -> {
        if (retry(task)) {
            task.markSuccess();
        } else {
            task.incrRetryCount();
        }
        taskDao.update(task);
    });
}

關鍵點:

  • 數據庫記錄失敗任務
  • 低峰期批量處理
  • 獨立線程池隔離資源

3.兩階段提交(王者Ⅰ)

金融級一致性保障(如轉賬):

@Transactional
public void transfer(TransferRequest req) {
    // 階段1:持久化操作流水
    TransferRecord record = recordDao.create(req, PENDING);
    
    // 階段2:調用銀行接口
    boolean success = bankClient.transfer(req);
    
    // 更新狀態
    recordDao.updateStatus(record.getId(), success ? SUCCESS : FAILED);
    
    if (!success) {
        mqTemplate.send("TRANSFER_RETRY_QUEUE", req); // 觸發異步重試
    }
}

// 補償任務(掃描掛起流水)
@Scheduled(fixedRate = 30000)
public void compensate() {
    List<TransferRecord> pendings = recordDao.findPending(30);
    pendings.forEach(this::retryTransfer);
}

核心思想:操作前先留痕,任何失敗可追溯

4.分布式鎖重試(王者Ⅱ)

防重復提交終極方案(如秒殺):

public boolean retryWithLock(String key, int maxRetry) {
    String lockKey = "RETRY_LOCK:" + key;
    for (int i = 0; i < maxRetry; i++) {
        if (redis.setIfAbsent(lockKey, "1", 30, SECONDS)) {
            try {
                return callApi(); // 持有鎖時執行
            } finally {
                redis.delete(lockKey);
            }
        }
        Thread.sleep(1000 * (i + 1)); // 等待鎖釋放
    }
    return false;
}

適用場景:

  • 多實例部署環境
  • 高競爭資源訪問
  • 等冪性要求極高業務

五、響應式重試:Spring WebFlux方案

1.響應式重試操作符

Mono<String> remoteCall = Mono.fromCallable(() -> {
    if (Math.random() > 0.5) throw new RuntimeException("模擬失敗");
    return "Success";
});

remoteCall.retryWhen(Retry.backoff(3, Duration.ofSeconds(1))
          .doBeforeRetry(signal -> log.warn("第{}次重試", signal.totalRetries()))
          .subscribe();

策略支持:

  • 指數退避:Retry.backoff(maxAttempts, firstBackoff)
  • 隨機抖動:.jitter(0.5)
  • 條件過濾:.filter(ex -> ex instanceof TimeoutException)

六、重試的避坑指南

1.必須實現的三大防護

防護類型

目的

實現方案

冪等性防護

防止重復生效

唯一ID+狀態機

重試風暴防護

避免洪峰沖擊

指數退避+隨機抖動

資源隔離

保護主鏈路資源

線程池隔離/熔斷器

2.經典踩坑案例

  • 坑1:無限制重試→ 某系統因未設重試上限,線程池爆滿導致集群雪崩
  • 解法maxAttempts=3 + 熔斷降級
  • 坑2:忽略錯誤類型→ 參數錯誤(4xx)被反復重試,放大無效流量
  • 解法:retryOnException(e -> e instanceof TimeoutException)
  • 坑3:上下文丟失→ 異步重試后丟失用戶會話信息
  • 解法:重試前快照關鍵上下文(如userId、requestId)

七、方案選型參考圖

總結

  • 敬畏每一次重試:重試不是暴力補救,而是精密流量控制。
  • 面向失敗設計:假設網絡不可靠、服務會宕機、資源終將枯竭。
  • 分層防御體系

a.代碼層:冪等性 + 超時控制

b.框架層:退避策略 + 熔斷降級

c.架構層:異步解耦 + 持久化補償

  • 沒有銀彈:秒殺場景用分布式鎖,支付系統用兩階段提交,IoT設備用MQTT重試機制。

正如分布式系統大師Leslie Lamport所言:“重試是分布式系統的成人禮”

掌握這8種方案,你將擁有讓系統“起死回生”的魔法!

責任編輯:姜華 來源: 蘇三說技術
相關推薦

2025-03-11 08:20:58

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-03-06 08:21:02

判空entity對象

2025-04-22 08:20:51

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技術棧公眾號

潘金莲一级淫片aaaaa| 亚洲精品久久区二区三区蜜桃臀| 中文字幕第28页| 天海翼精品一区二区三区| 91成人国产精品| 熟妇熟女乱妇乱女网站| 欧美在线 | 亚洲| 日韩精品视频网| 美日韩精品免费视频| 老司机免费视频| 成人国产精品一区二区免费麻豆| 亚洲精品高清在线| 欧美在线视频二区| www.av网站| 日本不卡视频一二三区| 欧美激情在线有限公司| 免费看的黄色网| 2020最新国产精品| 欧美无人高清视频在线观看| 美脚丝袜脚交一区二区| 永久免费在线观看视频| 国产高清久久久| 国产精品成人va在线观看| 欧美人与禽zozzo禽性配| 欧美色图在线播放| 亚洲激情自拍图| 91看片破解版| 成人精品国产亚洲| 日韩欧美黄色动漫| 99色这里只有精品| 成人在线视频亚洲| 国产精品人成在线观看免费| 久久久久久国产精品mv| 国产jzjzjz丝袜老师水多| 蜜桃久久久久久| 日本中文字幕不卡免费| 97人人澡人人爽人人模亚洲| 欧美成人精品| 久久精品99无色码中文字幕| 欧美成人三级伦在线观看| 日韩成人视屏| 欧美一级专区免费大片| jizzzz日本| 欧美色片在线观看| 日韩欧美中文第一页| 可以在线看的av网站| 操喷在线视频| 亚洲伊人色欲综合网| 国产精品h视频| 在线国产91| 国产精品女同一区二区三区| 日韩在线三级| 97超碰国产一区二区三区| 国产人成亚洲第一网站在线播放| 麻豆精品蜜桃一区二区三区| 天堂在线资源8| 成人av网站免费| 国产一区二区三区四区hd | 911精品国产一区二区在线| 亚洲色图久久久| 全球最大av网站久久| 欧美色网站导航| 天堂av在线8| 麻豆精品国产| 精品国产污污免费网站入口 | 人妻少妇精品久久| 韩国成人二区| 色婷婷综合中文久久一本| 亚洲爆乳无码精品aaa片蜜桃| 国产在线激情| 亚洲图片欧美综合| 91猫先生在线| 成人在线爆射| 色综合久久久久| 国产精品视频分类| 精品久久亚洲| 亚洲精品福利资源站| 免费污网站在线观看| 不卡视频在线| 欧美高清视频免费观看| 少妇一级淫片免费放中国| 久久精品女人天堂| 成人免费视频在线观看超级碰| 精品美女www爽爽爽视频| 成人的网站免费观看| 青青草原成人| a视频在线观看免费| 午夜亚洲福利老司机| 日韩免费高清在线| 国产精品va视频| 亚洲精品成人av| 国产视频不卡在线| 很黄很黄激情成人| 国产精品va在线播放| 国产免费av观看| 91丨porny丨中文| 一本色道久久99精品综合| av2020不卡| 欧美三级资源在线| 国产大学生视频| 日韩一区欧美| 97色在线观看| 精品国产av一区二区| 久久久五月婷婷| 轻点好疼好大好爽视频| av在线播放一区| 亚洲高清久久网| 五月天色婷婷丁香| 男女av一区三区二区色多| 91av一区二区三区| www.av在线| 欧美日韩国产综合新一区| 在线免费看v片| 奇米影视亚洲| 91成人在线视频| 国产高中女学生第一次| 国产精品色婷婷| 夫妻免费无码v看片| 欧美久久一区二区三区| 中文亚洲视频在线| 欧美a∨亚洲欧美亚洲| 床上的激情91.| 中国黄色录像片| 99久久er| 亚洲天堂2020| 欧美 日韩 精品| www.成人在线| avav在线播放| 中文字幕av一区二区三区四区| 色999日韩欧美国产| 麻豆成人免费视频| 26uuu色噜噜精品一区二区| 欧美国产日韩激情| 999精品视频在这里| 欧美成人网在线| 99精品视频在线播放免费| 国产精品人成在线观看免费| 国产精品入口免费软件| 免费观看久久av| 欧洲美女免费图片一区| 五月婷婷在线观看视频| 午夜a成v人精品| 中文字幕天堂网| 在线成人欧美| 国产伦精品一区二区三区四区视频 | 美国黄色a级片| 亚洲国产国产亚洲一二三| 国产99在线免费| xxx.xxx欧美| 亚洲国产精品一区二区三区| 国产精品a成v人在线播放| 成人综合在线网站| www.av中文字幕| 性欧美xxxx免费岛国不卡电影| 91精品国产91久久| 青青青免费视频在线2| 色综合天天综合| 人人爽人人爽人人片| 久久99深爱久久99精品| 99精品视频网站| 亚洲一二三区视频| 91精品国产高清自在线| 国产综合在线观看| 欧美日韩一级片在线观看| 99成人在线观看| 国产盗摄精品一区二区三区在线 | 天天摸日日摸狠狠添| 蜜臀国产一区二区三区在线播放 | 国产高清自拍一区| 免费毛片b在线观看| 亚洲人成网站色ww在线| 中文字幕人妻一区二区三区视频| 成人免费一区二区三区在线观看| 污污视频在线免费| 亚洲三级电影在线观看| 欧美一区二视频在线免费观看| 成人国产精品入口免费视频| 美女久久久久久久久久久| 神马午夜在线观看| 91福利资源站| 欧美日韩免费做爰视频| 91伊人久久大香线蕉| 性欧美1819| 影音先锋中文字幕一区二区| 欧美日韩综合网| 精品视频国内| 国产ts人妖一区二区三区 | 国产激情视频在线播放| 欧美日韩亚洲精品内裤| 懂色av粉嫩av浪潮av| 国产成人av资源| 日本久久精品一区二区| 国产精品啊啊啊| 无码免费一区二区三区免费播放| 免费观看亚洲天堂| 国产z一区二区三区| av毛片在线免费看| 亚洲天堂av在线免费| www.黄色国产| 欧美亚洲国产一区在线观看网站| 九九免费精品视频| 国产色爱av资源综合区| av影片在线播放| 奇米精品一区二区三区在线观看一| 免费看黄色a级片| 国产亚洲欧美日韩在线观看一区二区| 亚洲自拍小视频免费观看| 深夜成人影院| 午夜免费在线观看精品视频| 日本三级视频在线播放| 日韩精品在线播放| 精品人妻久久久久一区二区三区 | 亚洲免费福利一区| 成人欧美一区二区三区视频xxx| 欧美黑人粗大| 97精品伊人久久久大香线蕉| 欧美日韩欧美| 一级做a爰片久久毛片美女图片| 欧美 日韩 人妻 高清 中文| 69成人精品免费视频| 丰满人妻一区二区三区四区| 懂色av一区二区三区| 久久人人爽人人爽人人| 国产精品不卡在线观看| www色com| 久久精品人人做| 黄色录像a级片| 成人性色生活片免费看爆迷你毛片| 日本在线播放一区二区| 免费一级片91| 亚洲乱码国产一区三区| 国产精品综合色区在线观看| 91九色丨porny丨国产jk| 欧美视频亚洲视频| 女人被男人躁得好爽免费视频| 婷婷精品进入| 在线国产伦理一区| 婷婷亚洲五月| 国产又大又长又粗又黄| 水蜜桃久久夜色精品一区| 亚洲v国产v在线观看| 欧美一级精品| 亚洲一区二区在| 久久久久久久久丰满| 自拍偷拍亚洲色图欧美| 久久久五月天| 国产情侣第一页| 亚洲人成高清| 日本www在线播放| 久久一二三四| 91色国产在线| 九一九一国产精品| 伊人精品视频在线观看| 国产精品一区二区91| 特级特黄刘亦菲aaa级| www.激情成人| 免费网站在线高清观看| 国产精品久久久一区麻豆最新章节| 波多野结衣欲乱| 亚洲精品视频一区二区| 久久无码精品丰满人妻| 午夜不卡av免费| 国产主播第一页| 欧美精品vⅰdeose4hd| 精品人妻一区二区三区含羞草 | 青青草在线视频免费观看| 精品夜色国产国偷在线| 国产一二三区在线| 久久久精品视频成人| 国内在线免费视频| 日本欧美国产在线| 欧美黄页免费| 成人三级视频在线观看一区二区| 另类图片第一页| 日韩精品极品视频在线观看免费| 久久美女视频| 国产96在线 | 亚洲| 三级久久三级久久| 911av视频| 99v久久综合狠狠综合久久| 日本成人免费视频| 亚洲国产欧美在线人成| 激情网站在线观看| 欧美一区二区免费视频| 外国精品视频在线观看| 色av吧综合网| 亚洲精品88| 91老司机在线| 亚洲人挤奶视频| 国产精品无码电影在线观看| 久久九九99| 男生和女生一起差差差视频| 91论坛在线播放| 日本aⅴ在线观看| 日韩欧美中文免费| 亚洲AV无码成人片在线观看| 亚洲人成网站777色婷婷| 欧美1—12sexvideos| 国产精品久久视频| 欧美日韩大片免费观看| 在线观看免费黄色片| 免费看亚洲片| 中文字幕无人区二| 国产精品乱码一区二三区小蝌蚪| 日产欧产va高清| 欧美精品v国产精品v日韩精品| 涩爱av在线播放一区二区| 欧美成人中文字幕在线| 欧洲成人一区| 蜜桃久久精品乱码一区二区 | 全球av集中精品导航福利| 超碰免费在线公开| 青青国产91久久久久久| 丰满大乳奶做爰ⅹxx视频| 洋洋av久久久久久久一区| 亚洲一区二区色| 亚洲人a成www在线影院| 大黄网站在线观看| 亚洲综合av影视| 久久中文亚洲字幕| 国产第一页视频| 久久综合久久99| 日本三级一区二区| 精品91自产拍在线观看一区| 1769免费视频在线观看| 国产在线久久久| 日韩在线中文| 国产aaaaa毛片| 久久亚洲欧美国产精品乐播| 国产特黄大片aaaa毛片| 精品少妇一区二区三区视频免付费 | 亚洲精品一区在线| 国产精品久久成人免费观看| 日日夜夜免费精品| 成人黄色免费网址| 在线免费观看视频一区| 你懂的视频在线| 欧洲s码亚洲m码精品一区| 日韩精品免费一区二区夜夜嗨| www.国产在线视频| 成人a区在线观看| 日韩免费不卡视频| 日韩精品视频在线免费观看| 蜜桃av在线| 欧美日韩最好看的视频| 日本午夜精品视频在线观看| 亚洲а∨天堂久久精品2021| 欧美中文字幕一区二区三区| 国产69精品久久app免费版| 国产999精品视频| 日产午夜精品一线二线三线| 黄色三级视频在线| 日韩毛片精品高清免费| 99产精品成人啪免费网站| 久久777国产线看观看精品| heyzo欧美激情| 成人av一级片| 中文字幕第一页久久| 国产乱码一区二区| 欧美精品久久久久a| 青青草原在线亚洲| 日韩免费高清在线| **网站欧美大片在线观看| 午夜精品久久久久久久99| 羞羞色国产精品| 欧美精品第一区| 在线观看免费不卡av| 亚洲一区国产视频| 人成在线免费视频| 国产欧美精品一区二区| 欧美1区免费| 美国黄色一级毛片| 欧美天堂亚洲电影院在线播放| 国产精品一区二区三区视频网站| 97自拍视频| 久久亚洲电影| 欧美一区免费观看| 亚洲精品久久久一区二区三区| 欧洲av一区二区| 国产91porn| 久久久精品免费观看| 夜夜躁狠狠躁日日躁av| 久久久久久一区二区三区| 精品免费在线| 国产乱国产乱老熟300部视频| 黑人巨大精品欧美一区二区免费| 在线观看国产原创自拍视频| 国产成人精品免费视频大全最热| 久久一区中文字幕| 欧美爱爱小视频| 国产亚洲欧美日韩美女| 亚洲三级av| 黄大色黄女片18第一次| 亚洲午夜一区二区| 91.xxx.高清在线| 国产一区自拍视频| 精品一区二区三区av| 久久国产黄色片| 欧美日韩xxxxx| jiujiure精品视频播放|