数据一致性模型
一些分布式系统通过复制数据来提高系统的可靠性和容错性,并且将数据的不同的副本存放在不同的 机器上,由于维护数据副本的一致性代价很高,因此许多系统采用弱一致性来提高性能,一些不同的一致 性模型也相继被提出,主要有以下几种。
数据一致性模型
一些分布式系统通过复制数据来提高系统的可靠性和容错性,并且将数据的不同的副本存放在不同的 机器上,由于维护数据副本的一致性代价很高,因此许多系统采用弱一致性来提高性能,一些不同的一致 性模型也相继被提出,主要有以下几种。
强一致性:要求无论更新操作是在哪个数据副本上执行,之后所有的读操作都要能获得最新的数据。 对于单副本数据来说,读写操作是在同一数据上执行的,容易保证强一致性。对多副本数据来说,则需要 使用分布式事务协议(如两阶段提交或Paxos)。
弱一致性:在这种一致性下,用户读到某一操作对系统特定数据的更新需要一段时间,我们将这段时 间称为"不一致性窗口 "。
最终一致性:是弱一致性的一种特例,在这种一致性下系统保证用户最终能够读取到某操作对系统特 定数据的更新(读取操作之前没有该数据的其他更新操作)。此种情况下,如果没有发生失败,"不一致性 窗口〃的大小依赖于交互延迟、系统的负载,以及复制技术中replica的个数(这个可以理解为master/slave 模式中,slave的个数)。DNS系统可以说是在最终一致性方面最出名的系统,当更新一个域名的IP以后, 根据配置策略以及缓存控制策略的不同,最终所有的客户都会看到最新的值。
最终一致性模型根据其提供的不同保证可以划分为更多的模型。
因果一致性(Causal Consistency):假如有相互独立的A、B、C三个进程对数据进行操作。进程A 对某数据进行更新后并将该操作通知给B,那么B接下来的读操作能够读取到A更新的数据值。但是由于A 没有将该操作通知给C,那么系统将不保证C 一定能够读取到A更新的数据值。
读自写一致性(Read Your Own Writes Consistency):这个一致性是指用户更
数据一致性模型 来自淘豆网www.taodocs.com转载请标明出处.