news 2026/6/10 0:43:11

分布式系统入门:CAP 理论与一致性算法详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
分布式系统入门:CAP 理论与一致性算法详解

CAP 理论核心概念

CAP 理论指出分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)中的两项。

  • 一致性 (C):所有节点访问同一份最新数据。
  • 可用性 (A):非故障节点在合理时间内返回响应。
  • 分区容错性 (P):网络分区时系统仍能运作。

一致性算法实现(Paxos 简化版)

以下代码模拟 Paxos 算法的提案阶段,使用 Python 实现基础逻辑:

class PaxosNode: def __init__(self, node_id): self.node_id = node_id self.proposed_value = None self.accepted_value = None self.promised_proposal_id = 0 def prepare(self, proposal_id): if proposal_id > self.promised_proposal_id: self.promised_proposal_id = proposal_id return {"status": "promised", "accepted_value": self.accepted_value} return {"status": "rejected"} def accept(self, proposal_id, value): if proposal_id >= self.promised_proposal_id: self.accepted_value = value self.promised_proposal_id = proposal_id return {"status": "accepted"} return {"status": "rejected"} # 模拟三个节点的集群 nodes = [PaxosNode(i) for i in range(3)] # 提案阶段 proposal_id = 10 value = "data_v1" for node in nodes: response = node.prepare(proposal_id) print(f"Node {node.node_id} prepare response: {response}") # 接受阶段(仅半数以上节点响应时) if sum(1 for node in nodes if node.prepare(proposal_id)["status"] == "promised") > len(nodes)/2: for node in nodes: response = node.accept(proposal_id, value) print(f"Node {node.node_id} accept response: {response}")

https://www.zhihu.com/zvideo/1993908941005035175/
https://www.zhihu.com/zvideo/1993908941005035175
https://www.zhihu.com/zvideo/1993908940069699915/
https://www.zhihu.com/zvideo/1993908940069699915
https://www.zhihu.com/zvideo/1993908934109573278/
https://www.zhihu.com/zvideo/1993908934109573278
https://www.zhihu.com/zvideo/1993908933191037953/
https://www.zhihu.com/zvideo/1993908933191037953
https://www.zhihu.com/zvideo/1993908931861446751/
https://www.zhihu.com/zvideo/1993908931861446751
https://www.zhihu.com/zvideo/1993908925066650081/
https://www.zhihu.com/zvideo/1993908925066650081
https://www.zhihu.com/zvideo/1993908923359580411/
https://www.zhihu.com/zvideo/1993908923359580411
https://www.zhihu.com/zvideo/1993908922080313621/
https://www.zhihu.com/zvideo/1993908922080313621
https://www.zhihu.com/zvideo/1993908907127641011/
https://www.zhihu.com/zvideo/1993908907127641011
https://www.zhihu.com/zvideo/1993908900202840925/
https://www.zhihu.com/zvideo/1993908900202840925
https://www.zhihu.com/zvideo/1993908885128508038/
https://www.zhihu.com/zvideo/1993908885128508038

代码功能说明

  1. PaxosNode 类:模拟单个节点的提案(prepare)和接受(accept)逻辑。
  2. prepare 方法:节点承诺不接受比当前提案 ID 更小的请求。
  3. accept 方法:节点在提案 ID 有效时接受值并更新状态。
  4. 集群模拟:通过半数以上节点的承诺达成一致性。

输出示例

Node 0 prepare response: {'status': 'promised', 'accepted_value': None} Node 1 prepare response: {'status': 'promised', 'accepted_value': None} Node 2 prepare response: {'status': 'promised', 'accepted_value': None} Node 0 accept response: {'status': 'accepted'} Node 1 accept response: {'status': 'accepted'} Node 2 accept response: {'status': 'accepted'}

关键注意事项

  • 实际分布式系统需处理网络延迟、节点故障等复杂场景。
  • Paxos 变种(如 Raft)通过领导者选举简化实现。
  • CAP 权衡:选择 CP(如 ZooKeeper)或 AP(如 Cassandra)取决于业务需求。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 10:54:56

ResNet18实战教程:建筑工地安全监测系统

ResNet18实战教程:建筑工地安全监测系统 1. 引言 1.1 学习目标 在本教程中,你将学习如何基于 ResNet-18 模型构建一个轻量级、高稳定性的通用图像分类系统,并将其应用于建筑工地安全监测场景。通过本项目,你将掌握:…

作者头像 李华
网站建设 2026/6/9 22:47:35

完整示例:MATLAB仿真二极管伏安特性曲线全过程

用MATLAB手把手仿真二极管伏安特性:从理论到工程实践你有没有遇到过这样的情况?在讲授模拟电路时,学生盯着课本上的那条“指数曲线”一脸茫然:“为什么电流突然就上去了?” 或者在设计电源时,担心高温下二极…

作者头像 李华
网站建设 2026/5/31 7:52:37

ResNet18部署手册:微服务架构集成方案

ResNet18部署手册:微服务架构集成方案 1. 背景与应用场景 1.1 通用物体识别的工程需求 在当前AI应用快速落地的背景下,通用图像分类已成为智能监控、内容审核、自动化标注、AR交互等场景的核心能力之一。尽管大模型在语义理解上表现优异,但…

作者头像 李华
网站建设 2026/5/31 4:13:58

XADC IP核入门应用:实时温度采集操作指南

FPGA内部温度监控实战:用XADC IP核打造智能温控系统你有没有遇到过这样的情况?FPGA板子运行一段时间后突然逻辑出错,时序违例频发,但代码和约束都没问题。重启之后又恢复正常——这很可能不是软件Bug,而是芯片过热在作…

作者头像 李华
网站建设 2026/5/28 13:26:13

互补CMOS全加器实现:全面讲解设计步骤

从逻辑到晶体管:如何亲手设计一个高效的互补CMOS全加器 在现代数字系统中,我们每天都在和“加法”打交道——无论是手机里的图像处理、电脑中的矩阵运算,还是自动驾驶感知系统的实时决策。而这些复杂计算的起点,往往是一个看似简单…

作者头像 李华
网站建设 2026/5/9 20:53:30

ResNet18参数详解:Top-3置信度调优技巧

ResNet18参数详解:Top-3置信度调优技巧 1. 背景与技术定位 1.1 通用物体识别中的ResNet18价值 在当前AI视觉应用广泛落地的背景下,通用物体识别已成为智能监控、内容审核、辅助驾驶和AR交互等场景的基础能力。其中,ResNet-18 作为深度残差…

作者头像 李华