这是我参与「第五届青训营」伴学笔记创作活动的第8天
分布式概述
分布式系统简单来说就是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。主要可以分为分布式计算,储存,数据库等。
分布式的优势
- 去中心化
- 低成本
- 弹性
- 资源共享
- 可靠性高
常见的分布式系统
分布式储存:
例如GFS,Ceph,Hadoop HDFS,Zookeeper
分布式数据库
Google Spanner,TiDB,HBase,MongoDB
分布式计算
Hadoop,Spark,YARN
共识和一致性
最终一致性:
若多个对象中途可能因对同一数据的读写操作而导致读取到不一致的数据,但在操作完毕后多个对象最终可以读取到一致的数据。
线性一致性:
若某一对象对数据修改后及时将消息同步给其他对象,其他对象能立即获取到修改后的数据,这样即为线性一致性。
分布式事务
二阶段提交
二阶段提交是为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种演算法。 二阶段提交虽然在很大程度上保证了数据一致性但是也带来了一些问题,例如:多次节点间网络通信,导致耗时过大,若事务协助者节点宕机,需要另起新的协调者。同时,因为网络分区的原因可能导致一部分参与者收到了Commit,另一部分没有收到而导致数据的不一致。
三阶段提交
为了解决二阶段提交的问题,三阶段提交将Prepare阶段拆分成CanConnit和PreCommit机制,同时引入超时机制,在等待超时后,会继续进行事务的提交。
MVCC
MVCC是一种并发控制的方法,维持一个数据的多个版本使读写操作没有冲突。同时,MVCC为每个修改保存一个版本和事务的时间戳相关联。提高并发性能,并解决读脏问题。