附件C-一致性模型
对一致性模型的描述主要从三个出发点进行考虑:
(1)响应前还是响应后,即在完成对所有副本数据集的同步前返回用户,还是完成同步后再给用户反馈。
(2)进行同步对象的多少,是对每次更新进行同步还是在多次更新后再同步。
(3)对更新顺序的维护,维护更新操作间不同的顺序会提供不同的一致性,当完全不考虑更新顺序,甚至更新的类型时,只提供最终数据的相互一致,则是最终一致性。
1.相互一致性
文献[70]对一致性的定义为,设定在数据上的约束。这种约束在不同应用中是不同的。违反这样的约束就称违反了数据的一致性。对于分布式中,复制技术最重要的约束就是副本节点数据的相互一致。请求对一个副本上的数据进行了修改,如果系统没有及时的将更新传播并应用到其它节点,路由到其它节点的请求就会获取到不一致的数据内容。维护节点间的相互一致性就称为了复制系统的关键。同时一致性模型也是数据同步的重要模型。
Yu和Vahdat 2002[13]为定义副本间的不一致性判断设计了三个相互独立的坐标轴:副本之间的数值偏差、副本之间新旧程度的偏差以及更新操作顺序的偏差。数据具有数值语义的应用程序可以按数值偏差来度量不一致性。例如,股票市场价格记录的复制。在这种应用中,应用程序可能会指定两个副本的偏差不能超过0.02美元,这就是绝对数值偏差。也可以指定相对数值偏差,表示两个副本之间的差别不能超过多少(0.5%)新旧偏差与副本最近一次更新有关。多某些应用程序来说,只要副本提供的旧数据不是太旧,它是可以容忍的。例如,天气预报通常要滞后一段时间(如几个小时)。在这种情况下,主服务器会定期地接收更新消息,但在一段时间内只给副本传送一次更新信息。在有些应用程序中,只要可以界定副本之间的差异,就允许不同的副本采用不同的更新顺序。
下面我们来谈一谈不同的一致性约束。不同的一致性约束是系统对外提供服务的不同特性,开发人员在使用一个存储系统前,最先应当了解该系统提供的一致性约束。
我们这里对于一致性约束的描述是以客户端-服务器为模型[52,73]。站在客户端的角度来分析客户端自己所做的更新在不同一致性约束下的不同表现结果。