极客视点
极客时间编辑部
极客时间编辑部
113245 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/05:06
登录|注册

如何系统性地学习分布式系统?(下)

讲述:丁婵大小:7.01M时长:05:06
你好,欢迎收听极客视点。
如今分布式技术的需求火热,但优秀的分布式技术人才极度短缺。此前,知乎圆桌会议就“如何系统性地学习分布式系统?”这个问题展开讨论,伴鱼技术团队(知乎 ID:kylin)对会议内容做了整理。
我们知道,分布式系统是通过多工作节点来解决单机系统面临的成本和可用性问题,但是它引入了对分布式系统内部工作节点的协调问题。在上一篇文章,我们了解了分布式计算进行系统内部工作节点的协调,本文继续分享分布式存储(有状态)的内部协调是怎么做的,同时,上一篇文章中介绍的分布式计算的协调方式在分布式存储中同样适用,就不再重复了。

分布式存储引入了哪些新的问题?

1. 分布式系统的理论与衡权

首先,要了解 ACID、BASE 和 CAP 理论这三个主题,你可以通过参考文献进行了解。

2. 怎样做数据分片?

单机的存储能力是不可能存储所有数据的,所以需要解决怎么将数据按一定的规则分别存储到不同的机器上,目前使用比较多的方案有:Hash、Consistent Hash 和 Range Based 分片策略,可以了解一下它们的优缺点和各自的应用场景。

3. 怎样做数据复制?

为什么满足系统的高可用要求,需要对数据做冗余处理,目前的方案主要为:中心化方案(主从复制、一致性协议比如 Raft 和 Paxos 等)和 去中心化的方案(Quorum 和 Vector Clock)。了解一下它们的优缺点和各自的应用场景,以及对系统外部表现出来的数据一致性级别(线性一致性、顺序一致性、最终一致性等)。

4. 怎样做分布式事务?

对于分布式系统来说,要实现事务,首先需要有对并发事务进行排序的能力,这样在事务冲突的时候,确认哪个事务提交成功,哪个事务提交失败。对于单机系统来说这完全不是问题,简单通过时间戳加序号的方式就可以实现。但是对于分布式系统来说,系统中机器的时间不能完全同步,并且单台机器序号也没用全局意义,按上面的方式说行不通的。
不过整个系统选一台机器按单机的模式生产事务 ID 是可以的,同城多中心和短距离的异地多中心都没有问题,不过想做成全球分布式系统的话,那么每一次事务都要去一个节点获取事务 ID 的成本太高。Google 的 Spanner 是通过 GPS 和原子钟实现 TrueTime API 来解决这个问题从而实现全球分布式数据库的。
有了事务 ID 后,通过 2PC 或者 3PC 协议来实现分布式事务的原子性,其他部分和单机事务差别不大,就不再细说了。

进阶学习阶段

了解了分布式系统解决问题的原理以及前因后果,对分布式系统脉络上有了基本的概念。接下来开始进入细节学习阶段,这也是非常辛苦的阶段,对于分布式系统的理解深入与否,对细节的深入度是很重要的评价指标,毕竟魔鬼在细节。这时可以往两个方面进行系统的学习。

1. 从实践出发

研究目前比较常用的分布式系统的设计,HDFS 或者 GFS(分布式文件系统)、Kafka 和 Pulsar(分布式消息队列)、Redis Cluster 和 Codis(分布式缓存)、MySQL 的分库分表(传统关系型数据库的分布式方案)、MongoDB 的 Replica Set 和 Sharing 机制集以及去中心化的 Cassandra(NoSQL 数据库)、中心化的 TiDB 和去中心化的 CockroachDB(NewSQL),以及一些微服务框架等。

2. 从理论出发

从理论出发,研究分布式相关的论文。可以阅读《数据密集型应用系统设计》(Designing Data-Intensive Applications)这本书,先通读整本书,然后对比较感兴趣的章节,再细读其中涉及到的相关参考文献。
当你完成了进阶学习,想成为高级程序员,就需要具备分布式系统的架构和设计能力。
但这个过程存在一个环境障碍,工作中只有一些中大规模的互联网企业,才有开发大规模分布式系统的场景和需求。这就造成目前只有少数身在一线互联网公司的架构师和开发者,才有机会接触并掌握分布式系统设计技术。而对于广大的普通开发者,所在的企业并没有这样的开发场景和需求,造成他们没有机会,去接触和实践分布式系统设计技术。
极客时间专栏《分布式系统案例课》由浅入深,带你了解分布式系统的设计步骤,深入讲解核心技术,消息队列、数据一致性和事务、大型网站的演进 / 迁移 / 双活和多活、以及 Service Mesh 新技术等。课程的讲解方式还会增加面试的安排,不仅学习技术,也为你之后的系统面试做储备。
以下是这个专栏的目录,供你参考。记得使用极客视点专属口令,享受立减优惠。
优惠口令:fenbuanli
适用规则:立减 10 元(满 40 元可用)
有效期:9 月 15 日 - 9 月 22 日
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
大纲
固定大纲
分布式存储引入了哪些新的问题?
1. 分布式系统的理论与衡权
2. 怎样做数据分片?
3. 怎样做数据复制?
4. 怎样做分布式事务?
进阶学习阶段
1. 从实践出发
2. 从理论出发
显示
设置
留言
收藏
76
沉浸
阅读
分享
手机端
快捷键
回顶部