<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>后端 - 分类 - ZeroCoding</title><link>https://zerocoding.online/categories/%E5%90%8E%E7%AB%AF/</link><description>ZeroCoding</description><generator>Hugo 0.165.0 &amp; FixIt v1.0.0-alpha.2-mtmrzvot</generator><language>zh-CN</language><managingEditor>hi@zerocoding.online (ZeroCoding)</managingEditor><webMaster>hi@zerocoding.online (ZeroCoding)</webMaster><lastBuildDate>Thu, 30 Jul 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://zerocoding.online/categories/%E5%90%8E%E7%AB%AF/index.xml" rel="self" type="application/rss+xml"/><item><title>分布式系统中的幂等性设计</title><link>https://zerocoding.online/posts/idempotency-design/</link><pubDate>Thu, 30 Jul 2026 00:00:00 +0800</pubDate><author>hi@zerocoding.online (ZeroCoding)</author><guid>https://zerocoding.online/posts/idempotency-design/</guid><category domain="https://zerocoding.online/categories/%E5%90%8E%E7%AB%AF/">后端</category><description>&lt;p&gt;幂等性是分布式系统的老问题，却是高并发场景下最容易踩坑的地方。核心诉求只有一个：&lt;strong&gt;同一个操作执行多次，结果和只执行一次一致&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="常见落地手段"&gt;&lt;span&gt;常见落地手段&lt;/span&gt;&#10; &lt;a href="#%e5%b8%b8%e8%a7%81%e8%90%bd%e5%9c%b0%e6%89%8b%e6%ae%b5" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;数据库唯一约束&lt;/strong&gt;：最可靠，通过唯一索引天然去重，适合「创建」类操作。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;状态机&lt;/strong&gt;：把业务状态流转设计成幂等的，重复请求自然被挡在状态判断之外。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Token / 去重表&lt;/strong&gt;：请求先拿 Token，消费一次即失效，适合「提交」类操作。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;分布式锁&lt;/strong&gt;：保证同一时刻只有一个请求在处理，但要处理好锁的粒度与超时。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 class="heading-element" id="取舍"&gt;&lt;span&gt;取舍&lt;/span&gt;&#10; &lt;a href="#%e5%8f%96%e8%88%8d" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;没有银弹。唯一约束最稳但局限性强，锁最灵活但引入复杂度。实际项目里往往是组合使用，按业务语义选择最合适的那一层。&lt;/p&gt;</description></item><item><title>Redis 高可用选型：哨兵 vs Cluster</title><link>https://zerocoding.online/posts/redis-ha/</link><pubDate>Sun, 12 Jul 2026 00:00:00 +0800</pubDate><author>hi@zerocoding.online (ZeroCoding)</author><guid>https://zerocoding.online/posts/redis-ha/</guid><category domain="https://zerocoding.online/categories/%E5%90%8E%E7%AB%AF/">后端</category><description>&lt;p&gt;Redis 的高可用，最常用的两条路是哨兵（Sentinel）和集群（Cluster）。选型之前，先想清楚自己的真实需求。&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="哨兵sentinel"&gt;&lt;span&gt;哨兵（Sentinel）&lt;/span&gt;&#10; &lt;a href="#%e5%93%a8%e5%85%b5sentinel" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;主从 + 哨兵监控，主挂自动切换。&lt;strong&gt;适合数据量不大、但对可用性有要求的场景&lt;/strong&gt;。优点是简单、兼容性好，缺点是数据集中在一台主节点上，受内存上限制约。&lt;/p&gt;</description></item></channel></rss>