这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
分布式概述
分布式系统是计算机程序的集合,利用多个独立计算节点的计算资源去实现共同的目标。常见的就是分布式计算、分布式存储、分布式数据库。(苏小妍面试问过)
分布式存储(Ceph私有云数据库,用docker玩过,直接拉节点)
分布式数据库(MongDB没兴趣玩哈哈哈)
分布式计算(Hadoop,基于MapReduce分布式计算框架,写论文不常用的嘛)
CAP理论
定义:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。
解释: C:Consistency一致性(即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。) A: Availability可用性(即服务一直可用,而且是正常响应时间。) P: Partition tolerance分区容错性(即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。)
ACID(小林的)
- 原子性(Atomicity) :一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节,而且事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样,就好比买一件商品,购买成功时,则给商家付了钱,商品到手;购买失败时,则商品在商家手中,消费者的钱也没花出去。
- 一致性(Consistency) :是指事务操作前和操作后,数据满足完整性约束,数据库保持一致性状态。比如,用户 A 和用户 B 在银行分别有 800 元和 600 元,总共 1400 元,用户 A 给用户 B 转账 200 元,分为两个步骤,从 A 的账户扣除 200 元和对 B 的账户增加 200 元。一致性就是要求上述步骤操作后,最后的结果是用户 A 还有 600 元,用户 B 有 800 元,总共 1400 元,而不会出现用户 A 扣除了 200 元,但用户 B 未增加的情况(该情况,用户 A 和 B 均为 600 元,总共 1200 元)。
- 隔离性(Isolation) :数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致,因为多个事务同时使用相同的数据时,不会相互干扰,每个事务都有一个完整的数据空间,对其他并发事务是隔离的。也就是说,消费者购买商品这个事务,是不影响其他消费者购买的。
- 持久性(Durability) :事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
分布式事务
两阶段提交和三阶段提交(面试没啥问的,不过多看看没坏处)
MVCC问的更少(底层挺复杂,会了也忘了)
课程后边提到了像哨兵机制的,对比看看redis的哨兵机制
总结
课后的思考题多看看,面试也算挺常见的