TOC
分布式系统
intro
什么是分布式系统
为什么要用分布式系统
可伸缩性
分布式系统中涉及到的基础架构
抽象层面
- 存储
- 通信
- 计算
实现层面
- 线程
- 并发控制
- RPC
分布式系统中的一些关注点
性能
- 伸缩性 2x的机器应该提供2x的性能
容错
任何节点都可能出错 崩溃
- 可访问性
- 可恢复性
一致性
- 强一致性 同一时刻所有节点都访问到相同数据
- 弱一致性 允许同一时刻访问到不同的数据 更为常用
RPC and Threads
Threads
使用线程的理由
- IO并发
- 多核并行
- 比起RPC更为简单
事件驱动
事件驱动无法真正意义上完全驱动多核CPU,事件驱动可以用低廉的成本带来IO层面的高并发,但是并不适合重CPU程序
协程
协程一般构建在语言层面上,与事件驱动类似,无法实现并行,但能够实现并发
GFS
Big Storage
难点
- 性能 - 分片
- 自动化的容错机制
- 容错机制需要我们实现数据冗余
- 数据冗余需要创建多个副本 多个副本要求实现一致性
- 而过于频繁的同步又会导致性能降低