这是我参与「第五届青训营 」笔记创作活动的第8天
「分布式理论 - 现代架构基石」
分布式概述
分布式计算、分布式存储、分布式数据库
分布式存在的挑战
1.普遍的节点故障
2.不可靠的网络
3.异构的机器与硬件环境
4.安全
学习者视角:
1.后端开发的必备技能
2.帮助理解后台服务器之间协作的机理
HOW:
掌握分布式理论
了解一致性协议
常见的分布式系统
系统模型
故障模型
拜占庭故障(即第一个故障)一般最难处理,所以实际生活中,我们会对数据进行加密来去防篡改
拜占庭将军问题
共识和一致性
理论基础
CAP理论
在实际中,我们不可能同时满足CAP
所以就产生了CA\AP\CP三种
ACID理论
事务
是数据库系统中非常重要的概念,它是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中所有的操作要么全部执行,要么全部不执行
事务具有四个特性:
原子性、一致性、隔离性、持久性
分布式事务
分布式事务往往采用两阶段提交的方式
有三个假设
MVCC
悲观锁和乐观锁
乐观锁,它是一种相对悲观锁而言的,非常乐观的机制,这个乐观锁机制会假设数据一般情况下不会造成冲突,所以数据已经在进行提交更新的时候,乐观锁才会正式对数据的冲突与否进行检测,如果发现冲突,就会返回给用户错误的信息,让用户自己决定如何去做。
乐观锁相信事务之间数据竞争概率是比较小的,因此它会尽可能的直接做下去,一直到提交的时候才去锁定,所以不会产生任何锁和死锁
比较
1、乐观锁并未真正加锁(不是真正的锁),效率高。一旦锁的粒度掌握不好,更新失败的概率就会比较高,容易发生业务失败。 2、悲观锁依赖数据库锁,效率低。更新失败的概率比较低。 3、悲观锁阻塞事务,乐观锁回滚重试,它们各有优缺点,不要认为一种一定好于另一种。像乐观锁适用于写比较少的情况下,即冲突真的很少发生的时候,这样可以省去锁的开销,加大了系统的整个吞吐量。但如果经常产生冲突,上层应用会不断的进行重试,这样反倒是降低了性能,所以这种情况下用悲观锁就比较合适。
MVCC是一种并发控制的方法,维持一个数据的多个版本使读写操作没有冲突,不会阻塞读和写
为每个修改保存一个版本,和事务的时间戳相关。可以提高并发性能