23 | CAP理论:这顶帽子我不想要
聂鹏程
该思维导图由 AI 生成,仅供参考
你好,我是聂鹏程。今天,我来继续带你打卡分布式核心技术。
在开篇词中,我将分布式计算划分为了四横四纵。而在前面的文章中,我们已经一起学习了四横中的分布式计算、分布式通信和分布式资源池化三横的相关知识。比如,在分布式计算中,我们学习了分布计算模式,包括 MapReduce、Stream、Actor 和流计算的原理和实际应用;在分布式通信中,我们学习了远程调用、订阅发布和消息队列模式的原理和应用;在分布式资源池化中,我们学习了分布式系统架构和分布式调度架构。
相信通过对这些内容的学习,你已经对分布式技术有比较深刻的了解了。分布式系统处理的关键对象是数据,前面这些文章也都是为数据处理服务的。那么,数据本身相关的分布式技术有哪些呢?这就是接下来的几讲,我要带你学习的四横中的最后一横“分布式数据存储与管理”的相关技术。
在正式介绍分布式数据存储技术之前,我需要先带你了解一个基本理论,也就是 CAP 理论。前面提到,分布式系统处理的关键对象是数据,而数据其实是与用户息息相关的。CAP 理论指导分布式系统的设计,以保证系统的可用性、数据一致性等特征。比如电商系统中,保证用户可查询商品数据、保证不同地区访问不同服务器查询的数据是一致的等。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
CAP理论是分布式系统设计中的重要理论,指导着系统的可用性、一致性和分区容错性。C代表一致性,A代表可用性,P代表分区容错性。根据CAP理论,分布式系统无法同时满足这三个特性,只能满足其中两个。文章通过电商系统的例子生动解释了CAP理论的含义和应用场景。在实际应用中,需要根据具体场景权衡这三个特性,选择适合的策略,如保CP弃A、保AP弃C等。对于涉及交易的场景,保证一致性至关重要,因此保CP弃A是最佳选择;而在大多数情况下,选择AP而牺牲C,满足最终一致性即可。文章通过具体案例,帮助读者了解如何在不同分布式场景下进行取舍,以及如何权衡CAP理论的三个特性。CAP理论和BASE理论的区别在于CAP关注系统的一致性、可用性和分区容错性,而BASE理论则强调基本可用、软状态和最终一致性。通过本文的学习,读者可以深入了解CAP理论,并在实际应用中为分布式系统的设计选择合适的策略。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式技术原理与算法解析》,新⼈⾸单¥59
《分布式技术原理与算法解析》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(23)
- 最新
- 精选
- LeoRedis不是AP么? 1. client 写数据到 master 2. master 告知 client “ok” 3. master 同步数据到 slave
作者回复: 要区分单机redis和redis cluster
2020-04-2946 - CaptainBergcap中的a,是针对的“非故障节点”,作者这里说的“系统提供的服务一直处于可用状态,对于用户的请求可即时响应”,是不严谨的吧
作者回复: 可用性是指一个系统提供的服务要持续可用,不能中断,即使数据没达成一致也要即时给用户响应
2020-05-232 - heyman总感觉A和P是一样的…不知道怎么理解
作者回复: A和P是不一样的,A代表的是可用性,主要强调的在任意状态下支持用户响应;P代表的是分区容错性,主要强调在网络分区的情况下,各个分区的可用性。
2020-04-2821 - 小文同学CAP 理论给分布式系统划了一道上限,最大的作用是告知每一个程序员,在研究一个分布式系统,或阅读分布式代码时,要清楚一个分布式系统的取舍,理解的过程中,也不要企图满足 CAP,因为这都是徒劳的,懂得在边界内做事和理解问题。
作者回复: 嗯,根据不同的应用场景,进行不同的取舍,就好比鱼与熊掌不可兼得
2020-04-111 - 被歌唱拯救中对于弃CP保A有疑问,比如网络分区后,{北京,杭州}为分区a,{上海}为分区b,分区a可以进行下单(写操作),分区b应该也可以下单(写操作)的吧?假如不同分区都进行了写操作,网络恢复后,如何做数据同步呢?拿变量x举例好了,一个分区对x赋值为2,另一个分区赋值为3,数据同步就有冲突了,也不能单纯地以某一分区为准吧?
作者回复: 数据同步解决冲突这个问题,主要是以用于场景的需求进行解决冲突的,在分布式系统中常见的raft算法,在解决数据冲突时以leader节点为基准,具体可参考第26讲的扩展知识部分。
2019-11-1921 - 南国有一说一 redis是保证AP吧
作者回复: 要区分单机redis和redis cluster
2020-04-152 - 蓝魔丶老师,例子中A,B,C三个服务器存储相同的库存数,怎么保证电吹风在北京仓库有 20 个,在杭州仓库有 10 个,在上海仓库有 30 个,比如北京的人来下单减库存,是否应该保证最多只能卖出20个,为什么要让他们看到的库存数一样,只让北京的人看到最多20个商品库存不行嘛?
作者回复: 可以跨地区或跨仓库调货
2019-11-212 - Jackeybase理论其实是对cap中ap的一种补充和延展。它的软状态就是一种数据不一致的状态,base所说的最终一致性,也就是牺牲了一致性。我认为cap比较理想化,实际情况是网络都会有些延迟,无法保证强一致,所谓的“强一致”和“最终一致”只是对数据不一致时间的容忍度不同2019-11-18416
- ttBASE理论中的BA是“基本可用”,不是全都可用,也不是全都不可用,而是功能的某些子集如核心功能可用;进一步,为了保证BA,就只能选择最终一致性E了,此时系统就处于了S状态即软状态。2019-11-184
- dinuo2019听完这一讲,我有几个想法和问题: 1,在CP系统中,是不是也有利用分布式事务,在写入时阻塞直到满足条件才会提交,也就是用户1的写入请求不会被提交,直到恢复后才会写入成功;在这期间,根据隔离级别的设置,如果系统允许读,db1和db2都会返回为1; 2,BASE理论是AP系统的一种实现思想,在不满足强一致性的时候,以最终一致性作为代替; 3,kafka的数据本分replica,看到说是CA的系统,但kafka本身是分布式的系统,需要保留P,这里该如何理解?2019-11-184
收起评论