20、消息传递与Web钩子:构建高效分布式系统

消息传递与Web钩子:构建高效分布式系统

1. 最终一致性系统设计

最终一致性是一种弱一致性形式,即如果不对对象进行更新,最终对该对象的所有访问都将返回相同的值。设计支持最终一致性的系统,对程序员来说是一项挑战,因为这类系统不支持事务,也缺乏锁定值的能力,这使得实现唯一性约束和避免写入冲突变得困难。

1.1 字段值检查

在异步写入系统中,写入冲突是一个常见问题。以书店库存管理为例,当一个客户订购一本书时,库存数量应减1。在常规数据库系统中,这可以通过事务来完成,即读取库存数量并更新为减1后的值。但在SR/AW系统中,可能会出现写入冲突。

为解决这个问题,可以采用以下两种方法:
- 写入前值检查 :将字段的前一个值和新值一起写入写入交换区。当写入者收到消息时,在常规事务中检查前一个值。如果出现错误,可以通知客户或使用当前数据重试操作。
- 增量或减量操作符 :在写入中包含增量或减量操作符。消费者指定要增加或减少的数量,写入者在自己的系统内的事务中执行该操作。

1.2 值唯一性

值唯一性在最终一致性系统中也难以实现,常见的用例包括用户名或用户资料路径。在SR/AW系统中,可以采用以下两种策略来实现名称唯一性:
- 乐观锁定 :当用户请求用户名或其他唯一值时,应用程序先同步请求检查该名称是否可用。如果可用,将写入发布到消息系统。写入者在写入时再次验证唯一性。如果出现问题,通知用户选择新名称。
- 锁定服务 :创建一个基于同步HTT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值