AWS入门指南之三:一致性问题

本文介绍了AWS分布式系统中的一致性问题,特别是S3和DynamoDB的一致性模型。S3在创建新对象时提供read-after-write一致性,覆盖或删除时为最终一致性。DynamoDB默认采用最终一致性写,读操作可选择强一致性或最终一致性,强一致性可能影响可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近比较忙,很少来更新博客。这一次我们简单聊一聊一致性的问题。对于一个分布式系统来讲,一致性问题是一个非常重要,非常基础的问题。对于分布式系统的框架设计者,可以说是一个需要考虑的基本问题。在分布式系统中一个基础理论是CAP,具体说就是一致性(Consistency),可用性(Availability),分区容错(Partition tolerance)。一个个具体解释一下:

一致性:每一个读操作可以接收到最新的数据或者是错误

可用性:每一个请求可以接收到一个没有错误的相应,但是不保证该相应包含最后写的数据

分区容错:在网络的节点间发生任意数量的错误,比如延迟或者丢包,系统仍然可以正常工作。

从理论上讲,CAP是不可能完全实现的,为了拥有其中两个特性必须要损害第三个性能。对于分布式系统一般认为分区容错是一个必须支持的特性,原因在于分布式系统必然基于网络构建,而网络上的传输错误是不可避免的。在这里多说一句,partition的概念在AWS里很多服务中都会涉及,是一个非常普遍的需要了解的概念。以后再谈到具体的服务时再讨论。在我们只能选择两个而放弃一个的情况下,可用性和一致性只能二选一了。我们如果仔细看AWS的服务,会发现有些服务是允许用户选择那个特性优先的,比如DynamoDB,也有很多系统是不可选择的。当不可选择时,也就是说系统已经默认了哪个优先,大多数情况下是可用性优先,也有些服务是一致性优先。

当可用性优先时,又会涉及到另一个话题,这个时候什么样的系统行为是可以接受的?对于AWS来说这涉及到幂等(idempotent)和最终一致性(eventua

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值