<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>分布式系统 on Wimi's Space</title><link>https://wimi.space/tags/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/</link><description>Recent content in 分布式系统 on Wimi's Space</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 24 Jun 2025 11:02:31 +0800</lastBuildDate><atom:link href="https://wimi.space/tags/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/index.xml" rel="self" type="application/rss+xml"/><item><title>分布式系统基础理论概览</title><link>https://wimi.space/posts/2025/06/distributed-cap-and-base/</link><pubDate>Tue, 24 Jun 2025 11:02:31 +0800</pubDate><guid>https://wimi.space/posts/2025/06/distributed-cap-and-base/</guid><description>&lt;p>分布式系统理论是一组用于理解、设计和分析分布式系统的核心概念、模型和原理。这些理论帮助解决由分布性、并发性、故障和不确定性带来的挑战。基础理论包括 CAP 理论和 BASE 理论。&lt;/p>
&lt;h2 id="cap-理论">CAP 理论&lt;/h2>
&lt;h3 id="基本概念">基本概念&lt;/h3>
&lt;h4 id="一致性consistency">一致性（Consistency）&lt;/h4>
&lt;p>在分布式环境中，一致性是指数据在多个节点之间能够保持一致的特性。如果在某个节点上执行变更操作后，用户可以立即从其他任意节点上读取到变更后的数据，那么就认为这样的系统具备强一致性。&lt;/p>
&lt;h4 id="可用性availability">可用性（Availability）&lt;/h4>
&lt;p>可用性是指系统提供的服务必须一直处于可用状态，对于用户的每一个操作请求总是能够在有限的时间内返回结果。&lt;/p>
&lt;p>它主要强调以下两点：&lt;/p>
&lt;ul>
&lt;li>有限的时间内：对于用户的一个请求操作，系统必须要在指定的时间内返回处理结果，如果超过这个时间，那么系统就被认为是不可用的。&lt;/li>
&lt;li>返回结果：不论成功或者失败，都需要明确地返回响应结果。&lt;/li>
&lt;/ul>
&lt;h4 id="分区容错性partition-tolerance">分区容错性（Partition Tolerance）&lt;/h4>
&lt;p>分区容错性指定是分布式系统在遇到网络分区时，仍需要能够对外提供一致性和可用性的服务，除非是整个网络环境都发生了故障。&lt;/p>
&lt;p>这里的网络分区指的是：&lt;/p>
&lt;ul>
&lt;li>在分布式系统中，由于不同的节点会分布在不同子网中（不同机房或异地网络等），由于一些特殊的原因，可能会出现子网内部是正常的，但子网彼此之间却无法正常通信，从而导致整个系统的网络被切分成若干个独立的区域。&lt;/li>
&lt;/ul>
&lt;h3 id="核心概念">核心概念&lt;/h3>
&lt;p>在分布式系统中，一致性 (C)、可用性 (A) 和分区容错性 (P) 这三个理想特性无法同时完全满足。当发生网络分区（P）时，系统必须在一致性（C）和可用性（A）之间做出取舍。&lt;/p>
&lt;h3 id="选择策略">选择策略&lt;/h3>
&lt;p>&lt;img src="https://static.wimi.space/blog/distributed-cap-select.png" alt="">&lt;/p>
&lt;p>因为 CAP 理论不能将一致性、可用性和分区容错性都满足，所以需要根据不同系统的特性进行取舍，主要分为以下三种情况：&lt;/p>
&lt;ul>
&lt;li>
&lt;p>保证 AC，放弃 P&lt;/p>
&lt;ul>
&lt;li>这种情况下可以将所有数据都放在一个分布式节点上，这样可以避免网络分区带来的影响，但同时也意味着放弃了系统的可扩展性。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>保证 CP，放弃 A&lt;/p>
&lt;ul>
&lt;li>这种情况下如果发生了网络分区故障，此时节点间的数据就无法同步。因此在故障修复前都需要放弃对外提供服务，直至网络恢复，数据到达一致为止。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>保证 AP，放弃 C&lt;/p>
&lt;ul>
&lt;li>这种情况相当于放弃一致性。&lt;/li>
&lt;li>具体而言，是放弃数据的强一致性，但保证数据的最终一致性。因为不论是什么系统，数据最终都需要保持一致，否则整个系统就无法使用。&lt;/li>
&lt;li>在这种策略下，在某个短暂的时间窗口内会存在数据不一致的情况。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="base-理论">BASE 理论&lt;/h2>
&lt;p>BASE 是 Basically Available（基本可用）、Soft-state（软状态）和 Eventually Consistent（最终一致性）三个短语的缩写。&lt;/p>
&lt;p>BASE 理论是对 CAP 中一致性 C 和可用性 A 权衡的结果，其来源于对大规模互联网系统分布式实践的总结，是基于 CAP 定理逐步演化而来的，它大大降低了我们对系统的要求。&lt;/p>
&lt;h3 id="基本概念-1">基本概念&lt;/h3>
&lt;h4 id="基本可用basically-available">基本可用（Basically Available）&lt;/h4>
&lt;p>基本可用是指分布式系统在出现不可预知的故障时，允许损失部分可用性，例如：&lt;/p>
&lt;ul>
&lt;li>延长响应时间：比如原来的的查询只需要 0.5 秒，在系统出现故障时延长到 2~3 秒；&lt;/li>
&lt;li>服务降级：比如在商品秒杀时，部分用户会被引导到一个降级页面。&lt;/li>
&lt;/ul>
&lt;h4 id="软状态soft-state">软状态（Soft-state）&lt;/h4>
&lt;p>软状态也称为弱状态，是指允许系统中的数据存在中间状态，并认为该中间状态的存在不会影响系统整体的可用性，即允许不同节点间的数据同步存在延时。&lt;/p></description></item></channel></rss>