最终一致-重新审视

| | 意见(

I wrote a本次发布的第一个版本on consistency models about a year ago,但我对它并不满意,因为它写得匆忙,话题很重要,可以得到更彻底的治疗。.ACM队列要求我修改它在杂志上的使用,我借此机会改进了这篇文章。这是新版本。.

最终的一致性-在世界范围内构建可靠的分布式系统需要在一致性和可用性之间进行权衡。.

At the foundation of Amazon's cloud computing are infrastructure services such as Amazon's S3 (Simple Storage Service),SimuldB,以及EC2(Elastic Compute Cloud),它为构建Internet规模的计算平台和各种应用程序提供了资源。The requirements placed on these infrastructure services are very strict;他们需要在安全领域取得高分,可伸缩性,可利用性,performance,成本效益,and they need to meet these requirements while serving millions of customers around the globe,continuously..

Under the covers these services are massive distributed systems that operate on a worldwide scale.这种规模带来了额外的挑战,因为当一个系统处理万亿和数万亿的请求时,events that normally have a low probability of occurrence are now guaranteed to happen and need to be accounted for up front in the design and architecture of the system.Given the worldwide scope of these systems,we use replication techniques ubiquitously to guarantee consistent performance and high availability.虽然复制使我们更接近我们的目标,它不能以完全透明的方式实现它们;under a number of conditions the customers of these services will be confronted with the consequences of using replication techniques inside the services..

这种方式的一种表现方式是提供的数据一致性类型,特别是当底层分布式系统为数据复制提供最终一致性模型时。在亚马逊设计这些大型系统时,我们使用一组与大规模数据复制相关的指导原则和抽象,并关注高可用性和数据一致性之间的权衡。In this article I present some of the relevant background that has informed our approach to delivering reliable distributed systems that need to operate on a global scale.安earlier version of this text2007年12月出现在BeWay88的博客上,在读者的帮助下得到了极大的改善。.

历史透视

在理想世界中,只有一个一致性模型:当更新完成时,所有观察者都会看到该更新。The first time this surfaced as difficult to achieve was in the betway88体育官网 systems of the late '70s.最好的“期片关于这个话题是Notes on Distributed betway88体育官网s"byBruce Lindsay et al..它列出了betway88体育场复制的基本原则,并讨论了一些实现一致性的技术。这些技术中的许多试图达到分布透明性,即对于系统的用户来说,似乎只有一个系统而不是多个协作系统。在这段时间内的许多系统采取的办法是,破坏整个系统比破坏透明性要好得多。.

在90年代中期,随着大型互联网系统的兴起,这些做法被重新审视。At that time people began to consider the idea that availability was perhaps the most important property of these systems,但他们正在努力应对它应该被抵消的交易。.Eric Brewer,加利福尼亚大学系统教授伯克利and at that time head of Inktomi,带来了不同的权衡在一起主题演讲2000(分布式计算原理)会议。.他提出了盖帽定理,说明共享数据系统的三个属性的数据一致性,系统可用性and tolerance to network partition—only two can be achieved at any given time.A more formal confirmation can be found in a 2002 paper bySeth Gilbert和Nancy Lynch..4

A system that is not tolerant to network partitions can achieve data consistency and availability,并且经常通过使用事务协议来实现。为了实现这一目标,客户端和存储系统必须是同一环境的一部分;在某些情况下,它们作为一个整体失败了。因此,clients cannot observe partitions.一个重要的观察是,在更大的分布式尺度系统中,network partitions are a given;因此,一致性和可用性不能同时实现。这意味着对于丢弃什么有两种选择:放松一致性将允许系统在可分区条件下保持高可用性,whereas making consistency a priority means that under certain conditions the system will not be available..

这两个选项都需要客户端SlieStAdStEndoStIsApple应用程序Apple Sead ER知道系统所提供的内容。如果系统强调一致性,the 必威体育精装版app官网er has to deal with the fact that the system may not be available to take,for example,一篇文章。如果由于系统不可用而写入失败,然后,将要处理要写入的数据。如果系统强调可用性,它可能总是接受写,但是在某些条件下,读不会反映最近完成的写入的结果。然后,该应用程序必须决定客户端是否一直需要访问绝对最新的更新。有一系列应用程序可以处理稍陈旧的数据,在这种模式下,他们的服务很好。.

原则上定义了事务系统的一致性属性。ACIDproperties (atomicity,一致性,隔离,耐久性是一种不同的一致性保证。在酸中,consistency relates to the guarantee that when a transaction is finished the betway88体育官网 is in a consistent state;for example,当从一个账户转移到另一个账户时,两个账户中的总金额不应该改变。在酸碱体系中,this kind of consistency is often the responsibility of the 必威体育精装版app官网er writing the transaction but can be assisted by the betway88体育官网 managing integrity constraints..

客户机和服务器一致性

有两种看待一致性的方法。一个是从ToeStRePosialStudioApple Excel E/Client观点:他们如何观察数据更新。第二种方法来自服务器端:更新如何流经系统,以及系统能够对更新提供什么保证。.

Client-side Consistency

客户端具有这些组件:

  • 存储系统。.现在我们把它当作一个黑匣子,but one should assume that under the covers it is something of large scale and highly distributed,and that it is built to guarantee durability and availability..
  • 过程A.这是一个从存储系统中写入和读取的过程。.
  • Processes B and C..These two processes are independent of process A and write to and read from the storage system.It is irrelevant whether these are really processes or threads within the same process;重要的是,它们是独立的,需要进行交流以共享信息。.
    客户端一致性与如何以及何时观察者(在这种情况下是进程A)有关。B或C)查看存储系统中的数据对象的更新。In the following examples illustrating the different types of consistency,过程A已经对数据对象进行了更新:
  • 强一致性.更新完成后,any subsequent access (by A,Bor C) will return the updated value..
  • Weak consistency..The system does not guarantee that subsequent accesses will return the updated value.A number of conditions need to be met before the value will be returned.从更新到保证任何观察者将始终看到更新值之间的时间段称为不一致性时间窗口..
  • Eventual consistency..这是弱一致性的一种特殊形式;the storage system guarantees that if no new updates are made to the object,最后,所有访问将返回最后更新的值。如果没有发生故障,the maximum size of the inconsistency window can be determined based on factors such as communication delays,系统上的负载,以及复制方案中涉及的副本数量。实现最终一致性的最流行的系统是DNS(域名系统)。根据配置的模式并结合时间控制的高速缓存来分配名称的更新;最终,所有客户端将看到更新。.

最终一致性模型具有许多重要的变化:

  • 因果一致性.If process A has communicated to process B that it has updated a data item,进程B的后续访问将返回更新的值,保证写入可以取代较早的写入。过程C对过程A没有因果关系的访问服从正常的最终一致性规则。.
  • 阅读你的写作一致性。.这是过程A的一个重要模型,在更新了数据项之后,总是访问更新的值,并且永远不会看到旧的值。这是因果一致性模型的特例。.
  • Session consistency..这是前一个模型的实际版本,其中进程在会话上下文中访问存储系统。As long as the session exists,系统保证读取您的写入一致性。If the session terminates because of a certain failure scenario,a new session needs to be created and the guarantees do not overlap the sessions..
  • 单调读取一致性。.If a process has seen a particular value for the object,任何后续访问都不会返回任何先前的值。.
  • 单调写一致性。.在这种情况下,系统保证通过相同的进程序列化写入。众所周知,不保证这种一致性的系统很难编程。.

这些属性可以组合在一起。例如,one can get monotonic reads combined with session-level consistency.从实用的角度来看,这两个属性(单调读和读写操作)在最终一致性系统中是最理想的,但并不总是要求。这两个属性使得更简单的应用程序可以构建应用程序,同时允许存储系统放松一致性并提供高可用性。.

正如你从这些变化中看到的,相当多的不同场景是可能的。它取决于特定的应用程序,不管它能否处理它的后果。.

最终的一致性不是极端分布式系统的一些神秘属性。许多提供主备份可靠性的现代RDBMS(关系型betway88体育场管理系统)在同步和异步模式下实现它们的复制技术。在同步模式下,复制更新是事务的一部分。在异步模式下,更新以延迟的方式到达备份,通常通过日志传送。In the latter mode if the primary fails before the logs are shipped,阅读从推广备份将产生旧的,inconsistent values.Also to support better scalable read performance,RDBMS已经开始提供从备份读取的能力,which is a classical case of providing eventual consistency guarantees in which the inconsistency windows depend on the periodicity of the log shipping..

服务器端一致性

在服务器端,我们需要更深入地了解更新是如何流经系统的,以了解是什么驱动了使用系统的应用程序开发者可以体验的不同模式。让我们在开始之前建立一些定义:

N = the number of nodes that store replicas of the data

w =在更新完成之前需要确认更新的副本的数量

r=通过读取操作访问数据对象时所接触的副本的数量

如果W+R> n,然后,写集和读集总是重叠,并且可以保证强一致性。在主备份RDBMS场景中,它实现同步复制,n=2,W=2,r=1。无论客户从哪个副本读取,它总是会得到一致的答案。In asynchronous replication with reading from the backup enabled,n=2,W=1,r=1。在这种情况下,r+w=n,不能保证一致性。.

这些配置的问题,这是基本的法定人数协议,当系统由于故障而不能写入W节点时,the write operation has to fail,marking the unavailability of the system.With N=3 and W=3 and only two nodes available,系统将不得不写入失败。.

In distributed-storage systems that need to provide high performance and high availability,复制品的数量一般高于两个。仅关注容错的系统通常使用n=3(W=2和R=2配置)。需要非常高的读取负载的系统经常复制它们的数据超出容错所需的;N可以是几十个甚至几百个节点,R配置为1,使得单个读取将返回结果。与一致性有关的系统被设置为W= N用于更新,这可能会降低写入成功的概率。对于这些关注容错但不一致的系统,通常的配置是使用W=1运行以获得更新的最小持久性,然后依靠懒惰(流行)技术来更新其他副本。.

如何配置N,W,R取决于一般情况是什么,哪些性能路径需要优化。在R=1和n=W时,我们对读取情况进行优化,and in W=1 and R=N we optimize for a very fast write.当然,在后一种情况下,durability is not guaranteed in the presence of failures,and if W < (N+1)/2,当写入集不重叠时,存在冲突写入的可能性。.

当W+R <n时出现弱/最终一致性,这意味着有可能读写集合不会重叠。如果这是故意的配置而不是基于失败的情况,then it hardly makes sense to set R to anything but 1.这在两个非常常见的情况下发生:第一个是先前提到的读取缩放的大规模复制;第二个问题是数据访问更加复杂。In a simple key-value model it is easy to compare versions to determine the latest value written to the system,but in systems that return sets of objects it is more difficult to determine what the correct latest set should be.在大多数这些系统中,写集小于副本集,一种机制是以延迟的方式将更新应用到副本集中的其余节点。The period until all replicas have been updated is the inconsistency window discussed before.如果W+R<n,然后,系统容易受到来自尚未接收更新的节点的读取。.

是否读过你的文章,会话,单调的一致性可以实现一般取决于“粘性of clients to the server that executes the distributed protocol for them.如果每次都是同一个服务器,然后相对容易保证阅读你的写作和单调的阅读。这使得管理负载平衡和容错稍微困难一些。但这是一个简单的解决方案。Using sessions,which are sticky,使此显式,并提供客户端可以推理的曝光级别。.

Sometimes the client implements read-your-writes and monotonic reads.通过在写入上添加版本,客户端丢弃读取上次看到的版本之前的值的值。.

当系统中的某些节点不能到达其他节点时,就会发生分区。但是这两组都是由客户端组访问的。If you use a classical majority quorum approach,then the partition that has W nodes of the replica set can continue to take updates while the other partition becomes unavailable.对于读集也是如此。Given that these two sets overlap,根据定义,少数集变得不可用。分区不会频繁发生,但它们确实发生在数据中心之间,以及内部数据中心。.

在某些应用中,任何分区的不可用性都是不可接受的,重要的是,能够到达该分区的客户取得进展。在这种情况下,双方分配一组新的存储节点来接收数据,and a merge operation is executed when the partition heals.例如,在亚马逊中,购物车使用这样的写总是系统;在分区的情况下,即使原始的购物车生活在其他分区上,顾客也可以继续将商品放入购物车中。CART应用协助存储系统在分区已经愈合后合并车。.

亚马逊发电机

在应用架构的显式控制下带来所有这些属性的系统是亚马逊发电机,a key-value storage system that is used internally in many services that make up the Amazon e-commerce platform,as well as Amazon's Web Services.One of the design goals of Dynamo is to allow the application service owner who creates an instance of the Dynamo storage system—which commonly spans multiple data centers—to make the trade-offs between consistency,durability,可利用性,以及在一定成本点的性能。.3

Summary

Data inconsistency in large-scale reliable distributed systems has to be tolerated for two reasons: improving read and write performance under highly concurrent conditions;以及处理分区情况,其中多数模型将导致系统的一部分不可用,即使节点正在启动和运行。.

不一致性是否可接受取决于客户端应用程序。在所有情况下,应用程序开发者需要意识到存储系统提供了一致性保证,并且当应用程序开发时需要考虑一致性保证。对最终一致性模型有许多实际的改进,例如会话级一致性和单调读取,为更好的工具提供了更好的工具。Many times the application is capable of handling the eventual consistency guarantees of the storage system without any problem.一个特定的流行案例是一个网站,我们可以有用户感知一致性的概念。在此场景中,不一致性窗口需要小于客户为下一页加载返回的预期时间。This allows for updates to propagate through the system before the next read is expected..

The goal of this article is to raise awareness about the complexity of engineering systems that need to operate at a global scale and that require careful tuning to ensure that they can deliver the durability,可利用性,and performance that their applications require.系统设计器拥有的工具之一是一致性窗口的长度,在此期间,系统的客户端可能暴露于大型系统工程的实际情况。.

References
  1. Brewer,e.a.2000。.面向鲁棒分布式系统(摘要).InProceedings of the 19th Annual ACM Symposium on Principles of Distributed Computing(七月16-19日,Portland,俄勒冈):7
  2. 和Bruce Lindsay的谈话.2004。ACM队列2(8):22-33。.
  3. DeCandia,G.,Hastorun,d.,Jampani,M,KakulapatiG.,Lakshman,a.,Pilchina.,西瓦苏布拉缅语S.,VosshallP.,沃格尔斯W2007..Dynamo: Amazon's highly available key-value store.In Proceedings of the 21st ACMSymposium on Operating Systems Principles(史蒂文森,华盛顿,October)..
  4. Gilbert,S.,LynchN.2002..Brewer猜想与一致性的可行性available,区分服务的Web服务.ACM SigACT新闻33(2)。.
  5. 琳赛B.G.,Selinger,P.G.,et al.1980。分布式BETWAY 88标准的注记In分布式数据库预计起飞时间。我.W德拉芬和F.Poole247—244。剑桥:剑桥大学出版社。也可作为IBM研究报告RJ2517,圣若泽加利福尼亚(1979年7月)。.

Comments

blog comments powered byDisqus