33、分布式系统中的一致性与共识

分布式系统中的一致性与共识

一、分布式系统的容错与抽象

分布式系统中会出现各种问题,如数据包丢失、重排、重复、延迟,时钟不准确,节点暂停或崩溃等。简单处理这些故障的方法是让整个服务失败并向用户显示错误信息,但这往往不可接受。因此,我们需要找到容忍故障的方法,让服务在部分组件出现故障时仍能正常运行。

构建容错系统的最佳方式是找到一些具有有用保证的通用抽象,实现一次后让应用程序依赖这些保证。这类似于事务,通过使用事务,应用程序可以忽略崩溃、并发访问和存储设备不可靠等问题。

在分布式系统中,共识是一个重要的抽象,即让所有节点就某件事达成一致。尽管网络故障和进程失败的情况下,可靠地达成共识是一个棘手的问题,但一旦实现了共识,应用程序可以将其用于各种目的,例如在单领导者复制的数据库中选举新的领导者。

二、一致性保证

(一)最终一致性

在复制数据库中,由于写入请求到达不同节点的时间不同,同一时刻不同节点可能会有不同的数据,这种不一致性在各种复制方法(单领导者、多领导者或无领导者复制)中都会出现。

大多数复制数据库至少提供最终一致性,即停止写入数据库并等待一段时间后,所有读取请求最终会返回相同的值。从本质上讲,这种不一致是暂时的,最终会自行解决。不过,最终一致性是一个非常弱的保证,它没有说明副本何时会收敛。在收敛之前,读取可能返回任何值或无值。

最终一致性给应用程序开发者带来了困难,因为它与单线程程序中变量的行为有很大不同。开发者需要时刻注意其局限性,因为相关的错误往往很微妙,在系统出现故障或高并发时才会显现。

(二)更强的一致性模型

为了应对

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值