分布式CAP定理

CAP 定理

在一个分布式系统中,以下三个特性不可能同时完全满足,最多只能满足其中两个:

  • C(Consistency,一致性)
    所有节点在同一时间看到的数据是完全一致的(即更新操作成功并返回后,所有节点都能获取到最新值)。

  • A(Availability,可用性)
    只要收到用户的请求,系统就必须在合理时间内返回一个非错误的响应(即系统始终处于可用状态,不会拒绝服务)。

  • P(Partition tolerance,分区容错性)
    当分布式系统中的网络出现分区(如节点间通信中断)时,系统仍能继续运行(即对网络故障的容忍能力)。

为什么三者不可兼得?

在分布式系统中,网络分区(P)是不可避免的(如网络故障、延迟等)。因此,实际设计中往往需要在 C 和 A 之间做权衡

  • 若优先保证 C + P(CP 系统):网络分区时,为了保证数据一致,可能会拒绝部分节点的请求(牺牲可用性)。
  • 若优先保证 A + P(AP 系统):网络分区时,为了保证所有节点可用,可能会返回不一致的数据(牺牲一致性)。

CP 系统

是指在分布式系统中,通过强一致性协议(如 Raft)多数派确认故障检测,优先保证一致性(C)和分区容错性(P),牺牲可用性(A) 的设计。适合对数据一致性要求极高的场景(如金融交易、分布式锁)。

强一致性优先(Consistency First)

所有节点必须达成数据一致后才响应客户端,不允许 “脏读” 或 “中间状态”。例如:分布式锁服务必须保证同一时间只有一个客户端获取锁。

采用强一致性协议确保数据同步,常见选择:Paxos/Raft:通过选举 Leader 节点协调写入,确保多数节点确认后才提交数据。Raft 更易实现,适合工程落地(如 etcd、Consul 采用)。2PC(两阶段提交):适合中心化架构,但容错性较差(协调者故障会导致阻塞)。

集群成员管理:故障检测:通过心跳(Heartbeat)或定期探活识别失联节点(如 ZooKeeper 的 Follower 与 Leader 保持心跳)。法定人数(Quorum):要求超过半数节点可用才能进行写操作(如 5 节点集群需 3 节点确认,避免分区时两边都能写入)。

数据存储设计:只读副本:可部署只读节点分担读压力,但写操作必须通过主节点(Leader)。版本控制:通过版本号(如乐观锁)避免旧数据覆盖新数据(如 etcd 的 Revision 机制)。

分区容错性保障

网络分区发生时,系统需能识别故障节点,避免数据分裂(脑裂)。例如:通过心跳检测和超时机制标记故障节点。

可用性妥协

分区期间,可能拒绝部分读写请求(返回错误或超时),直到分区恢复或集群重新达成一致。

注意事项

  • 避免过度牺牲可用性

    • 分区时可允许读旧数据(弱一致性读),但写操作必须严格保证一致。
    • 例如:etcd 提供 “线性一致性读”(通过 Leader 读取)和 “串行化读”(可能读旧数据)两种模式。
  • 网络分区恢复策略

    • 分区恢复后,需通过日志同步(如 Raft 的日志复制)让所有节点数据一致。
    • 少数派节点需丢弃本地未提交的修改,以 Leader 数据为准。
  • 性能优化

    • 读写分离:Leader 处理写请求,Follower 处理读请求(需保证读一致性)。
    • 批量操作:减少网络交互,提升同步效率

 CP 系统场景

  • 分布式锁(如 Redis RedLock、ZooKeeper 分布式锁):必须保证同一时间只有一个持有者。
  • 元数据管理(如 HDFS NameNode、Kubernetes ETCD):集群配置需强一致。
  • 金融交易:转账操作必须确保双方账户余额同步更新

AP系统

AP 系统(Availability + Partition Tolerance)是分布式系统设计中,优先保证可用性(A)和分区容错性(P),而在网络分区时允许一定程度数据不一致的系统。它更注重服务的持续可用,适合对响应速度和服务连续性要求高的场景。

高可用性(Availability)

无论是否发生网络分区,系统都能在合理时间内响应客户端请求(不返回错误),确保服务不中断。

无中心节点:避免单点依赖,采用去中心化设计(如 P2P 或多主节点模式),每个节点可独立处理请求。

本地优先写入,异步复制:写请求优先在本地节点执行并立即返回,数据通过后台线程异步同步到其他节点(如 Cassandra 的 “最终一致性” 复制策略)。

