分布式系统 | 青训营笔记

120 阅读2分钟

这是我参与【第五届青训营】伴学笔记活动的第八天

什么是分布式

分布式系统是计算机程序的集合,这些程序利用多个独立计算节点的计算资源来实现共同的目标。

  • 分布式计算
  • 分布式存储
  • 分布式数据库

image.png

分布式系统的特征

(1)分布性。分布式系统由多台计算机组成,它们在地域上是分散的,可以散布在一个单位、一个城市、一个国家,甚至全球范围内。整个系统的功能是分散在各个节点上实现的,因而分布式系统具有数据处理的分布性。 

(2)自治性。分布式系统中的各个节点都包含自己的处理机和内存,各自具有独立的处理数据的功能。通常,彼此在地位上是平等的,无主次之分,既能自治地进行工作,又能利用共享的通信线路来传送信息,协调任务处理。 (3)并行性。一个大的任务可以划分为若干个子任务,分别在不同的主机上执行。 (4)全局性。分布式系统中必须存在一个单一的、全局的进程通信机制,使得任何一个进程都能与其他进程通信,并且不区分本地通信与远程通信。同时,还应当有全局的保护机制。系统中所有机器上有统一的系统调用集合,它们必须适应分布式的环境。在所有CPU上运行同样的内核,使协调工作更加容易。

故障模型

image.png

时间和事件顺序

lamport 逻辑

理论基础

CAP理论

image.png

ACID理论

image.png

BASE理论

二阶段提交

“事务”与回滚

MVCC

  • MVCC:多版本并发控制的方法。维持一个数据的多个版本使读写操作没有冲突。所以既不会阻塞写,也不阻塞读。提高并发性能的同时也解决了脏读的问题。

  • 悲观锁和乐观锁

    • 悲观锁:操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修改数据
    • 乐观锁:不会上锁,只是在执行更新时判断别人是否修改数据,只有冲突时才放弃操作
  • 版本的选取:使用物理时钟或逻辑时钟

    • 物理时钟:提供TrueTime API,有Master节点维持一个绝对时间,保证各个服务器之间时钟误差控制在ϵ内,通常ϵ<7ms。

    • 逻辑时钟:中心化授时的方式--时间戳预言机(TSO),好处是无需硬件的支持

乐观锁悲观锁

image.png

Reference

juejin.cn/post/719336…