这是我参与【第五届青训营】伴学笔记活动的第八天
什么是分布式
分布式系统是计算机程序的集合,这些程序利用多个独立计算节点的计算资源来实现共同的目标。
- 分布式计算
- 分布式存储
- 分布式数据库
分布式系统的特征
(1)分布性。分布式系统由多台计算机组成,它们在地域上是分散的,可以散布在一个单位、一个城市、一个国家,甚至全球范围内。整个系统的功能是分散在各个节点上实现的,因而分布式系统具有数据处理的分布性。
(2)自治性。分布式系统中的各个节点都包含自己的处理机和内存,各自具有独立的处理数据的功能。通常,彼此在地位上是平等的,无主次之分,既能自治地进行工作,又能利用共享的通信线路来传送信息,协调任务处理。 (3)并行性。一个大的任务可以划分为若干个子任务,分别在不同的主机上执行。 (4)全局性。分布式系统中必须存在一个单一的、全局的进程通信机制,使得任何一个进程都能与其他进程通信,并且不区分本地通信与远程通信。同时,还应当有全局的保护机制。系统中所有机器上有统一的系统调用集合,它们必须适应分布式的环境。在所有CPU上运行同样的内核,使协调工作更加容易。
故障模型
时间和事件顺序
lamport 逻辑
理论基础
CAP理论
ACID理论
BASE理论
二阶段提交
“事务”与回滚
MVCC
-
MVCC:多版本并发控制的方法。维持一个数据的多个版本使读写操作没有冲突。所以既不会阻塞写,也不阻塞读。提高并发性能的同时也解决了脏读的问题。
-
悲观锁和乐观锁
- 悲观锁:操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修改数据
- 乐观锁:不会上锁,只是在执行更新时判断别人是否修改数据,只有冲突时才放弃操作
-
版本的选取:使用物理时钟或逻辑时钟
-
物理时钟:提供TrueTime API,有Master节点维持一个绝对时间,保证各个服务器之间时钟误差控制在ϵ内,通常ϵ<7ms。
-
逻辑时钟:中心化授时的方式--时间戳预言机(TSO),好处是无需硬件的支持
-
乐观锁与悲观锁
Reference