这是我参与「第五届青训营」伴学笔记创作活动的第4天
分布式概述
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。
可以分为分布式计算、分布式存储、分布式数据库等。
具有去中心化、低成本、高弹性、资源共享、高可靠性等优势。
使用难点:理清规模、负载,一致性要求等;明确稳定性要求,制定好技术方案
学习重点:掌握分布式理论;了解一致性协议
常见分布式系统
分布式存储:Google File System,Ceph,Hadoop HDFS,Zookeeper
分布式数据库:Google Spanner,TiDB,HBase,MongoDB
分布式计算:Hadoop,Spark,YARN
系统模型
理论基础
CAP理论
C:一致性,指数据在多个副本之间能够保持一致的特性
A:可用性,指系统提供服务一直处于可用状态,每次请求都能获取最新数据
P:分区容错性,除非整个网络环境发生故障,否则分布式系统都能对外提供一致性和可用性
ACID理论
原子性(A):事务包含所有的操作要么全部成功,要么全部回滚
一致性(C):事务必须使数据库从一个一致性状态变换到另一个一致性状态
隔离性(I):并发事务不互相干扰
持久性(D):事务一旦提交,对数据库的改变是永久性的
BASE理论
Basically Available
Soft state:允许系统数据存在中间状态
Eventually consistent
分布式事务
二阶段提交
三阶段提交
将两阶段提交中的Prepare阶段,拆分成CanCommit和PreCommit机制 还引入超时机制。
MVCC
共识协议
Quorum NWR模型
N:有多少份备份数据
W:一次成功更新至少有w份数据写入成功
R:一次成功读数据操作至少有R份数据成功读取