分布式技术原理与算法解析
聂鹏程
智载云帆CTO,前华为分布式Lab资深技术专家
立即订阅
6095 人已学习
课程目录
已完结 39 讲
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 | 答疑篇:如何判断并解决网络分区问题?
第七站:分布式核心知识串讲 (2讲)
33 | 知识串联:以购买火车票的流程串联分布式核心技术
34 | 搭建一个分布式实验环境:纸上得来终觉浅,绝知此事要躬行
结束语 (1讲)
结束语 | 为什么说提升职业竞争力要从尊重、诚实开始?
分布式技术原理与算法解析
登录|注册

24 | 分布式数据存储系统之三要素:顾客、导购与货架

聂鹏程 2019-11-20
你好,我是聂鹏程。今天,我来继续带你打卡分布式核心技术。
在上一篇文章中,我们一起学习了 CAP 理论。该理论指出,在分布式系统中,不能同时满足一致性、可用性和分区容错性,指导了分布式数据存储系统的设计。
随着数据量和访问量的增加,单机性能已经不能满足用户需求,分布式集群存储成为一种常用方式。把数据分布在多台存储节点上,可以为大规模应用提供大容量、高性能、高可用、高扩展的存储服务。而,分布式存储系统就是其具体实现。
在今天这篇文章,我将带你学习分布式存储系统的关键三要素,让你对分布式数据存储系统有一个直观的理解。在后面几篇文章中,我会针对这三要素中的关键技术进一步展开,以帮助你更深入地理解分布式数据存储系统。
接下来,我们就一起打卡分布式存储系统的三要素:顾客、导购与货架。

什么是分布式数据存储系统?

