这是我参与「第五届青训营 」伴学笔记创作活动的第10天
什么是分布式
- 分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算,分布式存储,分布式数据库。
- 优势:去中心化、低成本、弹性、资源共享、可靠性高
- 挑战:普遍的节点故障、不可靠的网络、异构的机器与硬件环境、安全。
常见的分布式系统
共识和一致性
- 读请求和写请求并发时可能读到旧值。最终一致性。
- 一旦某个读取到新值,所有客户端都必须返回新值。线性一致性
CAP理论
-
CAP理论往往用于数据库领域,同样也适用于分布式存储方向。
-
C、A、P中舍弃一种,加强另外两种,可以实现出适用于不同场景的数据库。
网络发生分区的情况下,必须在可用性和一致性之间做出选择,近似解决办法是将故障节点的负载转移给备用节点负责。
ACID理论
事务是数据库中执行过程中的一个逻辑单元,它能保证一个事务中的所有操作要么全部执行,要么全部不执行。
数据库事务有四个特性:
- A: 原子性
- B:一致性
- C:隔离性
- D:持久性
BASE理论
BASE理论是对CAP中一致性和可用性权衡的结果,其核心思想如下:
MVCC
- 悲观锁:操作数据时直接把数据锁住,直到操作完成才会释放锁。
- 乐观锁:不会上锁,只是在执行更新时判断别人是否修改数据,只有冲突的时候放弃操作。
MVCC是一种并发控制的方法,维持一个数据的多个版本使得读写操作没有冲突。所以既不会阻塞写,也不会阻塞读。MVCC为每个修改保存一个版本,和事务的时间戳相关联。可以提高并发性能,解决脏读的问题。
Quorum NWR三要素
Raft协议使用了Quorum机制。
分布式协议
Raft协议、Paxos协议
分布式实践
MapReduce