分布式技术原理与算法解析
聂鹏程
智载云帆CTO,前华为分布式Lab资深技术专家
立即订阅
5969 人已学习
课程目录
已更新 36 讲 / 共 34 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 四纵四横,带你透彻理解分布式技术
免费
01 | 分布式缘何而起:从单兵,到游击队,到集团军
02 | 分布式系统的指标:啥是分布式的三围
第一站:分布式协调与同步 (6讲)
03 | 分布式互斥:有你没我,有我没你
04 | 分布式选举:国不可一日无君
05 | 分布式共识:存异求同
06 | 分布式事务:All or nothing
07 | 分布式锁:关键重地,非请勿入
08 | 分布式技术是如何引爆人工智能的?
第二站:分布式资源管理与负载调度 (6讲)
09 | 分布式体系结构之集中式结构:一人在上,万人在下
10 | 分布式体系结构之非集中式结构:众生平等
11 | 分布式调度架构之单体调度:物质文明、精神文明一手抓
12 | 分布式调度架构之两层调度:物质文明、精神文明两手抓
13 | 分布式调度架构之共享状态调度:物质文明、精神文明多手协商抓
14 | 答疑篇:分布式事务与分布式锁相关问题
第三站:分布式计算技术 (4讲)
15 | 分布式计算模式之MR:一门同流合污的艺术
16 | 分布式计算模式之Stream:一门背锅的艺术
17 | 分布式计算模式之Actor:一门甩锅的艺术
18 | 分布式计算模式之流水线:你方唱罢我登场
第四站:分布式通信技术 (4讲)
19 | 分布式通信之远程调用:我是你的千里眼
20 | 分布式通信之发布订阅:送货上门
21 | 分布式通信之消息队列:货物自取
22 | 答疑篇:分布式体系架构与分布式计算相关问题
第五站:分布式数据存储 (5讲)
23 | CAP理论:这顶帽子我不想要
24 | 分布式数据存储系统之三要素:顾客、导购与货架
25 | 数据分布方式之哈希与一致性哈希:“掐指一算”与“掐指两算”的事
26 | 分布式数据复制技术:分身有术
27 | 分布式数据之缓存技术:“身手钥钱”随身带
特别放送 (3讲)
特别放送 | 分布式下的一致性杂谈
特别放送 | 徐志强:学习这件事儿,不到长城非好汉
特别放送 | 那些你不能错过的分布式系统论文
第六站:分布式高可靠 (5讲)
28 | 分布式高可靠之负载均衡:不患寡,而患不均
29 | 分布式高可靠之流量控制:大禹治水,在疏不在堵
30 | 分布式高可用之故障隔离:当断不断,反受其乱
31 | 分布式高可用之故障恢复:知错能改,善莫大焉
32 | 答疑篇:如何判断并解决网络分区问题?
分布式技术原理与算法解析
登录|注册

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

