CAP 理论

简介: CAP 理论

CAP 理论


CAP 是反应了分布式系统中的三个指标:Consistency (一致性), Availlability (可用性)Partion Tolerance(分区容错性)。

CAP 理论的核心是说 ,C、A 、P 这三个指标不能同时做到。

image.png

Consistency(一致性)


指数据在多个副本之间能够保持一致的特性(严格的一致性)


Availability(可用性)


指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应(不保证获取的数据为最新数据)


Partition tolerance(分区容错性)


分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障


为啥不能同时满足?


比如说 G1 G2 两台跨区服务器。G1 向  G2 发送一条消息,G2 是收不到的,这样分区问题就必须考虑, 也就是分区容错性。一般来说 P(分区容错是要成立的)。剩下的C 与 A 是无法同时满足的。

image.png

G1 G2 服务器开始都是 v0 但是对 G1 进行了写操作,记录变成了 v1 。

image.png

image.png

用户向 G1 发起读操作,返回v1; G2 返回的是 v0 这样就不一致了。

image.png

为了数据一致性,也就是为了让 G2 也变成为 v1,就要在 G1 写操作的时候, 让 G1 向 G2 发送一条消息,要求 G2 改成 v1。这样下次读的时候,读到的就是 v1。

但是要注意的是,在 G1 向 G2 的同步过程中, G2 是不可用的,只有等数据同步完之后,才放开读写,这样才能保证一致性。否则在同步过程中,放开读写,这样数据就不一致了。

BASE 理论


Base 理论,也叫做基本可用,是采用合适的方式达到最终一致性(Eventual Consitency)。

  • (Basically Available) 基本可用

分布式系统出现故障的时候,允许损失部分可用性,保证核心可用。

  • Soft State(软状态)

接受一段时间的状态不同步,与中介状态,而改中间状态不影响整体的可用性。这里中间状态就是 CAP 理论中的数据不一致。

  • Eventually Consistent 最终一致性

不可能一直都是软状态,必须有个时间期限,数据最终一定能达到一致的状态,一次所有客户端对系统的数据访问最终都能够获取最新的值。


参考资料



相关文章
|
2月前
|
存储 监控 CDN
阿里云CDN怎么收费的?一文讲明白
阿里云CDN收费由基础服务费和增值服务费组成。基础费用必选,计费方式包括按流量、按带宽峰值或月结95带宽峰值三种;增值服务如HTTPS请求、QUIC请求、WAF防护和实时日志等按需使用,不使用不收费。本文详解2025年最新收费标准及计费规则。
|
2月前
|
CDN
阿里云CDN收费标准,不同计费模式价格表(基础服务费和增值服务费用整理)
阿里云CDN费用包含基础服务费和增值服务费。基础费用按流量、带宽峰值或月结95带宽计费,默认按流量计费;增值服务如HTTPS、QUIC、WAF、实时日志等按使用量收费,不使用不收费。支持资源包抵扣,降低成本。
479 3
|
5月前
|
运维 安全 数据中心
云专线对于企业有什么优势?
云专线是一种为企业提供高速、安全网络连接的解决方案,基于物理专线或虚拟专用网络技术,整合运营商骨干资源,构建总部、分支、数据中心与云端间的专属通道。其三层架构(接入、传输、管理)确保稳定低延迟传输与智能化运维。相比传统网络,云专线具备带宽独享、多重加密、灵活组网、流量感知等优势,适用于实时交互、数据备份、跨地域协同等场景。企业在选型时需综合考虑带宽、延迟、安全性需求及成本因素,选择合适的技术伙伴。云专线已成为企业数字化转型的关键基础设施,助力全球布局与业务创新。
192 0
|
资源调度 JavaScript 前端开发
Vue3+TypeScript前端项目新纪元:揭秘高效事件总线Mitt,轻松驾驭组件间通信的艺术!
【8月更文挑战第3天】Vue3结合TypeScript强化了类型安全与组件化开发。面对大型应用中复杂的组件通信挑战,可通过引入轻量级事件发射器Mitt实现事件总线模式。Mitt易于集成,通过简单几步即可完成安装与配置:安装Mitt、创建事件总线实例、并在组件中使用`emit`与`on`方法发送及监听事件。此外,利用TypeScript的强大类型系统确保事件处理器正确无误。这种方式有助于保持代码整洁、解耦组件,同时提高应用的可维护性和扩展性。不过,在大规模项目中需谨慎使用,以防事件流过于复杂难以管理。
430 1
|
NoSQL Redis 缓存
Redis 加持下的 Spring 应用性能革命:见证毫秒级响应速度,打造极致用户体验!
【8月更文挑战第31天】Redis 是一个高性能键值存储系统,常用于数据库、缓存及消息中间件。与 Spring 框架集成后,可显著提升应用性能,特别是在高并发场景下。本文通过电子商务网站商品详情页的例子,展示了如何配置 Redis 并使用 `RedisTemplate` 进行数据操作,通过缓存策略优化应用性能,减轻数据库压力。例如,在 `ProductService` 类中,先从 Redis 获取商品信息,若未命中则从数据库获取并缓存至 Redis。此外,还介绍了如何通过 REST 控制器模拟 HTTP 请求进行测试。在实际项目中,结合 Spring Cache 注解可更便捷地管理缓存策略。
187 0
|
人工智能 计算机视觉
李飞飞空间智能系列新进展,吴佳俊团队新BVS套件评估计算机视觉模型
【5月更文挑战第29天】李飞飞教授的SVL实验室与吴佳俊团队推出BEHAVIOR Vision Suite(BVS),一个创新工具包,用于生成定制合成数据以评估计算机视觉模型。BVS解决了现有数据生成器在资产、多样性和真实性方面的局限,提供灵活的场景、对象和相机参数调整。它包含8000多个对象模型和1000个场景,适用于多种视觉任务。实验展示了BVS在评估模型鲁棒性、场景理解和域适应中的效用,但也指出其在覆盖范围、使用难度和域适应上的局限。[论文链接](https://arxiv.org/pdf/2405.09546)
294 4
|
监控 安全 BI
安全检测 | 数据库审计系统为何如此重要?
数据库审计是应对信息化社会中数据安全的关键工具。它记录并分析网络上的数据库活动,对风险行为实时警告,帮助追踪事故源头和合规管理。尽管已有其他安全产品,但数据库审计专门针对内部审核监控,尤其在多数安全问题源于内部的情况下显得尤为重要。审计系统提供全方位安全审计、实时回放、精准定位、事件关联分析等功能,同时支持多种部署方式和确保数据安全的机制。企业在选择审计产品时应考虑自身业务需求和审计目标,以找到最适合的解决方案。
|
前端开发 JavaScript
神奇的滤镜!巧妙实现内凹的平滑圆角
神奇的滤镜!巧妙实现内凹的平滑圆角
450 0
神奇的滤镜!巧妙实现内凹的平滑圆角
|
自然语言处理 JavaScript 前端开发
如何解决前端多语言选型和实现难题?
多语言(i18n)支持 是企业项目走向国际化的必经之路,也是前端工程师最佳实践的内容之一。不过,多语言框架众多,会带来一系列选型问题,相信大家在平时对项目进行多语言支持时,也往往会遇到如下几个问题:
1461 0