什么是一致性模型?
一致性模型(consistency model)提供不同的语义和保证。你可以将一致性模型看作是参与者之间的契约:每个副本要做什么才能满足所需的主义,以及用户在发生读写操作时可以期望得到什么结果。
一致性模型描述了在存在多份数据和并发访问的情况下可能出现的返回结果。
我们可以从状态的角度考虑一致性,描述哪些状态不变式是可以接受的,并建立不同副本上的数据拷贝之间所准许的关系。或者,我们也可以考虑操作一致性,它提供一个数据存储的外部视图,描述了操作并约束它们发生的顺序。
如果没有全局时钟,很难给分布式操作一个精确且确定的顺序。这就像是数据的狭义相对论:每个参与者对状态和时间都有自己的视角。
从理论上讲,每当我们想要改变系统状态时,可以先获取一个系统范围的锁,但这是非常不实际的。相反,我们使用一组规则、定义和约束来限制可能的历史和结果的数量。
我们不仅要兼顾一致性和可用性,还要从同步代价的方面考虑一致性。同步代价可能包括时延、执行额外操作所花费的CPU周期、用于持久化恢复信息的磁盘I/O、等待时间、网络I/O,以及一切可以通过避免同步而节省的代价。
评论
有用 2
一致性模型(consistency model)提供不同的语义和保证。你可以将一致性模型看作是参与者之间的契约:每个副本要做什么才能满足所需的主义,以及用户在发生读写操作时可以期望得到什么结果。
一致性模型描述了在存在多份数据和并发访问的情况下可能出现的返回结果。
我们可以从状态的角度考虑一致性,描述哪些状态不变式是可以接受的,并建立不同副本上的数据拷贝之间所准许的关系。或者,我们也可以考虑操作一致性,它提供一个数据存储的外部视图,描述了操作并约束它们发生的顺序。
如果没有全局时钟,很难给分布式操作一个精确且确定的顺序。这就像是数据的狭义相对论:每个参与者对状态和时间都有自己的视角。
从理论上讲,每当我们想要改变系统状态时,可以先获取一个系统范围的锁,但这是非常不实际的。相反,我们使用一组规则、定义和约束来限制可能的历史和结果的数量。
我们不仅要兼顾一致性和可用性,还要从同步代价的方面考虑一致性。同步代价可能包括时延、执行额外操作所花费的CPU周期、用于持久化恢复信息的磁盘I/O、等待时间、网络I/O,以及一切可以通过避免同步而节省的代价。
评论
有用 1一致性模型(consistency model)提供不同的语义和保证。你可以将一致性模型看作是参与者之间的契约:每个副本要做什么才能满足所需的主义,以及用户在发生读写操作时可以期望得到什么结果。
一致性模型描述了在存在多份数据和并发访问的情况下可能出现的返回结果。
我们可以从状态的角度考虑一致性,描述哪些状态不变式是可以接受的,并建立不同副本上的数据拷贝之间所准许的关系。或者,我们也可以考虑操作一致性,它提供一个数据存储的外部视图,描述了操作并约束它们发生的顺序。
如果没有全局时钟,很难给分布式操作一个精确且确定的顺序。这就像是数据的狭义相对论:每个参与者对状态和时间都有自己的视角。
从理论上讲,每当我们想要改变系统状态时,可以先获取一个系统范围的锁,但这是非常不实际的。相反,我们使用一组规则、定义和约束来限制可能的历史和结果的数量。
我们不仅要兼顾一致性和可用性,还要从同步代价的方面考虑一致性。同步代价可能包括时延、执行额外操作所花费的CPU周期、用于持久化恢复信息的磁盘I/O、等待时间、网络I/O,以及一切可以通过避免同步而节省的代价。
评论
有用 3
墨值悬赏