聂鹏程 2019-11-18
你好,我是聂鹏程。今天,我来继续带你打卡分布式核心技术。
在开篇词中,我将分布式计算划分为了四横四纵。而在前面的文章中,我们已经一起学习了四横中的分布式计算、分布式通信和分布式资源池化三横的相关知识。比如,在分布式计算中,我们学习了分布计算模式,包括 MapReduce、Stream、Actor 和流计算的原理和实际应用;在分布式通信中,我们学习了远程调用、订阅发布和消息队列模式的原理和应用;在分布式资源池化中,我们学习了分布式系统架构和分布式调度架构。
相信通过对这些内容的学习,你已经对分布式技术有比较深刻的了解了。分布式系统处理的关键对象是数据,前面这些文章也都是为数据处理服务的。那么,数据本身相关的分布式技术有哪些呢?这就是接下来的几讲,我要带你学习的四横中的最后一横“分布式数据存储与管理”的相关技术。
在正式介绍分布式数据存储技术之前,我需要先带你了解一个基本理论,也就是 CAP 理论。前面提到,分布式系统处理的关键对象是数据,而数据其实是与用户息息相关的。CAP 理论指导分布式系统的设计,以保证系统的可用性、数据一致性等特征。比如电商系统中,保证用户可查询商品数据、保证不同地区访问不同服务器查询的数据是一致的等。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《分布式技术原理与算法解析》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(9)

  • tt
    BASE理论中的BA是“基本可用”,不是全都可用,也不是全都不可用,而是功能的某些子集如核心功能可用;进一步,为了保证BA,就只能选择最终一致性E了,此时系统就处于了S状态即软状态。
    2019-11-18
    2
  • Jackey
    base理论其实是对cap中ap的一种补充和延展。它的软状态就是一种数据不一致的状态,base所说的最终一致性,也就是牺牲了一致性。我认为cap比较理想化,实际情况是网络都会有些延迟,无法保证强一致,所谓的“强一致”和“最终一致”只是对数据不一致时间的容忍度不同
    2019-11-18
    4
    2
  • nimil
    咱以后也能听懂大佬们谈cap了,嘿嘿
    2019-11-18
    2
  • 被歌唱拯救中
    对于弃CP保A有疑问,比如网络分区后,{北京,杭州}为分区a,{上海}为分区b,分区a可以进行下单(写操作),分区b应该也可以下单(写操作)的吧?假如不同分区都进行了写操作,网络恢复后,如何做数据同步呢?拿变量x举例好了,一个分区对x赋值为2,另一个分区赋值为3,数据同步就有冲突了,也不能单纯地以某一分区为准吧?

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

    2019-11-19
    1
    1
  • Eternal


    CAP是理论下的理想状态,因为分布式系统中网络故障问题是不可改变的一直存在,所以必须分区容错P必须保证;
    然后在CA之间做取舍,但是实际情况是CA都想保证,但是又不能同时保证,最终妥协的事实标准BASE诞生,BASE同时
    牺牲掉一些C(数据最终一致),牺牲掉一些A(服务基本可用,核心流程的系统可用,或者保证了业务的连续性),这样的
    话系统可以理解为一种软状态。参考学习留言区的小伙伴的视角,数据的一致性:站在系统的角度是最终一致性,站在用户的角度
    数据是强一致性。

    本节课中老师讲ACID和CAP做一个比较,感觉挺好的,两个单独拿出来说可能大家都知道,但是将二者比较分析,我却一直没思考过。
    2019-11-23
  • 蓝魔丶
    老师,例子中A,B,C三个服务器存储相同的库存数,怎么保证电吹风在北京仓库有 20 个,在杭州仓库有 10 个,在上海仓库有 30 个,比如北京的人来下单减库存,是否应该保证最多只能卖出20个,为什么要让他们看到的库存数一样,只让北京的人看到最多20个商品库存不行嘛?

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

    2019-11-21
    1
  • xfan
    前后后所矛盾。
    举例中说明 :分区容错性: 在满足分区容错性 P 的情况下,Server1 和 Server2 之间即使出现网络故障也不会影响 Server1 和 Server2 分别处理用户的请求。
    但是在zookeeper中 形成两个分区后,只有大于集群一半数量的新分区才可以继续服务,小于一半的无法提供服务,然后也满足分区容错性,保CP 弃A ,
    前后矛盾,不知道如何去理解。
    2019-11-20
    2
  • dinuo2019
    听完这一讲,我有几个想法和问题:
    1,在CP系统中,是不是也有利用分布式事务,在写入时阻塞直到满足条件才会提交,也就是用户1的写入请求不会被提交,直到恢复后才会写入成功;在这期间,根据隔离级别的设置,如果系统允许读,db1和db2都会返回为1;
    2,BASE理论是AP系统的一种实现思想,在不满足强一致性的时候,以最终一致性作为代替;
    3,kafka的数据本分replica,看到说是CA的系统,但kafka本身是分布式的系统,需要保留P,这里该如何理解?
    2019-11-18
  • leslie
    其实CAP的取舍很多时候就很难:单一的数据库系统其实无法完全满足需求;这其实是为何现在分布式反而更多的引入了ACID的A的原因吧,其实常规的分布式CP哪怕弃A对比ACID的效果还是差一些;这大概是为何现在个人的感觉其实是分布式与传统模式相互交替以互补的形式存在生产系统的原因吧。
    2019-11-18
收起评论
9
返回
顶部