38. 细节: Dynamo
Amazon's ``always writable'' data storage
Key-Value存储
Always writable
事关核心价值: 一次失败的"加
入购物车", 直接损失一笔交易
Eventually consistency: C--,
A++
无中心, 持续扩展
Consistent Hash+Virtual node
各节点地位平等
More
(Dynamo+BigTable)@facebook
== Cassandra --- twitter wants it
too!
39. 细节: Dynamo
Amazon's ``always writable'' data storage
CAP: N vs. R+W
可配置的R,W&N, 满足不同需求.
Eventually consistency
想象如CVS等并发版本管理
commit指定修改所基于的版本
没有冲突的commit, 顺利replicate到
个节点
有冲突的commit, 各节点返回不同版
本, 由应用(提交者) merge.
Preference list
优先写头 N' 台机器. 失败的话会写
下面的 => N' < N
结果: 有可能但稀有的冲突.
42. 小结: 细节
分布式系统
异步不可靠传输, 无一致时序是天然特性, 别想逃避.
Time, Clocks, and Ordering of Events in a Distributed System
Fallacies of Distributed Computing Explained
CAP
不同场景, 不同需求, 没有标准答案
Paxos&Chubby
真正实现一个 Quorum 算法
Chubby: 把复杂问题变成一个简单基础服务.
Commit log
经典设计模式
将可靠消息队列作为系统的骨架.
Log-structured merge tree
简单模型+简单实现
46. DO NOT Design for scalability at first
``可扩展'' 是有代价的
受限的查询能力
CAP: 宽松的一致性模型让开发者迷惑
不要在还没成长的时候担负成长的烦恼.
为赋新辞强说愁
在力所能及的情况下, 为可扩展做准备
以尽量不影响开发为前提
遵循常用扩展方法和可扩展设计原则
47. DO NOT Design for scalability at first
``可扩展'' 是有代价的
受限的查询能力
CAP: 宽松的一致性模型让开发者迷惑
不要在还没成长的时候担负成长的烦恼.
为赋新辞强说愁
在力所能及的情况下, 为可扩展做准备
以尽量不影响开发为前提
遵循常用扩展方法和可扩展设计原则
Google App Engine vs. Sina App Engine
对长尾头部应用, 谁都不靠谱: 需要特殊定制和优化
对小网站, 初创企业, 谁更靠谱?
52. Design for fault, always
这年头什么都不可靠
Erlang 的启示
Making reliable distributed systems in the presence of
software errors
组件隔离: 存储与应用, 应用之间......
Why PHP works?
也从函数式编程中学到很多.
健壮的基础架构
1. 普通应用组件无须容忍基础架构和其他组件的错误.
2. 如果他们出错, 则直接跟着 crash --- 没有重试?
3. 在这样的情况下, 能提供符合用户健壮性要求的应用.
不要让应用开发者把时间耗在思考各种死法上.
桌面软件错误 vs. Web
53. Design for change
规模, 业务的迅速变化, 保持敏
捷
基础架构也是演化来的
没有完美的统一架构, 不要一次过满足三个愿望.
后天的问题, 至少留到明天解决, 不要阻碍今天的生活.
Right design at X may be very wrong at 10X or 100X
反之亦然!
Google: 7 significant revision in last 10 years.
简单设计
典范: GFS 的 single master 史.
缩短开发周期, 降低项目复杂度, 船小好调头.
准备抛弃
55. 硬件影响设计
Source: Jeff Dean, Designs, Lessons and Advice
from Building Large Distributed Systems
56. 硬件影响设计
06 vs. Now: 硬件导致设计思路改变.
关于CPU
核数飞速增加, 但单核性能并没有非常大的提高
糟糕的应用并行性, shared data struct and locks are
even more evil than ever!
关于SSD: 规则改变者
SSD价格会迅速降低, 性能可靠性会继续提高.
SSD与传统机械硬盘的不同特性
The 5 minutes rule 20 years later and how flash memory
changes the rules
Technologies for Data-Intensive Computing