分布式2| 青训营笔记

48 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天

1.CAP理论中,请举例说明可用性和一致性的矛盾?

image.png 如图,两个进程读同一份数据,p1对于数据进行写入之后,出现故障没有办法将数据同步到p2,此时p1的数据是更新后的数据,p2的数据是旧的数据.此时如果通过p2请求数据,就需要对于可用性和一致性做出取舍:

  • 如果p2给到旧数据,那就是牺牲了数据一致性,保证了可用性,这种往往在数据正确性要求不高的场合使用,比如微博热榜,就算名次上更新不及时也没有很大的影响.
  • 如果p2停止服务,直到和p1恢复数据一致,那么就是牺牲了可用性,保证数据一致性,这种往往在重要数据场合使用,比如银行财务系统.

2.数据库里的一致性和分布式系统中的一致性有什么区别?

  • 数据库里的一致性是指数据库对于数据库里的操作必须符合业务的数据逻辑,比如说银行转账A->B,A扣的钱和B加的钱必须相等,A和B的总金额不能改变.
  • 分布式系统中的一致性是指对于逻辑上指向的同一份数据,在不同的进程上要一致.比如说,p1和p2都要读取a数据,如果数据a发生改变,p1和p2的数据必须要统一,不能是一方已经更新到了新数据而一方还是老数据.

3.两阶段提交中,什么场景需要数据库管理员介入?

  • 协调者和参与者都宕机时.

待续...

三阶段提交缓和两阶段提交的哪两个问题? 什么场景适合乐观锁?什么场景适合悲观锁? 在共识协议中,为什么说允许数据被覆盖会带来数据一致性问题? RAFT协议中,Leader写成功日志Log20但未同步给Followers后宕机,Follower重新选举后产生一条新日志Log20,这时Leader重启,整个系统发现两种不一样的Log20的记录,请问如何区分并拒掉前面的Log20? RAFT协议中,Stale读是如何产生的?该如何解决Stale读的问题?