分布式共识

多数就是正确

有一种情况,某个节点的对外网络发生了问题,导致它只能接收外部请求而无法发出响应。这种情况下,这个节点会被宣告宕机,虽然事实并不是这样。分布式系统经常需要避免单点故障,在无主架构中,通常的方案是选举算法(quorum)。
如果一个节点在投票环节中被宣告宕机,那它就已经被系统认定为宕机状态。选举算法保证系统在某些节点宕机的情况下依旧可以正常运行。
过于分布式锁的过期时间,可以参考下图:


分布式共识_第1张图片
分布式锁

为了避免上述问题,引入了fencing tokens的概念。简单来说就是锁服务为锁或者租约加上一个类似版本号的标识,只有持有最新可用版本号锁/租约的客户端才能够正常访问资源。


分布式共识_第2张图片
fencing tokens

在使用基于zookeeper的分布式锁服务的时候,可用选用zxid或者cversion来作为标识字段。

拜占庭将军问题

相比之前,拜占庭将军问题假设系统中的节点并非完全可信,而是可能存在恶意节点。关于pbft

系统模型

  • 同步模型:对网络延迟,GC暂停,时间错误都很敏感。
  • 部分同步模型:指在正常系统状况下,表现出同步系统的特点。当出现超出预期的网络延迟,GC暂停时,系统仍旧可以运行。
  • 异步模型:对于执行结果可靠性要求不高。

你可能感兴趣的:(分布式共识)