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