这是我参与「第五届青训营 」伴学笔记创作活动的第4天
MVCC
数据处于中间状态用锁来保护,悲观锁、乐观锁使用场景不同
每个数据中心有一个和卫星校准时钟:TrueTime API
开源数据库:软件方式实现时间戳,TSO,需要考虑低延迟高性能
中心化服务器,分发时间戳,提交事务前都先去获得时间戳,4阶段提交
共识协议
Quorum NWR
分布式模型:
N份数据的副本,一次写至少W份副本被更新(其余的副本可以异步更新),一次读至少读R份副本的值
反证:如果 R <= N - W,则可能读到旧的还未更新的副本数据,则数据不一致
不被覆盖就没有问题,适合append only的系统,不适合KV、数据库系统
把CAP选择交给用户:更改W、R的值
RAFT协议
分布式一致性算法
日志:追加写,不会覆盖数据
term任期号是精髓
commited:只用写两份,leader和一个follower,读只用读一份,从leader读
applied:两阶段提交
(没听懂!继续回去看!)
mapreduce:
调度的中心服务
容错机制:map发生故障,reducer故障(重新跑整个job)
分布式KV:
存储大规模KV对,根据key划分为不同region,每个region分发到一个节点
在线存储服务,变化的
弹性的诉求:
raft开源实现,raft learner原理