分布式技术原理与算法解析
聂鹏程
智载云帆 CTO,前华为分布式 Lab 资深技术专家
39663 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
分布式技术原理与算法解析
15
15
1.0x
00:00/00:00
登录|注册

23 | CAP理论:这顶帽子我不想要

电商购物系统例子
查询网站、电商系统
ZooKeeper保证CP
金钱交易场景
单点系统
CAP理论和BASE理论的区别
CAP中的C和A vs ACID中的C和A
保AP弃C
保CP弃A
保CA弃P
P分区容错性
A可用性
C一致性
思考题
对比分析
CAP选择策略及应用
CAP理论含义
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
立即购买
登录 后留言

全部留言(23)

  • 最新
  • 精选
  • Leo
    Redis不是AP么? 1. client 写数据到 master 2. master 告知 client “ok” 3. master 同步数据到 slave

    作者回复: 要区分单机redis和redis cluster

    2020-04-29
    4
    6
  • CaptainBerg
    cap中的a,是针对的“非故障节点”,作者这里说的“系统提供的服务一直处于可用状态,对于用户的请求可即时响应”,是不严谨的吧

    作者回复: 可用性是指一个系统提供的服务要持续可用,不能中断,即使数据没达成一致也要即时给用户响应

    2020-05-23
    2
  • heyman
    总感觉A和P是一样的…不知道怎么理解

    作者回复: A和P是不一样的,A代表的是可用性,主要强调的在任意状态下支持用户响应;P代表的是分区容错性,主要强调在网络分区的情况下,各个分区的可用性。

    2020-04-28
    2
    1
  • 小文同学
    CAP 理论给分布式系统划了一道上限,最大的作用是告知每一个程序员,在研究一个分布式系统,或阅读分布式代码时,要清楚一个分布式系统的取舍,理解的过程中,也不要企图满足 CAP,因为这都是徒劳的,懂得在边界内做事和理解问题。

    作者回复: 嗯,根据不同的应用场景,进行不同的取舍,就好比鱼与熊掌不可兼得

    2020-04-11
    1
  • 被歌唱拯救中
    对于弃CP保A有疑问,比如网络分区后,{北京,杭州}为分区a,{上海}为分区b,分区a可以进行下单(写操作),分区b应该也可以下单(写操作)的吧?假如不同分区都进行了写操作,网络恢复后,如何做数据同步呢?拿变量x举例好了,一个分区对x赋值为2,另一个分区赋值为3,数据同步就有冲突了,也不能单纯地以某一分区为准吧?

    作者回复: 数据同步解决冲突这个问题,主要是以用于场景的需求进行解决冲突的,在分布式系统中常见的raft算法,在解决数据冲突时以leader节点为基准,具体可参考第26讲的扩展知识部分。

    2019-11-19
    2
    1
  • 南国
    有一说一 redis是保证AP吧

    作者回复: 要区分单机redis和redis cluster

    2020-04-15
    2
  • 蓝魔丶
    老师,例子中A,B,C三个服务器存储相同的库存数,怎么保证电吹风在北京仓库有 20 个,在杭州仓库有 10 个,在上海仓库有 30 个,比如北京的人来下单减库存,是否应该保证最多只能卖出20个,为什么要让他们看到的库存数一样,只让北京的人看到最多20个商品库存不行嘛?

    作者回复: 可以跨地区或跨仓库调货

    2019-11-21
    2
  • Jackey
    base理论其实是对cap中ap的一种补充和延展。它的软状态就是一种数据不一致的状态,base所说的最终一致性,也就是牺牲了一致性。我认为cap比较理想化,实际情况是网络都会有些延迟,无法保证强一致,所谓的“强一致”和“最终一致”只是对数据不一致时间的容忍度不同
    2019-11-18
    4
    16
  • tt
    BASE理论中的BA是“基本可用”,不是全都可用,也不是全都不可用,而是功能的某些子集如核心功能可用;进一步,为了保证BA,就只能选择最终一致性E了,此时系统就处于了S状态即软状态。
    2019-11-18
    4
  • dinuo2019
    听完这一讲,我有几个想法和问题: 1,在CP系统中,是不是也有利用分布式事务,在写入时阻塞直到满足条件才会提交,也就是用户1的写入请求不会被提交,直到恢复后才会写入成功;在这期间,根据隔离级别的设置,如果系统允许读,db1和db2都会返回为1; 2,BASE理论是AP系统的一种实现思想,在不满足强一致性的时候,以最终一致性作为代替; 3,kafka的数据本分replica,看到说是CA的系统,但kafka本身是分布式的系统,需要保留P,这里该如何理解?
    2019-11-18
    4
收起评论
显示
设置
留言
23
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部