冲突解决机制:分区恢复后,若不同节点存在数据冲突(如同一 key 被修改多次),需通过预设规则解决(如时间戳、版本号、业务逻辑)。

冗余设计:数据多副本存储,即使部分节点故障,仍能从其他副本读取数据。

读写策略:读本地:优先读取本地节点数据,保证低延迟。NWR 模型:可配置 “写 N 个节点,读 W 个节点”,在一致性和可用性间灵活调整(如 Riak)。

故障检测与自动恢复:通过 Gossip 协议传播节点状态,分区恢复后自动触发数据合并(如 Redis Cluster 的槽位迁移)。

分区容错性(P)

网络分区(节点通信中断)时,各分区仍能独立处理请求,不会因部分节点故障导致整个系统不可用。

最终一致性

牺牲强一致性,但保证 “最终一致性”—— 分区恢复后,通过数据同步机制,最终所有节点的数据会达成一致。

AP系统场景

  • 社交网络:用户动态、评论等对实时一致性要求低,但需高可用。
  • 内容分发:视频、图片等静态资源,允许短期数据不一致。
  • 物联网(IoT):设备状态上报,优先保证设备能持续写入数据。
  • 缓存系统:如 Redis Cluster,优先保证缓存服务可用,短暂不一致可接受。

​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92133.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP-Casbin:现代化 PHP 应用的权限管理引擎

在当今复杂的Web应用中,精细化的权限管理是保障系统安全的关键环节。PHP-Casbin 作为Casbin生态的PHP实现,凭借其灵活的模型支持和强大的扩展能力,已成为PHP开发者实现访问控制的首选工具。 超越传统权限模型 PHP-Casbin 基于PERM&#xff…

FastDeploy2.0:环境变量的说明

一、执行# 设置日志目录 export FD_LOG_DIR/workspace/models/log# 指定使用的 GPU 设备 export CUDA_VISIBLE_DEVICES0,1,2,3# 创建日志目录(如果不存在) mkdir -p "$FD_LOG_DIR"# 定义日志文件路径 LOG_FILE"$FD_LOG_DIR/fastdeploy_se…

C语言:指针(1-2)

5. 指针运算指针的基本运算有三种,分别是:指针-整数指针-指针指针的关系运算5.1 指针运算在上面,我们知道,数组在内存中是连续存放的,只要知道第一个元素的地址,顺藤摸瓜就能找到后面的所有元素。那么&…

【多模态】DPO学习笔记

DPO学习笔记1 原理1.0 名词1.1 preference model1.2 RLHF1.3 从RLHF到DPOA.解的最优形式B. DPO下参数估计C. DPO下梯度更新D. DPO训练的稳定性2 源代码2.1 数据集构成2.2 计算log prob2.3 DPO loss1 原理 1.0 名词 preference model:对人类偏好进行建模&#xff0…

2025最新、UI媲美豆包、DeepSeek等AI大厂的AIGC系统 - IMYAI源码部署教程

IMYAI 系统部署与使用手册 一、系统演示 🔹 快速体验 前端演示地址:https://super.imyaigc.com后台演示地址:https://super.imyaigc.com/settings 🔹 技术架构 前端:Vite Vue3 NaiveUI TailwindCSS Plyr后端&…

【关于Java的反射】

在 Java 编程中,反射(Reflection) 是一个非常强大的工具,它允许你在运行时动态地获取类的信息、创建对象、调用方法和访问字段。虽然反射功能强大,但它也有一些局限性和性能开销,因此需要谨慎使用。一、什么…

Gitee推出“移动软件工厂“解决方案 解决嵌入式与涉密场景研发困局

Gitee推出"移动软件工厂"解决方案 破解嵌入式与涉密场景研发困局 随着数字化转型浪潮的推进,软件开发正面临着前所未有的复杂环境挑战。特别是在嵌入式系统、FPGA开发以及涉密信息系统等特殊场景下,研发团队往往需要在高安全要求与有限网络环境…

低功耗16*8位四线串行8*4按键阵矩LED驱动专用电路

概述:PC0340是占空比可调的LED显示控制驱动电路。由16根段输出、8根位输出、数字接口、数据锁存器、显示存储器、键扫描电路及相关控制电路组成了一个高可靠性的单片机外围LED驱动电路。串行数据通过4线串行接口输入到PC0340,采用LQFP44L的封装形式。本产…

