分布式系统中最重要问题是数据的复制,其问题之一是保持副本的一致性。
好处:通过应用复制和缓存来缓解可伸缩性问题
坏处:要让副本保持一致,一般需要全局同步。代价比好处大
结论:方宽一致性约束。代价:副本不一定实时都一样。
一致性模型
一致性模型本质是进程与数据存储的约定
1.以数据为中心的一致性模型
1.1持续的一致性
不一致性的度量:
- 副本之间的数值偏差
- 副本之间的陈旧度偏差
- 更新操作排序的偏差
1.Sequential consistency
定义:所有进程的操作都是按照某种顺序执行的
2.Causal consistency
定义:所有进程都必须以相同的顺序看到可能存在因果关系的写操作。不同的进程可以以不同的顺序看到并发操作
其中(a)是不符合因果一致性的
1.2 顺序一致性
以用户为中心的一致性
- 读后读
- 写后写
- 写后读 确保单个用户在任何给定时间从同一源读取和写入。
- 读后写
1.Monotonic reads 单调读---读后读
定义:如果一个进程读取一个数据项x的值,那么该进程对x的任何后续读取操作都将总是返回相同或更新的值
2.Monotonic wirtes 单调写-写后写
定义:进程对数据项X的写操作是在同一进程对x的任何连续写操作之前完成的
3.read your writes
定义:进程对数据项x的写操作,总是可以通过同一进程对x的连续读操作来看到