多数就是正确
有一种情况,某个节点的对外网络发生了问题,导致它只能接收外部请求而无法发出响应。这种情况下,这个节点会被宣告宕机,虽然事实并不是这样。分布式系统经常需要避免单点故障,在无主架构中,通常的方案是选举算法(quorum)。
如果一个节点在投票环节中被宣告宕机,那它就已经被系统认定为宕机状态。选举算法保证系统在某些节点宕机的情况下依旧可以正常运行。
过于分布式锁的过期时间,可以参考下图:
分布式锁
为了避免上述问题,引入了fencing tokens的概念。简单来说就是锁服务为锁或者租约加上一个类似版本号的标识,只有持有最新可用版本号锁/租约的客户端才能够正常访问资源。
fencing tokens
在使用基于zookeeper的分布式锁服务的时候,可用选用zxid或者cversion来作为标识字段。
拜占庭将军问题
相比之前,拜占庭将军问题假设系统中的节点并非完全可信,而是可能存在恶意节点。关于pbft
系统模型
- 同步模型:对网络延迟,GC暂停,时间错误都很敏感。
- 部分同步模型:指在正常系统状况下,表现出同步系统的特点。当出现超出预期的网络延迟,GC暂停时,系统仍旧可以运行。
- 异步模型:对于执行结果可靠性要求不高。
网友评论