通过自定义注解加aop切面实现权限控制

前言:自定义注解,通过aop切面前置通知,对请求接口进行权限控制1,创建枚举类package org.springblade.sample.annotationCommon;import lombok.AllArgsConstructor; import lombok.Getter;import java.util.Arrays; import java.ut…

IDS知识点

在网络安全工程师、系统运维工程师等岗位的面试中,​​IDS(Intrusion Detection System,入侵检测系统)​​ 是高频考点,尤其是对网络安全防护、安全监控类岗位。以下是IDS的核心考点和必须掌握的知识点,按优…

Adobe Analytics 数据分析平台|全渠道客户行为分析与体验优化

Adobe Analytics 是业界领先的数据分析平台,帮助企业实时追踪客户行为,整合多渠道数据,通过强大的分析与可视化工具深入分析客户旅程,优化数字体验。结合 Adobe Experience Cloud,Adobe Analytics 成为推动数字化增长和…

【轮播图】H5端轮播图、横向滑动、划屏效果实现方案——Vue3+CSS position/CSS scroller

文章目录定位实现滑屏效果前置知识CSS: touch-action属性CSS: transform属性触摸事件forEach回调占位符准备阶段实现移动效果实现跟手效果触摸结束优化完整代码滚动实现滑屏效果前置知识CSS: scroll-snap-type属性准备阶段实现滑动效果实现吸附效果滚动条隐藏存在问题完整代码s…

忘记了WordPress管理员密码的找回方法

WordPress管理员密码找回方法 如果您忘记了WordPress管理员密码,可以通过以下几种方法找回或重置: 方法1:通过电子邮件重置(最简单) 访问您的WordPress登录页面(通常是wodepress.com/wp-admin或wodepress.com/wp-login.php) 点击”忘记密…

RAFT:让语言模型更聪明地用文档答题

RAFT:让语言模型更聪明地用文档答题 作者注: 本文旨在面向零基础读者介绍 UC Berkeley 提出的 RAFT(Retrieval-Augmented Fine-Tuning)方法。它是一种训练语言模型的新方式,让模型更好地利用“外部知识”——比如文档、…

【紧急预警】NVIDIA Triton推理服务器漏洞链可导致RCE!

2025 年 8 月 4 日消息,NVIDIA 旗下的 Triton 推理服务器(一款支持 Windows 和 Linux 系统、用于大规模运行 AI 模型的开源平台)被曝出一系列安全漏洞。这些漏洞一旦被利用,攻击者有可能完全接管存在漏洞的服务器。 Wiz 安全公司…

基于深度学习的医学图像分析:使用PixelCNN实现医学图像生成

前言 医学图像分析是计算机视觉领域中的一个重要应用,特别是在医学图像生成任务中,深度学习技术已经取得了显著的进展。医学图像生成是指通过深度学习模型生成医学图像,这对于医学研究、疾病模拟和图像增强等任务具有重要意义。近年来&#x…

React ahooks——副作用类hooks之useDebounceFn

useDebounceFn 是 ahooks 提供的用于函数防抖的 Hook,它可以确保一个函数在连续触发时只执行最后一次。一、基本用法import { useDebounceFn } from ahooks; import { Button } from antd;const Demo () > {const { run } useDebounceFn(() > {console.log(…

【机器学习深度学习】 知识蒸馏

目录 前言 一、什么是知识蒸馏? 二、知识蒸馏的核心意义 2.1 降低算力与成本 2.2 加速推理与边缘部署 2.3 推动行业应用落地 2.4 技术自主可控 三、知识蒸馏的本质:大模型的知识传承 四、知识蒸馏的“四重红利” 五、DeepSeek的知识蒸馏实践 …

Python高级编程与实践:Python高级数据结构与编程技巧

高级数据结构:掌握Python中的高效编程技巧 学习目标 通过本课程,学员将深入了解Python中的高级数据结构,包括列表推导式、字典推导式、集合推导式和生成器表达式。学员将学习如何利用这些结构来编写更简洁、更高效的代码,并了解它…

【C++】Stack and Queue and Functor

本文是小编巩固自身而作,如有错误,欢迎指出!本次我们介绍STL中的stack和queue和其相关的一些容器和仿函数一.stack and queue1.适配器stack和queue其实不是真正意义上的容器,而是容器适配器,而容器适配器又是什么呢&am…