分布式协议与算法(常用)

01 | 拜占庭将军问题:有叛徒的情况下,如何才能达成共识?
解决办法一:口信消息型拜占庭问题之解
如果叛将人数为 m,将军人数不能少于 3m + 1 ,需要进行m+1轮作战信息协商,那么占庭将军问题就能解决了。这个算法有个前提,叛徒数量是已知的。

解决办法二:签名消息型拜占庭问题之解
在不增加将军数量的情况下,某个将军发送的作战信息一旦被修改就能被发现,从而执行另一个将军的作战计划

强调:拜占庭将军问题描述的是最困难的,也是最复杂的一种分布式故障场景,除了存在故障行为,还存在恶意行为的一个场景。
在存在恶意节点行为的场景中(比如在数字货币的区块链技术中),必须使用拜占庭容错算法(Byzantine FaultTolerance,BFT)。除了故事中提到两种算法,常用的拜占庭容错算法还有:PBFT 算法,PoW 算法,而在计算机分布式系统中,最常用的是非拜占庭容错算法,即故障容错算法(Crash FaultTolerance,CFT)。

CFT 解决的是分布式的系统中存在故障,但不存在恶意节点的场景下的共识问题。
也就是说,这个场景可能会丢失消息,或者有消息重复,但不存在错误消息,或者伪造消息的情况。常见的算法有 Paxos 算法、Raft 算法、ZAB 协议

02 | CAP理论:分布式系统的PH试纸,用它来测酸碱度
一致性(Consistency):不管你访问哪个节点,要么我给你返回的都是绝对一致的数据,要么你都读取失败。
一致性强调的不是数据完整,而是各节点间的数据一致。
可用性(Availability):我尽力给你返回数据,不会不响应你,但是我不保证每个节点给你的数据都是最新的。
这个指标强调的是服务可用,但不保证数据的一致。
分区容错性(Partition Tolerance):不管我的内部出现什么样的数据同步问题,我会一直运行,提供服务。
这个指标,强调的是集群对分区故障的容错能力。

”CAP 不可能三角“怎么理解?
CAP 不可能三角说的是对于一个分布式系统而言,一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)3 个指标不可兼得,只能在 3 个指标中选择 2 个。

总结:
CA 模型,在分布式系统中不存在。因为舍弃 P,意味着舍弃分布式系统,就比如单机版关系型数据库 MySQL,如果 MySQL 要考虑主备或集群部署时,它必须考虑 P。
CP 模型,采用 CP 模型的分布式系统,一旦因为消息丢失、延迟过高发生了网络分区,就影响用户的体验和业务的可用性。因为为了防止数据不一致,集群将拒绝新数据的写入

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值