分布式系统学习 - 书签

至关长的一段时间里我试图努力学习分布式系统, 而偏偏是一旦开始深挖学习, 彷佛就没有尽头, 关于分布式系统的文献和资料很是普遍, 对初学者来讲很难决定读什么样的Paper, 买什么样的书.html

因此把相关的资料整理下, 方便你们学习.git

分布式系统是什么github

分布式系统的事务处理shell

面向分布式系统工程师的分布式系统理论分布式

两阶段提交ide

三阶段提交性能

Log-Structured Merge Tree学习

Lamport's Paxos Made Simple动画

Lamport's Paxos Made Livegoogle

Paxos原理与实践

raft一致性协议

raft协议动画展现

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


分布式系统是什么?

分布式多节点环境中, 如何应对单节点故障状况, 而整个集群能够提供完整无损的服务.

在生产环境中一般使用两种手段来扩展数据服务能力:

  • 数据分区 //支付宝LDC项目
  • 数据镜像
  • 混合模式(数据分区+数据镜像) //淘宝单元化项目

以上方案都须要考虑三种状况:

  • 容灾
  • 数据一致性
  • 性能

要想让数据有高可用性, 就须要冗余数据写多份, 写多份的问题会带来一致性的问题, 而一致性的问题又会带来性能问题.

Paxos协议

是一个解决分布式系统中, 多个节点之间就某个值(提案)达成一致(决议)的通讯协议.

解决最大问题: 把不肯定性的事情变得肯定.

"你愿意和我滚床单吗?"
"滚!"

NWR模型 (Amazon Dynamo的NWR模型)

NWR模型把CAP的选择权交给了用户, 让用户本身的选择你的CAP中的哪两个.

N表明N个备份, W表明要写入至少W份才认为成功, R表示至少读取R个备份.

配置的时候要求W+R > N. 由于W+R > N, 因此R > N-W 这个是什么意思呢? 就是读取的份数必定要比总备份数减去确保写成功的倍数的差值要大.

也就是说, 每次读取, 都至少读取到一个最新的版本, 从而不会读到一份旧数据.

Dynamo引入了Vector Clock将可能的版本冲突交给用户本身处理.

相关文章
相关标签/搜索