当前位置:   article > 正文

强一致性算法&弱一致性算法

一致性算法

学习资料

BITTIGER视频课

什么是一致性

分布式系统,多个节点之间不能产生矛盾

CAP Theorem
在这里插入图片描述
对于一个分布式系统,不能同时满足以下三点:

  • 一致性 (Consistency)
  • 可用性 (Availability)
  • 分区容错性 (Partition Tolerance)

一般在保证P的时候,保证C的同时极大的提高A
可用性,服务不可用的状况一般不能出现

弱一致性算法

        在某一时刻用户或者进程查询到的数据可能都不同,但是最终成功更新的数据都会被所有用户或者进程查询到。

最终一致性
        往分布式数据库中写数据,如果另一个节点去读数据,系统不能保证节点立马读到最新数据,但是节点将来某一时刻可以读到这个新数据。

  • 弱一致性
    • 最终一致性
      • DNS (Domain Name System)
      • Gossip (Cassandra的通信协议)

exp:

DNS

强一致性算法

        在任何时刻所有的用户或者进程查询到的都是最近一次成功更新的数据。

  • 强一致性
    • 同步
    • Paxos
    • Raft (multi-paxos)
    • ZAB (multi-paxos)

主从同步

主从同步复制

  1. Master接受写请求
  2. Master复制日志到slave
  3. Master等到,直到所有从库返回

问题:一个节点失败,Master阻塞,导致整个集群不可用,保证了一致性,可用性却大大降低
在这里插入图片描述

多数派

每次写都保证写入大于N/2个节点,每次读保证从大于N/2个节点中读。

问题在并发环境下,无法保证系统正确性,顺序影响非常大。
在这里插入图片描述
解决方案 Paxos

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/538123
推荐阅读
相关标签
  

闽ICP备14008679号