至关长的一段时间里我试图努力学习分布式系统, 而偏偏是一旦开始深挖学习, 彷佛就没有尽头, 关于分布式系统的文献和资料很是普遍, 对初学者来讲很难决定读什么样的Paper, 买什么样的书.html
因此把相关的资料整理下, 方便你们学习.git
分布式系统是什么github
分布式系统的事务处理shell
两阶段提交ide
三阶段提交性能
Lamport's Paxos Made Livegoogle
Amazon’s Highly Available Key-value Store
What we talk about when we talk about Distribute System
Time, Clocks, and the Ordering of Events in a Distributed System
The Chubby lock service for loosely-coupled distributed systems
分布式系统是什么?
分布式多节点环境中, 如何应对单节点故障状况, 而整个集群能够提供完整无损的服务.
在生产环境中一般使用两种手段来扩展数据服务能力:
以上方案都须要考虑三种状况:
要想让数据有高可用性, 就须要冗余数据写多份, 写多份的问题会带来一致性的问题, 而一致性的问题又会带来性能问题.
是一个解决分布式系统中, 多个节点之间就某个值(提案)达成一致(决议)的通讯协议.
解决最大问题: 把不肯定性的事情变得肯定.
"你愿意和我滚床单吗?" "滚!"
NWR模型把CAP的选择权交给了用户, 让用户本身的选择你的CAP中的哪两个.
N表明N个备份, W表明要写入至少W份才认为成功, R表示至少读取R个备份.
配置的时候要求W+R > N. 由于W+R > N, 因此R > N-W 这个是什么意思呢? 就是读取的份数必定要比总备份数减去确保写成功的倍数的差值要大.
也就是说, 每次读取, 都至少读取到一个最新的版本, 从而不会读到一份旧数据.
Dynamo引入了Vector Clock将可能的版本冲突交给用户本身处理.