分布式存储系统的核心逻辑,就是将用户需要存储的数据根据某种规则存储到不同的机器上,当用户想要获取指定数据时,再按照规则到存储数据的机器里获取。
如下图所示,当用户(即应用程序)想要访问数据 D,分布式操作引擎通过一些映射方式,比如 Hash、一致性 Hash、数据范围分类等,将用户引导至数据 D 所属的存储节点获取数据。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《分布式技术原理与算法解析》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(8)

  • Eternal
    老师的问题:传统单机关系型数据库与分布式数据库的区别是什么?

    回答老师的问题,我任务首先需要需要梳理几个维度,然后通过这些维度来比较单机数据库和分布式数据库的区别,其实课程内容中老师已经
    回描述了很多了,我这里总结一下自己的思考:

    1.需求场景的演进
    在互联网和移动互联网还没爆发的时候,系统的用户量,数据量,系统的交互实时性都比较低。这个时候单机的关系型数据库就已经够用了。
    但是随着互联网和移动互联网的发展,单机的关系型数据库不能满足需求的迭代,于是分布式数据据演化出来。我们可以通过分库分表,
    数据的水平拆分,垂直拆分来扩展数据库的服务能力,但是这样没有本质的改变单机的关系型数据库。

    2.数据量
    传统单机关系型数据库单表1亿数据量我们认为比较高了,需要拆分,分布式数据库OceanBase能支持上千亿上百TB级别的数据跨行跨表事务
    处理,传统单机关系型是完全不能抗衡的。

    3.数据的存储格式
    传统单机关系型数据库:存储的是结构化的表数据
    分布式数据库:支持结构化的表数据、半结构化数据、非结构化数据

    4.数据的索引
    传统单机关系型数据库:B树、B+树、hash、倒排索引;比如Mysql目前主流使用都是Innodb的 B+树索引
    分布式数据库:hash、一致性hash环、数据范围分类
    因为数据的格式变化得更加丰富,数据的索引也变化了

    5.数据分片和数据复制
    传统单机关系型数据库:可以主从复制(主提供写,从提供读);可以数据拆分。拆分后一个节点故障后不能提供服务。
    分布式数据库:可以将数据拆分成很多个节点,每个节点都有多个数据副本,每个节点都能提供数据的读写,数据自动合并

    6.老师上一节将的CAP理论维度
    传统单机关系型数据库:支持CA,不支持P
    分布式数据库:支持P,CA之间根据业务场景取舍


    7.使用效率:关联查询、事务处理、排序处理
    传统单机关系型数据库:三个维度都支持得很好,很成熟
    分布式数据库:关联查询复杂度提高了、事务数据复杂度提高了,排序的复杂度提高了
    2019-11-23
    7
  • leslie
    传统的单机其实问题在于处理并发的能力弱,早期的网络速度和使用用户没那么多;单机足以支撑,现在网速、连接数、需求更加多样化了,单机就难以支撑了。生产环境不可能是读写1:1,大多数场景还是会是70%的读30%的写或者更高,故而后期的做法基本都是用读写分离去平衡这种问题。
          用擅长的东西去做擅长的事情吧,故而MYSQL会有MYISAM和INNODB两种存储引擎,MYSQL5.0时MYISAM为主innodb可辅,10年后到了5.7完全反向了。人不可能全能:多件事情都需要做可能就需要团队了。MYSQL的分布式主要是做了读写分离:针对生产线上的压力去增加只读数据库或者写数据库从而平衡线上的压力。
          老师的课程今天讲的3个东西其实就是目前的中间件存储/数据系统:MQ+NOSQL DB+ RMDB;不再是用单一的数据库去支持整个业务,而是用整个数据系统去支撑整个业务。
           
      
    2019-11-20
    1
  • Jackey
    刚好公司目前在拆分数据库,我从使用的角度聊一聊单机和分布式的区别吧。首先影响最大的可能是联查,分布式数据库的联查是一件很麻烦的事情,因为要关联的数据可能不在同一个库里。然后是取前n个值,由于数据分散在各个库中,如果不是根据sharding字段排序,要得到准确排序,可能需要把m(数据库数量)倍的数据都查出来,放到内存中排序,这个效率会非常低。
    2019-11-20
    1
    1
  • Geek_f6f02b
    oceanbase好像1.4之后就不开源了,走商业化了
    2019-12-23
  • 💢 星星💢
    传统单机数据库,首先单机存储容量肯定有限制的,而且存在单点,但是上一讲说了它是不存在网络分区的,处理数据简单明了。这讲来讲拿货取货,都非常方便,可以没有导购。
    而分布式数据库,存储容量是根据你业务增长来的。解决了单兵作战问题。但是处理数据比较麻烦,还要参考cap理论,做相应的技术手段应对。拿货取货都比较麻烦,必须要有导购,而且还要根据各种货物的类型,选择合适的货架放置。

    作者回复: 总结的非常好!加油!

    2019-12-19
  • 阿卡牛
    老师会说单主节点、多主节点、无主节点复制的相关内容吗
    2019-11-23
  • 随心而至
    这篇文章真是太赞了,之前我总是觉得Mongodb,Redis,Elasticsearch,Kafka等等关于数据存储都好像好像。
    下面是我之前的留言:
    分布式数据存储,好像都是利用某种hash算法将数据存在不同的机器上。Kafka: hash(消息的键)来确定分区;Redis:hash(key)来确定slot;ES:hash(docId)来确定shard。

    看了今天的文章,顾客(生产者/消费者),导购(数据索引),货架(数据库),真是有种拨开云雾见青天的感觉,茅塞顿开,赞赞赞。
    2019-11-20
  • xingoo
    在存储位置方面,传统数据库一般很少做集群,点也很少。分布式数据库一般会由几十,几百,几千个节点组成。而数据的查询分布都是靠数据分片的规则来定。

    在存储格式上,传统数据库一般采用b+树,适合增删改查重建索引;分布式数据库一般采用lsm树,顺序插入,合并更新机制。

    存储的内容上,分布式数据库一般结构化不明显,偏向稀疏的列式存储,不容易做到acid,锁的机制也没有数据库丰富。
    2019-11-20
收起评论
8
返回
顶部