0
点赞
收藏
分享

微信扫一扫

swing基本组件用法_JTooBar

影子喵喵喵 2023-05-12 阅读 71

分布式一致性和CAP理论

  • C(一致性):在分布式环境中,一致性是指数据在多个副本之间能否保持一致的特性
  • A(可用性):系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。99.999%
  • P(分区容错性):分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供一致性和可用性的服务,除非整个网络环境都发生了故障。

分布式一致性算法

RAFT

  • Leader:只有一个
  • Follower:选民
  • Candidate:候选者
    过半数 + 1即变为leader
    在这里插入图片描述
    还可以自己选自己
    在这里插入图片描述
    leader挂掉之后的情况
    在这里插入图片描述

共识算法:拜占庭将军问题

  • 拜占庭帝国(Byzantine Empire)军队的几个师驻扎在敌城外,,每个师都由各自的将军指挥.。将军们只能通过信使相互沟通,在观察敌情之后,他们必须制定一个共同的行动计划,如进攻(Attack)或者撤退(Retreat),且只有当半数以上的将军共同发起进攻时才能取得胜利。然而,其中一些将军可能是叛徒,试图阻止忠诚的将军达成一致的行动计划。更糟糕的是,负责消息传递的信使也可能是叛徒,他们可能篡改或伪造消息,也可能使得消息丢失。
  • 为了更加深入的理解拜占庭将军问题,我们以三将军问题为例进行说明。当三个将军都忠诚时,可以通过投票确定一致的行动方案,General A,B通过观察敌军军情并结合自身情况判断可以发起攻击,而General C通过观察敌军军情并结合自身情况判断应当撤退。最终三个将军经过投票表决得到结果为进攻:撤退=2:1,所以将一同发起进攻取得胜利。对于三个将军,每个将军都能执行两种决策(进攻或撤退)的情况下,共存在6中不同的场景。上述是其中一种,对于其他5中场景可简单地推得,通过投票三个将军都将达成一致的行动计划。
  • 当三个将军中存在一个叛徒时,将可能扰乱正常的作战计划。例如General C为叛徒的一种场景,他给General A和General B发送了不同的消息,在这种场景下General A通过投票得到进攻:撤退=1:2,最终将作出撤退的行动计划;General B通过投票得到进攻:撤退=2:1,最终将作出进攻的行动计划。结果只有General B发起了进攻并战败。
  • 事实上,对于三个将军中存在一个叛徒的场景,想要总能达到一致的行动方案是不可能的。详细的证明可参看Leslie Lamport的论文。此外,论文中给出了一个更加普适的结论:如果存在m个叛将,那么至少需要3m+1个将军,才能最终达到一致的行动方案。

分布式环境中的脑裂和Lease

脑裂

  • 出现网络故障
  • 在这里插入图片描述
  • 由于网络问题一个集群变为多个集群,出现多个leader,这种现象就是脑裂
  • 在这里插入图片描述

解决方案

过半选举(Zookeeper)

保证集群的可用性,最少有大于一般的机器处于可用状态
在这里插入图片描述

发布leader证

每隔指定时间发布leader证,持有该证书的节点是leader。时间依赖于当前机器的时钟,因此会有时钟误差问题,需要保证集群内机器的时钟是同步的,一般设置在10秒钟的量级。
在这里插入图片描述

举报

相关推荐

0 条评论