<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>重试 on Leanku 的博客</title><link>https://www.leanku.com/tags/%E9%87%8D%E8%AF%95/</link><description>Recent content in 重试 on Leanku 的博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 11 Jul 2025 20:46:01 +0800</lastBuildDate><atom:link href="https://www.leanku.com/tags/%E9%87%8D%E8%AF%95/index.xml" rel="self" type="application/rss+xml"/><item><title>高并发系统设计-重试</title><link>https://www.leanku.com/post/microservice/%E9%AB%98%E5%B9%B6%E5%8F%91%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1-%E9%87%8D%E8%AF%95/</link><pubDate>Fri, 11 Jul 2025 20:46:01 +0800</pubDate><guid>https://www.leanku.com/post/microservice/%E9%AB%98%E5%B9%B6%E5%8F%91%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1-%E9%87%8D%E8%AF%95/</guid><description>&lt;h1 id="高并发系统设计-重试"&gt;高并发系统设计-重试&lt;/h1&gt;&#10;&lt;h2 id="一概述"&gt;一、概述&lt;/h2&gt;&#10;&lt;h3 id="11-什么是重试"&gt;1.1 什么是重试&lt;/h3&gt;&#10;&lt;p&gt;重试（Retry）是指：&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;当一次请求失败后，在满足条件的情况下再次发起请求，以提高成功率。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;例如：&lt;/p&gt;&#10;&lt;p&gt;请求 → 失败 → 再请求 → 成功&lt;/p&gt;&#10;&lt;h3 id="12-为什么需要重试"&gt;1.2 为什么需要重试&lt;/h3&gt;&#10;&lt;p&gt;在分布式系统中，失败是常态：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;网络抖动&lt;/li&gt;&#10;&lt;li&gt;RPC短暂超时&lt;/li&gt;&#10;&lt;li&gt;Redis瞬时不可用&lt;/li&gt;&#10;&lt;li&gt;MySQL连接波动&lt;/li&gt;&#10;&lt;li&gt;依赖服务重启&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;例如：&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;请求支付服务 → 超时&#10;&#10;但实际服务是正常的&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果不重试：用户支付失败&lt;/p&gt;&#10;&lt;p&gt;但如果允许重试：&lt;/p&gt;&#10;&lt;p&gt;第一次失败&lt;/p&gt;&#10;&lt;p&gt;第二次成功&lt;/p&gt;&#10;&lt;h3 id="13-重试解决的问题"&gt;1.3 重试解决的问题&lt;/h3&gt;&#10;&lt;p&gt;重试主要解决：&lt;/p&gt;&#10;&lt;h4 id="1-短暂故障"&gt;1. 短暂故障&lt;/h4&gt;&#10;&lt;p&gt;如：&#10;网络抖动&#10;服务瞬断&#10;连接超时&lt;/p&gt;&#10;&lt;h4 id="2依赖服务不稳定"&gt;2.依赖服务不稳定&lt;/h4&gt;&#10;&lt;p&gt;如：&lt;/p&gt;&#10;&lt;p&gt;第三方支付 / 短信 / API&lt;/p&gt;&#10;&lt;h4 id="3提高成功率"&gt;3.提高成功率&lt;/h4&gt;&#10;&lt;h3 id="14-重试的误区"&gt;1.4 重试的误区&lt;/h3&gt;&#10;&lt;p&gt;错误做法 ： 失败 → 立即重试 → 再失败 → 无限循环&lt;/p&gt;&#10;&lt;p&gt;正确做法是：&lt;strong&gt;可控重试 + 退避策略 + 最大次数限制&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h2 id="二原理"&gt;二、原理&lt;/h2&gt;&#10;&lt;h3 id="21-重试的核心思想"&gt;2.1 重试的核心思想&lt;/h3&gt;&#10;&lt;p&gt;重试本质是：&lt;/p&gt;&#10;&lt;p&gt;用时间换成功率&lt;/p&gt;&#10;&lt;p&gt;但前提是：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;不能无限重试&lt;/li&gt;&#10;&lt;li&gt;不能立即重试&lt;/li&gt;&#10;&lt;li&gt;不能对所有错误重试&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="22-哪些情况可以重试"&gt;2.2 哪些情况可以重试&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;网络超时&lt;/li&gt;&#10;&lt;li&gt;连接失败&lt;/li&gt;&#10;&lt;li&gt;503 / 502&lt;/li&gt;&#10;&lt;li&gt;RPC短暂异常&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;em&gt;&lt;strong&gt;不可重试&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>