数据复制与一致性

一致性理论模型

CAP

强一致性,系统的可用性,网络的分区容忍性是不可同时获得的

ACID 与 BASE

acid是关系数据库原则,获得了高可靠性与强一致性
base是NoSQL原则,牺牲了强一致性来获得高可用

数据为中心的一致性

强一致性

对于数据的更改,所有进程获得的数据是一致的

最终一致性

只要最后会一致即可,可以有一个不一致窗口

因果一致性

最终一致性一种,同样含有不一致窗口,但是要保证具有因果的进程一致
同一进程,先读再写有因果关系
不同进程,先写再读有因果关系

readyourwrite

保证自己写后能读到最新的值

会话一致性

特殊的ReadYourWrite,使得会话成为一个‘事务’。

用户为中心的一致性

单调读

若用户读后,整个系统不应读到比该版本更老的版本

单调写

即写是按顺序进行的

副本数据更新策略

主从更新

1.等待所有从机更新完成后再返沪用户
2.不等待(或等待部分,即为混合方式)直接返回用户

服务器应答

1.仅主服务器应答
2.从服务器也可应答(可能造成读不单调,通过R+W>N,保证读到一个同步节点)

任意节点更新

任意节点可称为主节点

一致性协议协议

两阶段提交

vote阶段与commit/abort阶段。(还是一个分布式的提交,只是有一个集中式的决策者)

向量时钟

(A:a,B:b,C:c,D:d)

RWN

Read+Write >N(总进程数)

paxos

lamport 时钟(以log副本以及内部状态机实现)
prepare阶段
1.PROPOSER向ACCEPTOR广播prepare(n),
2.ACCEPTOR接收到PROPOSER的广播开始检检查prepare(n)。
若n为接收到的最大,就响应PROPOSER且返回max(n)的accept(n,v)。
若n并非最大,不作任何响应
accept阶段
1.PROPOSER计数大多数的prapare(n),并返回accept(n,v)。对于v的选择
(1).选取所有PROPOSER返回的accept(n,v)选择max(v)作为v
(2).random(v)
2.ACCEPTOR接受任意accept(n,v)除非已经接受更大n的prepare(n)
最终可以选择出全局唯一的v

raft

paxos实际应用上难以证明其正确性,raft退而求其次,将应用划分为3个独立子问题(损失拓展性?类似mapreduce思想?)领导者选举,log复制,安全性。且采用主从结构(损失性能?)
1.follower不会发出rpc
2.若follower没有接收到心跳的启动选举程序
3.选举时follower(每个超时时间均不同)转为candidata并广播投票信息

投票

仅投给同term的且仅投一个

状态转换

若赢得选举在->candidata-leader
若另一个服务器宣称自己是服务器->candidata-follower
没有新的leader->term++;candidata不变

log复制

1.全局索引以及term编号确定唯一log
2.该唯一确定的log可递归证明前驱log也相同

安全性

仅包含所有已提交log的candidata才有资格成为leader
仅新leader提交过的log才被认为是被真正提交的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值