CN110673932B - 具有多项目事务支持的多数据库日志 - Google Patents

具有多项目事务支持的多数据库日志 Download PDF

Info

Publication number
CN110673932B
CN110673932B CN201910910400.9A CN201910910400A CN110673932B CN 110673932 B CN110673932 B CN 110673932B CN 201910910400 A CN201910910400 A CN 201910910400A CN 110673932 B CN110673932 B CN 110673932B
Authority
CN
China
Prior art keywords
node
dag
configuration
state transition
transaction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910910400.9A
Other languages
English (en)
Other versions
CN110673932A (zh
Inventor
A·H·沃姆伦
J·A·加布里尔森
C·R·J·德卡
C·H·侯
M·B·迪尔多芙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/316,622 external-priority patent/US9613078B2/en
Priority claimed from US14/316,619 external-priority patent/US9619278B2/en
Priority claimed from US14/316,674 external-priority patent/US9619544B2/en
Priority claimed from US14/316,680 external-priority patent/US9529882B2/en
Priority claimed from US14/316,630 external-priority patent/US10282228B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Priority to CN201910910400.9A priority Critical patent/CN110673932B/zh
Publication of CN110673932A publication Critical patent/CN110673932A/zh
Application granted granted Critical
Publication of CN110673932B publication Critical patent/CN110673932B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2322Optimistic concurrency control using timestamps

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Abstract

本公开涉及具有多项目事务支持的多数据库日志。在日志记录服务处,接收由客户端请求的事务的表示。所述事务包含针对第一数据存储区处的数据对象的至少第一写入操作。至少部分基于所述表示的内容和所述日志记录服务的持久性日志的内容,进行所述请求事务将被提交的确定。将对应于所述第一写入操作的日志记录插入到所述持久性日志中。在已将所述记录插入到所述持久性日志中之后,将所述第一写入传播到所述第一数据存储区。

Description

具有多项目事务支持的多数据库日志
本申请是申请日为2015年6月25日的、名称为“具有多项目事务支持的多数据库日志”的发明专利申请No.201580034518.X的分案申请。
技术领域
本公开涉及数据库领域,更具体地,涉及具有多项目事务支持的多数据库日志。
背景技术
近年来,越来越多的计算应用被实施在分布式环境中。一种给定的分布式应用可例如利用散布在提供商网络的若干数据中心中的众多物理和/或虚拟化服务器,且可服务许多不同国家的客户。随着给定应用中所涉及的服务器数目增加,和/或随着所述应用的网络的复杂性增加,不可避免地更高频率地遇到各种类型的故障事件(例如,处理程序或服务器的明显或真实故障、网络消息延时的实质延迟、或服务器对之间的连接性丢失)。因此分布式应用的设计者们面临以下问题:在响应于应用配置状态的变化的同时尝试维持高水平的应用性能(例如,用于应用请求的高通量和低响应时间)。
用于管理状态信息的一些传统技术可涉及锁定所述状态信息来以一致的方式实施应用状态变化。不幸地,用于应用状态和/或数据的锁定机构可能随着所述应用的大小和复杂性增加而自身经常变成性能瓶颈。其他技术可避免锁定,但可必须暂停正常操作以在应用的部件当中传播改变的状态信息。然而,此类“停止一切”时段可为有问题的,尤其对于用于散布在全世界不同时区中的几百个或几千个客户所使用的任务关键型工作负载的延时敏感应用来说。
发明内容
提供了一种系统,该系统包括一个或多个计算装置。所述一个或多个计算装置被配置为:把与请求的状态转变对应的状态转变消息从有向无环图(DAG)的第一非提交者节点传播到该DAG的第一提交者节点,其中所述状态转变消息包括指示所请求的状态转变相对于其它请求的状态转变被批准的次序的序号;以及响应于由DAG配置管理器确定特定节点要被添加到所述DAG,开始从DAG配置管理器向所述DAG的一个或多个其它节点传播指示向所述DAG添加所述特定节点的配置德尔塔消息,并且不指示所述一个或多个其它节点暂停处理状态转变消息。
附图说明
图1示出根据至少一些实施方案的示例性系统环境,其中建立复制节点的动态DAG(有向非循环图)用于管理应用状态变化。
图2a-2h共同示出根据至少一些实施方案的操作的示例性顺序,所述操作可在复制DAG处响应于检测到DAG节点中的一者可能已失效来执行。
图3示出根据至少一些实施方案的可在动态复制DAG处产生的应用状态记录和DAG配置德尔塔消息的示例性部件。
图4示出根据至少一些实施方案的其成员节点分布在提供商网络的多个可用性容器中的示例性复制DAG。
图5示出根据至少一些实施方案的示例性配置,其中多个复制DAG的节点可按多租户方式而实施在单个主机处。
图6是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可响应于接收到状态转变请求而执行在复制DAG的接受器节点处。
图7是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可响应于接收到经批准状态转变消息而执行在复制DAG的中间节点处。
图8是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可响应于接收到经批准状态转变消息而执行在复制DAG的提交者节点处。
图9是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可执行在复制DAG的配置管理器处。
图10是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可响应于接收到来自配置管理器的配置德尔塔消息而执行在复制DAG的成员节点处。
图11a-11h共同示出根据至少一些实施方案的操作的示例性顺序,所述操作可在协调暂停程序期间在复制DAG处执行。
图12是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可在协调暂停程序期间执行在诸如复制DAG的状态复制群组的提交者节点处。
图13是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可在协调暂停程序期间执行在诸如复制DAG的状态复制群组的非提交者节点处。
图14是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可在协调暂停程序期间执行在诸如复制DAG的状态复制群组的配置管理器处。
图15示出根据至少一些实施方案的示例性系统环境,所述环境包括支持可包含对多个数据存储区的写入的事务的持久性改变日志。
图16示出根据至少一些实施方案的使用复制DAG的持久性改变日志的示例性实施。
图17示出根据至少一些实施方案的可由日志记录服务的客户端递交的事务请求描述符的示例性分量元素。
图18示出根据至少一些实施方案的在基于日志的事务管理器处的读取写入冲突检测的示例。
图19是示出根据至少一些实施方案的可在日志记录服务处执行的控制平面操作的多个方面的流程图。
图20是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可响应于从客户端接收的事务请求而执行在日志记录服务处。
图21示出根据至少一些实施方案的可用以实现各自特殊情况一致性目标的事务请求描述符的示例。
图22示出根据至少一些实施方案的强制执行与在基于日志的事务管理器处接收的事务请求相关联的重复删除约束的示例。
图23示出根据至少一些实施方案的强制执行与在基于日志的事务管理器处接收的事务请求相关联的顺序约束的示例。
图24示出根据至少一些实施方案的包括多个逻辑约束描述符的事务请求描述符的示例。
图25是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可响应于指示一个或多个逻辑约束的事务请求而执行在日志记录服务处。
图26是示出可用于至少一些实施方案中的示例性计算装置的框图。
虽然在本文中通过列举若干实施方案和说明性附图的方式描述实施方案,但是本领域的技术人员将认识到,实施方案并不限于所描述的实施方案或附图。应理解,附图和对其的详细描述并非意图将实施方案限于所公开的特定形式,而是相反地,其意图在于涵盖落入由所附权利要求书所界定的精神和范围内的所有修改、等同物以及替代方案。本文中使用的标题仅用于组织目的,并且并不意在用于限制说明书或权利要求书的范围。如贯穿本申请所使用的,词语“可”是以允许意义(即,意味着有可能)而不是强制意义(即,意味着必须)使用的。类似地,词语“包含”(include/including/includes)意味着“包含但不限于”。
具体实施方式
本文描述用于使用组织为图表的复制节点来管理分布式应用状态并部署此类图表以实施可用于事务管理的日志记录服务的方法和设备的各种实施方案。根据一些实施方案,可使用布置在有向非循环图(DAG)中的多个复制节点来实施用于构建容错分布式应用的复制状态机。在一些实施中,特定复制DAG可包含一个或多个接受器节点、一个或多个提交者节点、零个或多个中间节点(每一节点沿着包括从接受器节点引向提交者节点的DAG边缘的复制路径而定位),以及被配置成在节点故障情况下快速地接管其他类型节点中的一者的责任的零个或多个备用节点。复制DAG的接受器节点、中间节点和备用节点可在本文共同地称作“非提交者”节点。“接受器”、“中间”、“提交者”和“备用”可统称为DAG节点可假定的角色集。在一些实施方案中,接受器节点还可称作DAG的“头部”节点,且提交者节点还可称作“尾部”节点。
大体来说,在至少一些实施方案中,特定复制DAG的每一节点可负责复制至少特定应用的状态信息,例如呈写入到本地磁盘或其他类似存储装置的状态转变记录的形式。应用状态信息可沿着从DAG的接受器节点到提交者节点的边缘集而传播,在本文称作复制路径或提交路径。在DAG内传播的每一状态转变消息可包含各自序号或逻辑时间戳,其指示(例如,在接受器节点处)处理对应状态转变请求的次序。可使用不同实施方案中的多种技术中的任一者来实施序号,例如可使用通过接受器节点维持的简单N位计数器,或可使用DAG的管理部件(例如DAG的配置管理器)所产生的单调递增的逻辑时间戳值(不必与日历钟相关)。当特定状态转变记录到达提交者节点时,例如当已沿着复制路径保存足够数目的状态转变记录的副本后,所述转变可显式或隐式地提交。在一些实施方案中,可将在某一时间点的应用的状态确定为高达选定序号的所有所提交状态转变的结果的逻辑累积。配置管理器可负责通过异步地传播配置德尔塔消息到DAG节点(如下所述)来管理DAG配置的变化(例如,当节点由于故障而离开DAG时,或当加入/重新加入DAG时)。在一些实施方案中,每一复制节点可实施各自的确定性有限状态机,且配置管理器可实施另一确定性有限状态机。在各种实施方案中,用于管理DAG配置改变的协议可经设计以最大化DAG的可用性或“活性”。例如,在至少一些实施方案中DAG节点可能无需使其对DAG的配置的视图同步,因此,用于应用状态转变处理的协议可正确地工作,即使沿着复制路径的一些节点具有与其他节点不同的当前DAG配置的视图。因此,情况可能是,在一个简单示例性情形下,DAG的一个节点A在以下假设下继续执行其状态转变处理责任:DAG由按此次序的节点A、B、C和D组成(即,具有复制路径A到B到C到D),而另一节点D已由于节点C已离开DAG的配置德尔塔消息而被通知,且已因此将DAG的D的视图更新为包括改变的路径A到B到D。在至少一些实施方案中,配置管理器可无需请求DAG节点暂停状态转变节点的处理,不管所述节点关于当前DAG配置的潜在不同视图。因此,在使用本文所述种类的复制DAG时,可能不需要可在一些状态复制技术中所需的“停止一切”配置同步时段的类型。
在大多数操作条件下,用于传播DAG配置改变信息的技术可最终在各个成员节点处产生DAG的配置的聚合一致视图,同时最小化或消除与节点故障/退出、节点加入或节点角色变化相关联的任何停机时间。状态管理协议的正确性的正式数学证明可用于至少一些实施方案。在至少一些实施方案中,复制DAG的协议可在处理假阳性故障检测时尤其有效。例如,在上述示例中,节点D可被配置管理器通知节点C已失效,即使节点C实际上尚未失效。因此,状态转变仍可在假阳性故障检测之后、在指示C的退出的配置德尔塔消息在A、B和D处被接收之前的时间间隔中由C(且由其邻居B和D)正确地处理一段时间,从而使得其状态被复制的应用不管所述假阳性故障检测而继续前进。在最终被通知其已从DAG移除后,C可向配置管理器指示,其实际上可用于服务,且可被允许重新加入DAG(例如,作为备用节点或在沿着经修改的复制路径的某一其他位置)。
在一些实施方案中,接受器节点可负责:接收来自复制DAG的客户端的应用状态转变请求;确定特定请求的转变是否应被接受最终提交;存储所接受的状态转变记录的本地副本;以及沿着DAG的复制路径朝向提交者节点将所接受的状态转变记录传输到邻居节点。取决于用例,在一些实施方案中状态转变记录可包含写入有效负载:例如,如果应用状态包括数据库的内容,那么状态转变记录可包含在对应于状态转变的事务期间写入的字节。在至少一些实施方案中,接受器节点还可负责确定或产生用于所接受状态转变的序号。中间节点可负责存储所接受状态转变记录的本地副本,且沿着通往提交者节点的路径将指示所接受状态转变的消息传输/转发到下一节点。提交者节点可将状态转变记录的其自身副本存储在本地存储器上,例如并指示记录已提交。指示对应的状态转变已被提交的记录可在本文称作“提交记录”,而指示对应的状态转变已被接受但未必被提交的记录可称作“接受记录”。在一些实施方案中,且取决于应用的需要,提交者节点可起始提交响应的传输(例如,经由接受器节点)到请求状态转变的客户端。在至少一个实施方案中,提交者节点可通知沿着复制路径的一些或所有节点所述状态转变已被提交。在一些实施方案中,当在DAG节点处接收到提交的指示时,用于现在提交的状态转变的接受记录可由对应的提交记录替代,或经修改而使得其现在表示提交记录。在其他实施方案中,给定DAG节点可存储用于同一状态转变的例如具有各自的序号的接受记录和提交记录两者。在一些实施中,单独的提交记录集和接受记录集可存储在本地存储器中各个DAG节点处,而在其他实施中,仅一个类型的记录(接受或提交)可一次针对给定状态转变存储在给定DAG节点处。
在一些实施方案中,可将配置管理器指定为DAG的配置信息的权威来源,负责接受DAG配置的变化并将所述变化传播到DAG节点。在至少一些实施方案中,配置管理器可自身经设计成灵活应对故障,例如作为经由共识而共同地批准DAG配置改变(例如节点的移除或添加)并在多个配置管理器存储装置处复制所述DAG配置的节点容错集群。如名称“配置德尔塔”所表明,由配置管理器发送到DAG节点的消息可仅包含特定变化的指示(例如,由加入DAG或离开DAG的节点所引起的变化,或DAG的现有节点的角色/位置变化),且无需整体包含DAG的配置的表示,或列出DAG的全部成员。配置德尔塔消息的给定接收者因此可预期基于其已至此接收的配置德尔塔消息的特定集或顺序而构建其自身的DAG配置视图。在一些实施中,还可将序号指派到配置德尔塔消息,例如以使得配置德尔塔消息的接收者能够确定其是否已缺失任何早期的配置德尔塔消息。因为配置管理器可能未尝试保证由不同DAG节点接收配置德尔塔消息的次序或相对时序,所以在一些实施方案中,DAG的配置的当前视图可能在不同节点处是不同的,至少对于上文示例所指示的一些时段来说是不同的。
根据一个实施方案,DAG节点响应于配置德尔塔消息而采取的动作可基于所述配置改变是否影响接收者的直接邻居而不同。考虑DAG在时间点T0包括接受器节点A、中间节点B和提交者节点C(具有初始复制路径A到B到C)的另一示例情形。在时间T1,DAG的配置管理器DCM1意识到,例如由于明显的故障或连接性丢失,B已离开DAG。DCM1可分别发送各自的异步配置德尔塔消息D1和D2到剩余节点A和C,不请求状态转变请求处理的任何暂停。如果在A于时间T3接收D1之前,C在时间T2接收到D2,那么A可继续发送定向到B的状态转变消息持续某一时间间隔(T3-T2)(尽管,如果N实际上已失效,那么由A发送的消息可能不由B处理)。类似地,如果在C于T3接收D2之前,A在T2接收到D1,那么C可继续处理其从B接收的消息(当B失效时所述消息正在飞行中)持续某一时间(T3-T2),直到C意识到B脱离了DAG。当节点A接收到D1时,如果其尚未与C联系,那么节点A可建立与C的连接性作为其在新配置的复制路径(A到C)中的新的直接后继,所述新配置的复制路径替代较旧的复制路径(A到B到C)。类似地,当C接收到D2时,其可建立与A的连接性(如果A尚未联系C)作为其新的直接前趋,且至少在一些实施方案中,C可递交到A重新传输可能已从A传输到B但尚未到达C的状态转变记录的请求。例如,C可在重新传输请求内包含其至此已接收到的状态转变记录的最高序号HSN1,从而使得A能够重新传输具有高于HSN1的序号的任何状态转变记录。
在至少一些实施方案中,配置管理器可依赖于健康检测机制或服务以指示DAG节点何时已明显变得不健康,从而导致从DAG配置移除明显不健康的节点。分布式环境中的至少一些健康检测机制可取决于心跳或可能不总是做出关于节点健康状态的正确决策的其他较低水平的机制。同时,配置管理器可在发送其配置德尔塔消息之前并不处于无限期地等待确认实际节点故障的位置;而是,其可在确定节点故障的可能性高于某一阈值(例如,80%或90%)时传输配置德尔塔消息,或可使用某一其他启发法来触发DAG配置改变和对应的德尔塔消息。如上文提及,在复制DAG处使用的状态管理协议可例如通过避免“停止一切”暂停来减轻假阳性故障“检测”的负面影响。结果,在采用复制DAG时有可能使用比使用其他状态复制技术的情况下可接受的更快/更便宜的(尽管可能较不可靠)故障检查机制。
在至少一个实施方案中,可实施用于复制DAG的协调暂停技术。在某些条件下,例如,如果检测到涉及多个DAG资源或节点的大规模故障事件,那么配置管理器可指导DAG的幸存节点停止处理进一步的状态转变,使其应用状态信息彼此同步,将同步的应用状态信息存储在各自的存储器位置,且等待重新激活指令。在一些实施中,在本地保存应用状态之后,DAG节点可每个执行干净关闭和重新启动,且在重新启动后向配置管理器报告以指示其可用于服务。如果在由配置管理器发布暂停命令之前已失效的节点报告其可用于服务,那么在一些实施方案中,配置管理器可指导此类节点使其应用状态与另一节点同步,所述另一节点被(例如,配置管理器)已知关于应用状态是最新的。配置管理器可等待直到足够数目的节点(a)可用于服务且(b)关于应用状态最新为止,确定(潜在的新)DAG配置,且通过发送指示DAG配置的重新激活消息到所述配置的成员节点来重新激活所述DAG。此类受控且协调暂停/重新启动策略可允许在大规模故障事件之后比在一些实施方案中有可能的其他方式更快速且可靠的应用恢复。所述协调暂停方法还可用于除了响应于大规模故障之外的目的,例如用于来自多个复制节点的应用状态信息的快速并行备份/快照。
在各种实施方案中,上文所描述类型的基于DAG的复制状态机可用以管理各种不同应用。在一些实施方案中,可实施日志记录服务,其中可经由使用复制DAG而实施的持久性改变日志的实例来注册用于事务管理的一个或多个数据存储区(例如,关系或非关系数据库)。如下文进一步详细描述,在一些实施方案中可由此类基于日志的事务管理器来使用乐观并发控制机制。日志记录服务的客户端可在一个或多个源数据存储区上执行读取操作,且确定将要在给定事务内执行写入操作的一个或多个数据存储区位置(例如,基于读取的结果)。可将包含读取集、写入集、并发控制要求和/或对事务的逻辑约束的表示的事务请求描述符递交到日志记录服务的冲突检测器(例如,与对应的复制DAG的接受器节点相关联的冲突检测逻辑)。冲突检测器可使用先前提交的事务的记录连同事务描述符的内容来确定所述事务请求是否可接受提交。如果事务接受提交,那么可在针对日志建立的DAG的某一数目的复制节点处起始对应提交记录的复制。插入到日志的给定副本中的记录因此可每个表示各自的应用状态转变。许多不同逻辑约束可在不同实施方案中指定,且由基于日志的事务管理器强制执行,例如重复删除要求、事务间提交顺序要求及其类似者。在一些实施方案中,此类基于日志的事务管理机制可使得能够支持多项目事务或多数据库事务,其中例如给定事务的写入集包含多个写入位置,即使基础数据存储区可能本身并不支持用于涉及一个以上写入的事务的原子性。在至少一些实施方案中,可将对应于所提交事务的写入异步应用到相关数据存储区,例如,可在将对应写入传播到目标数据存储区之前的某一时间将已提交事务的记录保存在持久性改变日志中。在至少一些实施方案中,持久性改变日志因此可变成应用状态的权威来源,其中数据存储区在日志已记录状态变化之后赶上应用状态。
在各种实施方案中,复制DAG还可用于复制数据库实例,用于管理高通量数据流,和/或用于分布式锁定管理。在一些实施方案中,可在提供商网络内使用复制DAG来管理虚拟化资源的状态变化,例如计算实例。在至少一些实施方案中,除了将所提交写入传播到注册的数据存储区(可经由所述数据存储区的各自读取接口来读取写入的结果)之外,日志记录服务还可界定和实施其自身的单独访问接口,从而允许感兴趣的客户端直接从持久性日志实例读取针对给定客户端应用而存储的记录的至少一部分。
示例性系统环境
图1示出根据至少一些实施方案的示例性系统环境,其中建立复制节点的动态DAG(有向非循环图)用于管理应用状态变化。如所展示,在系统100中,为了管理应用160的状态转变而建立的复制DAG140包括具有三个节点的复制路径:接受器节点110、中间节点112和提交者节点114。另外,在所描绘实施方案中,DAG 140包含备用节点130,其可用于在需要时接管其他节点中的任一者的责任。可部署节点的其他组合用于其他复制DAG,例如,一个以上中间节点可用于一些应用,无中间节点可用于其他应用,或备用节点可不被建立。可由如下文描述的容错DAG配置管理器(DCM)164来协调DAG 140的配置的变化。
在所描绘实施方案中,接受器节点110可经由一个或多个编程接口(诸如API(应用编程接口))来接收应用状态转变请求(STR)150。使用应用相关的规则或逻辑,接受器节点110可接受用于最终提交的请求转变,或可来拒绝所述请求。如果接受转变,那么可由接受器节点110产生序号,其例如指示相对于其他接受转变而接受所述转变的次序。如上文提及,在一些实施方案中,序号可包括针对每一接受转变而递增的计数器,而在其他实施方案中,可使用由配置管理器提供的逻辑时钟或时间戳值。包含对应序号的应用状态记录(ASR)172A的集合176A可由接受器节点存储在本地持久性存储器中。在一些实施方案中,应用状态记录可包括转变接受记录和转变提交记录两者(其中仅在通知接受器节点对应转变由提交者节点提交之后才存储提交记录)。在其他实施方案中,沿着复制路径的至少一些节点可仅存储接受记录。在存储指示接受的状态转变记录之后,接受器节点可传输指示批准的状态转变消息(STM)152A到沿着复制路径的其后继节点,诸如所示配置中的中间节点112。中间节点可将对应ASR的其自身副本172B连同序号存储在其本地ASR集合176B中。中间节点可将其自身的STM 152B传输到沿着当前复制路径的其邻居,例如到所描绘实施方案中的提交者节点114。在至少一些实施中,STM 152可包含哪些节点已存储ASR的副本的指示,例如,消息152B可向提交者节点指示,指示接受的应用状态记录的各自副本已经被分别存储在节点110和节点112处。
响应于在提交者节点处确定已存储足够数目的应用状态记录的副本(其中足够的副本的确切数目可为应用160的配置参数),可提交所述转变。在所描绘实施方案中,提交者节点的ASR集合176C可包括事务提交的记录(与批准相反);因此,ASR 172C可指示提交而不是仅接受。在至少一些实施方案中,提交者节点116可传输指示或通知到接受器节点和/或中间节点来指示所述转变被提交。在其他实施方案中,接受器和/或中间节点可递交请求(例如,定期地)到提交者节点116以确定已提交哪些转变,且可相应地更新其ASR集合。对于一些应用,可能不需要显式提交;因此,没有提交的指示可被存储,且沿着路径的DAG节点中的每一者可仅存储指示接受的各自应用状态记录。在所描绘实施方案中,提交后STM 154可从提交者节点传输到备用节点130以使得备用节点能够更新其ASR集合176D(例如,通过存储提交ASR 172D),使得如果且当激活备用节点以替代另一DAG节点时,其应用状态信息匹配提交者节点的应用状态信息。在一些实施方案中,使备用节点始终跟上最新提交的应用状态的事实可使得配置管理器能够快速地激活用于其他三个类型角色中的任一者的备用节点:例如,作为接受器节点、中间节点或提交者节点。
在所描绘实施方案中,容错DAG配置管理器(DCM)164可负责根据需要来传播呈配置德尔塔消息166(例如,消息166A、166B、166C和166D)的形式的DAG配置或成员的变化到DAG节点。当给定DAG节点例如由于故障而离开DAG 140时,可例如通过DCM 164将对应配置德尔塔消息166发送到一个或多个幸存节点。类似地,当新的节点加入DAG时(例如,在从故障恢复之后,或以增加应用160的耐久性水平),可通过DCM将指示加入事件、DAG内的加入节点的位置、和/或授予加入节点的角色(例如,接受器、中间、提交者或备用)的对应配置德尔塔消息传输到DAG的一个或多个当前成员节点。配置德尔塔消息166可彼此异步,且可由其目标按不影响应用状态的整体复制的任何次序来接收。DAG的每一节点可独立于其他节点可具有的配置视图174基于所接收的配置德尔塔消息来负责构造DAG配置的其自身视图174。因此,例如,由于在各自节点110、112、114和130处接收的不同配置德尔塔消息的相对次序和/或时序,在一些实施方案中,配置视图174A、174B、174C和174D中的一者或多者可至少在一些短的时间间隔为不同的。在至少一些实施方案中,每一DAG节点可存储在各自的本地配置改变储存库中接收的一定数量的配置德尔塔消息的表示或内容。在所描绘实施方案中,DCM 164可不强制执行由DAG节点进行的应用状态处理中的停止一切暂停,例如,其可允许所述节点继续接收和处理应用状态转变消息,不管配置德尔塔消息的时序或基础DAG配置改变。下文参照图2a-2h来论述DAG节点对配置德尔塔消息作出响应的方式的示例。
应注意,尽管图1展示具有单个线性复制路径的DAG或具有每一类型的一个节点的“链”,但在至少一些实施方案中,复制DAG可包含分支路径和/或用于每一角色的多个节点。即,若干接受器节点、中间节点、提交者节点和/或备用节点可共存在同一DAG中,且DAG的复制路径可包含加入节点(接收来自多个前趋节点的转变请求所在的节点)或分裂节点(从其将转变请求发送到多个后继节点的节点)。如果接受器节点110或提交者节点116中的任一者拒绝请求的状态转变(例如,由于接受器节点确定一组应用特定接受准则未得到满足,或由于在提交者节点接收到接受的状态转变请求消息之时已进行所接受转变的副本的不足数目),那么在一些实施方案中,可通知请求所述转变的客户端所述转变未被提交。客户端接着可重试所述转变(例如,通过递交另一状态转变请求),或可决定完全放弃请求。在一些实施中,还可允许中间节点使转变请求中止。
图2a-2h示出根据至少一些实施方案的操作的示例性顺序,所述操作可在复制DAG处响应于检测到DAG节点中的一者已失效来执行。图2a展示DAG配置的初始状态,包含三个节点202A、202B和202C。在节点202A处接收状态转变请求(STR)150。所接受状态转变记录在节点202A(在STR的本地批准之后)和202B(在节点202B接收经批准的STM 211A之后)处复制,且在202C(在节点202C接收经批准的STM 211B之后)处提交。DCM 164可接收指示节点202B已明显失效的健康状态更新250。在不同实施方案中,关于节点202B的状态的健康状态更新可从多个来源中的任一者接收,例如,来自其他节点中的一者(202A或202B),或来自DAG外部的健康监视服务(例如,在建立于体现DAG节点的提供商网络处的通用资源健康监视服务)。在至少一个实施中,健康状态更新可由DMC 164自身的子部件产生,诸如定期发送心跳消息到DAG节点且在某一数量的连续心跳消息的可接受时间窗内未接收到响应的情况下确定给定节点处于不健康状态的监视进程。
在所描绘实施方案中,DCM 164可基于健康状态更新来决定应从DAG移除节点202B,且应添加新的节点202D作为节点202C的后继。新的节点可例如包括被提升到活动状态作为DAG的新的提交者节点的备用节点。在决定DAG的新配置(即,所述DAG现在应包括复制链202A到202C到202D)且将新的配置的表示保存在持久性储存库中之后,DCM 164可发布命令241到节点202D以加入DAG作为节点202C的后继。应注意至少在一些实施方案中,从DAG移除节点(诸如202B)可未必伴有替换节点的直接添加(尤其在移除之后保持在线且连接的DAG节点的数目超过其状态被复制的应用所需的节点的最小数目的情况下);示出节点202D的添加仅作为DCM可对节点故障(或至少明显的节点故障)作出响应的方式中的一者。如图2b中所示,其可为节点202B实际上尚未失效的情况(即,所述健康更新在有关202B的故障上出错)。在此类假阳性情形中,状态转变消息可继续从202A朝向202B传输,且从202B传输到202C,从而允许应用在DCM 164进行移除决策之后继续前进至少一些时间。
在至少一些实施方案中,当从DAG移除诸如202B的节点时,且当所移除节点的直接后继(例如,202C)保持在DAG中时,可将先前指派到所移除节点的角色转移到直接后继。因此,曾经可能作为提交者节点的节点202C可在节点202B的离开后成为中间节点,且可将新近激活的节点202D指定为新的提交者节点。如果所移除节点没有直接后继(例如,如果在所描绘示例中以移除节点202C而不是节点202B),那么在一些实施方案中新近激活的备用节点可被授予指派到所移除节点的角色。在其他实施方案中,未按照此类依序/线性方式来转移角色,例如,配置管理器可决定应授予给定节点哪些角色而无需考虑所述节点相对于所移除节点的相对位置。
在所描绘实施方案中,在决定应从DAG移除节点202B之后,DCM 164可发送各自的异步配置德尔塔消息242A和242B到节点202A和202C。如所展示,德尔塔消息中的每一者可指示,202B已离开DAG,且202D已加入。尽管在所描绘实施方案中在单个配置德尔塔消息中指示配置的两个变化,但在其他实施方案中,可发送单独的配置德尔塔消息用于202B的移除和202D的加入。在所描绘实施方案中,配置德尔塔消息可仅指示DAG配置的变化,且可不包括DAG的全部配置的表示。STM可继续从节点202A被引导到节点202B,直到节点202A接收到配置德尔塔消息242A或以其他方式意识到202B已离开DAG(例如,由于网络连接的终止)为止。在202B实际上尚未失效的情形下,节点202B可继续处理状态转变请求且朝向节点202C发送消息211B,直到其意识到其已被从DAG移除为止(例如,如果202A或202C停止与202B通信)。
因为使用异步消息传递机制来发送配置德尔塔消息242,所以所述消息在不同的时间到达其目的地。如果在节点202C接收配置德尔塔消息242B之前节点202A接收配置德尔塔消息242A,那么可实现图2d中描绘的情形(其中DAG至少临时含有分支)。响应于消息242A,节点202A可将配置改变的指示保存在本地存储器中且停止发送任何其他消息到节点202B。此外,节点202A可确定其新的后继节点是202C,且可因此建立与节点202C的网络连接性并开始向节点202C发送新的状态转变消息211C。在所描绘实施方案中,状态转变处理活动可在DAG的各个节点处继续,即使指示202B的移除的消息到达剩余节点。在假定节点202B已失效但实际上保持起作用的情形下,例如,甚至在节点202A了解到节点202B已从DAG移除之后,仍可在节点202B处从节点202A接收一个或多个在飞行中的状态转变消息。在接收此类在飞行中的消息后,节点202B可在本地存储器中复制所述消息中指示的状态转变信息且尝试传输另一类似STM到节点202C。如果节点202C尚未了解节点202B的移除(或至少尚未关闭其与节点202B的连接),那么节点202C可接收且处理来自节点202B的消息,从而允许应用继续前进,即使节点202B已被配置管理器从DAG配置移除。
如果在节点202A接收配置德尔塔消息242A之前节点202C接收配置德尔塔消息242B,那么可实现图2e中示出的情形。在接收消息242B后,节点202C可停止接收从节点202B发送的新消息(例如,如果其与节点202B的连接仍在服务中,那么通过终止所述连接)。在了解到节点202A是其在DAG路径中的新的直接前趋后,节点202C可建立与节点202A的连接性。在所描绘实施方案中,节点202C还可确定最高序号HSN1(从节点202C处已接收的经批准STM的序号当中),且发送请求260到节点202A以重新传输202C可能已缺失的任何经批准的状态转变消息(即,具有比HSN1高的序号的任何经批准STM)。此外,节点202C还可建立与其新的后继节点202D的连接性,且可开始发送后续经批准STM 211D到节点202D。
在节点202A和202C两者都已被通知DAG配置改变后,图2f中示出的DAG的新复制路径(即,202A到202C到202D)可用于新引入的状态转变请求。应注意,由于配置德尔塔消息242的时序,其可为以下情况:在节点202A处接收到配置德尔塔消息242A之前,节点202A从节点202C了解到配置改变。类似地,在一些实施方案中,节点202C可从节点202A(或甚至节点202D)了解所述新配置。因此,可存在关于所述新配置的信息可到达DAG的任何给定节点的多个方式,且至少在一些实施方案中,DAG节点可甚至在配置德尔塔消息已到达其所有目标接收者之前开始使用新复制路径的部分。
如图2g中所示,在已从DAG移除之后的某一时刻(例如,由于实际故障或由于假阳性故障检测),节点202B可任选地向DCM 164指示其准备好用于服务。在实际故障的情况下,例如,节点202B可最终被修复并重新启动,且可在发送“可用于服务”消息280之前执行某组恢复操作。在网络连接性丢失的情况下,“可用于服务”消息可在重新建立连接性之后发送。作为响应,在所描绘实施方案中,DCM 164可决定添加回节点202B作为DAG的备用节点。因此,如图2h中所示,DCM可发送加入命令282到节点202B,且分别发送一组新的配置德尔塔消息244A、244B和244C到节点202A、202B和202D,从而通知它们节点202B的添加。应注意,提供图2a-2h中示出的操作顺序作为示例,且在各种实施方案中,DAG节点和DCM可响应于节点202B的明显故障而执行与图2a-2h中示出的操作顺序不同的操作顺序。例如,在一些实施方案中,没有新的节点可添加到DAG作为节点202C的后继。而且,在一些实施方案中,节点202B可在其变得可用于服务之后不必重新加入同一DAG;而是,例如,其可部署到不同的DAG或可保持在可配置新DAG的节点池中。
尽管在图2a-2h中将故障的检测展示为触发DAG配置改变,但大体来说,在各种实施方案中,许多不同考虑因素中的任一者可导致DAG配置的修改。例如,应用所有者(或DCM)可决定添加节点到DAG以增强数据耐久性或出于可用性原因。可按类似的异步方式将指示新节点的添加的配置德尔塔消息传播到其他DAG节点作为上文在一些实施方案中所描述的移除相关传播,而不需要状态转变处理中的“停止一切”暂停。在一些实施方案中,DAG节点可能出于维护相关原因而必须被离线,例如,用于软件升级、用于对软件错误除错或用于硬件修改。在至少一个实施方案中,DAG的配置可由于以下确定而改变:节点中的一者或多者处的工作负载水平(例如,每秒处理的状态转变数目)已到达阈值水平,且应利用比当前使用的更高性能(或较不高性能)的硬件/软件堆叠。在一些实施方案中,DAG配置改变可涉及改变特定DAG节点的位置或角色,未必需要添加或移除节点。例如,配置管理器可将提交者的角色切换给先前为中间节点的节点,且使旧的提交者节点成为新配置中的中间节点。可实施此类角色改变(且传播对应的配置德尔塔消息)例如用于负载平衡目的,尤其在同一主机用于若干不同DAG的多个节点的多租户环境中。下文进一步详细描述此类多租户环境。
状态转变记录和配置德尔塔消息
图3示出根据至少一些实施方案的可在动态复制DAG处产生的应用状态记录(ASR)和DAG配置德尔塔消息的示例性部件。如先前指示,在至少一些实施方案中,每个表示经批准或提交状态转变的应用状态记录的副本可存储在沿着DAG的复制路径的若干节点中的每一者处,且本文还可将应用状态记录称作状态转变记录。如所展示,应用状态记录320可包括转变的类型302的指示,例如,是否记录所请求状态转变的批准,或是否记录经批准状态转变的提交。在一些实施方案中,如先前指出,每一DAG节点可存储批准记录和提交记录两者,而在其他实施方案中,可存储仅一个类型的状态转变记录。例如,在一个情形中,批准记录可最初在非提交者节点处复制,且在通过提交者节点最终提交事务之后,所述批准记录可改变为提交记录。在至少一个实施方案中,单独的转变类型字段302可未包含在ASR中或导致产生ASR的消息中,而是,可基于DAG节点对其当前角色和/或从其接收消息的源DAG节点的角色的知识来由DAG节点推断所述转变的类型。例如,接收状态转变消息的非提交者节点可推断,所述消息表示经批准状态转变。
在所描绘实施方案中,状态转变记录320记录可包含转变数据304。转变数据部件304的内容的性质可取决于状态被管理的应用而不同。在一些情况下,例如,状态转变请求可包含写入有效负载(指示将被写入的某一数量的字节,和所述字节将被写入的地址),写入有效负载可包含在转变记录中。对于其他应用,每一状态转变可指示应用客户端所发布的各自命令,且所述命令的表示可包含在ASR中。ASR 320还可包含对应于状态转变的序号306(其还可被视为逻辑时间戳)。所述序号可例如在批准状态转变请求时在接受器节点处产生,或在提交状态转变时在提交者节点处产生。在至少一些实施方案中,可通过按增加的序号次序来应用(在应用的某一初始状态开始)所提交状态记录的转变数据(例如,写入有效负载、命令等)来确定使用DAG来管理的应用的当前状态。在一些实施方案中,转变的复制历史信息308还可包含在ASR中,例如,指示哪些DAG节点已存储针对同一转变的各自ASR,和/或那些记录已被复制的次序。在一些实施中,此类复制历史信息可例如由提交者节点使用,以确认足够数目的节点已记录给定状态转变用于提交。在一些实施方案中,ASR消息可指示接收对应的状态转变请求的接受器节点的身份,但无需包含关于沿着复制路径的其他节点的信息。在至少一个实施中,可不需要提交者节点来确认在提交经批准状态转变之前足够数目的节点已复制状态转变记录。
在所描绘实施方案中,DAG配置德尔塔消息370可指示加入或离开配置的一个(或多个)节点的识别符352,且实施改变354的类型(例如,加入相对于离开)。在一些实施中,关于加入(或离开)节点的角色信息356可任选地包含在配置德尔塔消息中。在至少一些实施方案中,仅在应用状态序号与应用状态转变相关联时,DAG配置改变序号358可包含在配置德尔塔消息中。例如,此类序号可由配置德尔塔消息的接收者使用,以确定接收者是否已缺失任何先前配置改变。如果已缺失一些配置改变(例如由于网络包丢失),那么接收者节点可发送请求到DCM以重新传输缺失的配置德尔塔消息。在各种实施方案中,可将配置改变序号358实施为DCM处的计数器或逻辑时间戳。在DCM包括具有多个节点的集群的一些实施中,由集群管理器维持的全局逻辑时间戳可用作用于配置改变序号358的源。
提供商网络环境中的复制DAG部署
图4示出根据至少一些实施方案的其成员节点分布在提供商网络的多个可用性容器中的示例性复制DAG。实体(诸如公司或公共部门组织)所设置的用于将可通过因特网和/或其他网络访问的一个或多个服务(诸如各种类型的多租户和/或单租户基于云的计算或存储服务)提供给一组分布式客户端的网络在本文中可称为提供商网络。至少一些提供商网络还可被称作“公共云”环境。给定提供商网络可包括托管实现、配置和分配由提供商提供的基础设施和服务所需的各种资源池的许多数据中心,如物理和/或虚拟化计算机服务器、存储装置、联网设备等的集合。在较大提供商网络内,一些数据中心可位于与其他数据中心不同的城市、州或国家中,且在一些实施方案中,分派到给定应用的资源可分布在若干此类位置中,以实现可用性、故障恢复和性能的所需水平。
在一些实施方案中,提供商网络可被组织成多个地理区域,并且每一区域可包含一个或多个可用性容器,所述可用性容器还可称为“可用性区”。可用性容器进而可包括一个或多个不同的物理处所或数据中心,所述物理处所或数据中心被构建(例如,利用独立基础结构部件,例如电力相关装备、冷却装备和/或物理安全部件),其方式为使得给定可用性容器中的资源绝缘于其他可用性容器中的故障。一个可用性容器中的故障可不预期导致任何其他可用性容器中的故障;因此,给定物理主机或虚拟化服务器的可用性配置文件意图独立于不同可用性容器中的其他主机或服务器的可用性配置文件。
如图4中所示,在一些实施方案中,可将复制DAG的一个或多个节点实例化在与DAG的其他节点不同的可用性容器中。在所描绘实施方案中,提供商网络402包含三个可用性容器466A、466B和466C,其中每一可用性容器包括某一数目的节点主机410。可用性容器466A的节点主机410A例如包括DAG节点422A、本地持久性存储器(例如,一个或多个基于磁盘的装置)430A、以及可用作与DAG客户端通信的前端的代理412A。类似地,可用性容器466B中的节点主机410B包括DAG节点422B、本地持久性存储器430B和代理412B,且可用性容器466C中的节点主机410C包含DAG节点422C、本地持久性存储器430C和代理412C。在所描绘实施方案中,DAG节点422(和/或代理412)可每个包括一个或多个执行线程,诸如一个或多个处理程序集合。在所描绘实施方案中,本地持久性存储装置430可用以存储沿着复制路径491的应用状态信息的本地副本(和/或在复制路径491的DAG节点422处接收的DAG配置德尔塔消息内容)。
在图4的实施方案中描绘的DAG的DCM自身包括分布在多个可用性容器中的多个节点。如所展示,可使用基于共识的DCM集群490,包括随DCM存储器475A位于可用性容器466A中的DCM节点472A,以及随DCM存储器475B位于可用性容器466B中的DCM节点472B。所描绘DCM因此可被视为至少关于不越过可用性容器边界的故障是容错的。此类容错DCM的节点可在本文称作“配置节点”,例如相比于由DCM管理的DAG的成员节点。可使用DCM节点472当中的基于共识的协议来批准DAG配置的变化(例如,包含节点移除、添加或角色变化),且在将对应的配置德尔塔消息传输到DAG节点422之前可必须由多个DCM节点来将DAG配置的表示存储在持久性存储器中。用于DCM和/或用于给定复制DAG的可用性容器的数目可在不同实施方案中和针对不同应用而不同,例如取决于应用的可用性要求或数据耐久性要求。在一些实施方案中,复制DAG可用以管理在提供商网络处实施的其他服务的资源的配置。例如,在一个实施方案中,可使用复制DAG来管理虚拟化计算服务所使用的计算实例(虚拟机)或实例主机(物理主机)的状态的变化。
图5示出根据至少一些实施方案的示例性配置,其中多个复制DAG的节点可按多租户方式而实施在单个主机处。如所展示,三个复制DAG 555A、555B和555C的节点分布在四个DAG节点主机510A、510B、510C和510D当中。大体来说,节点主机可在其资源能力方面不同,例如,一个主机的计算、存储、网络连接和/或存储器资源可与其他主机的计算、存储、网络连接和/或存储器资源不同。例如,节点主机510B具有可用于DAG信息的两个存储装置530B和530C,节点主机510D具有两个存储装置530E和530F,而节点主机510A和510C具有一个存储装置(分别为530A和530D)。
主机510A包括DAG 555A的接受器节点522A,和DAG 555C的中间节点522N。主机510B包括DAG 555A的中间节点522B、DAG555B的提交者节点522K和DAG 555C的中间节点522O。DAG 555A的提交者节点522C和DAG 555C的提交者节点522P可实施在主机510C处。最后,DAG 555A的备用节点522C、DAG 555B的接受器节点522J和DAG 555C的接受器节点522M可实例化在主机510D处。因此,大体来说,给定主机可用于N个不同DAG的节点,且每一DAG可利用M个不同主机,其中在至少一些实施方案中M和N可为可配置参数。在至少一些实施方案中,代表各自应用所有者而建立的若干DAG的节点可按多租户方式实施在同一主机上:例如,其可能对于特定应用所有者不明显,使得被用于其应用的状态管理的资源还被用于管理其他应用的状态。在一些提供商网络环境中,可实施放置服务,其选择特定主机以用于给定应用的复制DAG的给定节点。可基于不同实施方案中的各个因素组合来选择节点主机,诸如其状态被管理的应用的性能要求、候选主机处的可用资源能力、负载平衡需要、定价考虑因素等等。在至少一些实施中,每个主机实例化多个DAG节点可帮助相对于在仅实例化单个DAG节点的情况下可能实现的利用水平而增加主机处的整体资源利用水平。例如,尤其在其中用于DAG节点的大部分逻辑是单个线程的实施方案中,多核心主机的处理器核心中的多者可在多租户情形中而不是在单租户情形中并行使用,因此增加了所述主机的平均CPU利用率。
用于实施动态基于DAG的状态复制的方法
如上文论述,在一些实施方案中,可在给定时间点授予复制DAG的给定节点许多角色中的一者(例如,接受器、中间、提交者或备用)。图6是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可响应于接收到状态转变请求(STR)而执行在复制DAG的接受器节点处。如元素601中所示,接受器节点可从例如状态复制服务的客户端接收包括用于应用的STR的消息。在不同实施方案中,STR可部分取决于应用的性质而包括各种元素。例如,在如下文更详细描述的一些实施方案中,DAG可用于在一个或多个数据存储区处指导的事务的乐观并发控制,且STR可包含诸如可用以检测与先前提交的事务的冲突的读取集和写入集的数据。其状态转变通过使用复制DAG来管理的每一应用可具有其自身的用于请求的状态转变的接受准则集合,且至少在一些情况下,STR的内容可用以决定所述转变应被接受还是拒绝。在一些实施中,操作条件还可或代替用于接受/拒绝请求的状态转变,例如如果在接受器节点处或在DAG的其他节点处的工作负载水平处于或高于阈值,那么可拒绝状态转变。如果所述转变满足接受准则(如元素604中所检测),那么可例如通过递增计数器值或通过获得某一其他单调递增逻辑时间戳值来产生用于接受STR的新的批准序号(元素607)。指示所述转变经批准的记录可连同序号存储在本地存储器中(元素610)。对于一些应用,转变请求可包含将被复制的数据集(例如写入有效负载),接受器节点同样可将所述数据集存储在本地存储器中。在一个实施中,接受器节点可包括在提供商网络的特定主机处运行的一个或多个处理程序,且所述转变的批准、序号和所述转变的数据集的记录可全部存储在特定主机的持久性基于磁盘的存储装置处。在一些实施方案中,所述转变的数据、转变经批准的指示和序号可全部组合成存储在本地存储器处的单个对象,诸如插入到(或附加到)日志的日志条目。在其他实施方案中,所述转变的数据集可与指示转变的批准的记录分开存储。
在安全地存储状态转变的记录之后,可将指示所述批准的状态转变消息传输到沿着DAG的复制路径(元素613)朝向提交者节点的邻居节点。在一些情况下,取决于DAG的拓扑学,可发送多个此类消息,每一消息发送到沿着复制路径的每一邻居节点。如先前描述,DAG的每一节点可具有其自身的DAG配置视图,所述视图可能未必在给定时间点与其他节点的视图一致。在所描绘实施方案中,接受器节点可将其经批准状态转变消息引导到DAG的配置的其当前视图中所指示的邻居节点,即使所述当前视图从DAG的DCM的角度来看(或从一个或多个其他DAG节点的角度来看)碰巧是过时的或不正确的。在发送消息之后,可认为状态转变请求的处理在接受器节点处是完成的(元素619)。如果所请求转变不满足应用的接受准则(如还在元素604中所检测),那么可拒绝所述转变(元素616)。在一些实施中,可将指示所述拒绝的通知或响应提供到请求者。
图7是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可响应于接收到经批准状态转变消息而执行在复制DAG的中间节点处。在例如从接受器节点或从另一中间节点接收此类消息STM1(元素701)之后,在一些实施方案中,中间节点可确定具有较低序号的状态转变消息是否缺失(例如,如果STM1具有序号SN1,那么具有比SN1小的序号的一个或多个STM是否尚未被接收)。如果发现了此类缺失状态转变消息的证据(元素704),那么在所描绘实施方案中,中间节点可任选地将对所述缺失STM的重新传输请求递交到沿着当前已知复制路径的直接前趋节点(元素707)。在一些实施中,中间节点可在将对应于STM1的经批准状态转变的记录存储在本地存储器中之前等待接收对其重新传输请求的响应。可存储用于STM1的批准记录(例如)连同批准序号和与所述转变相关联的任何数据集(例如写入有效负载)(元素710)。接着可将状态转变消息(其内容可类似于所接收的消息,或其内容与所接收的消息相同)发送到当前已知复制路径上朝向提交者节点的每一邻居节点(元素713)。在其中状态转变的批准历史包含在状态转变消息内的一些实施中,中间节点可将其(中间节点的)识别符添加到向外发出的状态转变消息中所指示的批准者的列表。
在一些实施方案中,代替在将用于STM1的批准记录保存在本地存储器中之前检查缺失的序号,可采用不同的方法。例如,中间节点可在将批准记录存储在本地存储器中之后和/或在将对应STM朝向提交者节点传输之后检查缺失的序号。
在一个实施中,可结合用于在非接受器节点处接收STM的拉模型来使用保证在给定连接内的消息的按序递送的网络连接协议(诸如TCP(传输控制协议))。在此类实施中,只要中间节点、提交者节点或备用节点维持与沿着复制路径的其直接前趋的网络连接,就可依赖于网络连接协议以确保没有消息丢失。在给定DAG节点N1处,如果与直接前趋节点P1的连接在此类实施中丢失,那么N1可负责建立与P1的新连接(或者如果已接收指示P1不再是DAG的部分的配置德尔塔消息,那么建立与不同的前趋节点的连接),且请求P1发送具有比先前最高的接收序号高的序号的任何STM。
图8是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可响应于接收到经批准状态转变消息而执行在复制DAG的提交者节点处。在例如从中间节点或从接受器节点接收经批准状态转变消息后(元素801),提交者节点可确定所述状态转变是否满足应用的提交准则。在一些实施方案中,提交者节点可能够根据STM的内容(诸如批准历史字段)来确定至此已保存的应用状态记录的副本的数目,且如果副本的数目超过阈值,那么可认为所述转变是可提交的。副本计数阈值可基于应用而不同;例如,接受器节点处的单个副本可对于一些应用是足够的。在其他实施方案中,提交者节点还可必须在提交所述转变之前考虑其他因素,诸如提交者节点是否已接收具有比当前STM的序号低的序号的全部STM。在一个实施方案中,例如,在提交当前转变之前,提交者节点可必须等待直到其接收且处理所有此类先前STM。
如果满足提交准则(其可在多个应用中不同)(如元素804中所检测),那么提交者节点可将在其应用状态记录的集合内的提交记录存储在本地存储器中(元素807),例如连同序号和转变的数据集(如果存在)。在一些实施中,提交准则可默认为已在接受器节点处验证的接受准则,即,一旦在接受器节点处已批准状态转变,提交者节点即可提交在所接收的STM中指示的状态转变而无需验证任何额外条件。在一些实施方案中,可将在STM中指示的批准序号的副本存储为提交序号。因为一些经批准转变可能未获得提交,所以在至少一个实施方案中,可使用与用于批准不同的一组序号来提交(例如,使得提交序号的顺序不具有任何间隙)。如果备用节点被配置用于DAG,那么可从提交者节点将提交后STM引导到一个或多个此类备用节点。在至少一些实施方案中,在提交所述转变之后,可将提交的通知提供到DAG的一个或多个其他节点(元素810),例如,以使得其他节点能够更新其应用状态信息和/或用于将响应传输到状态转变的请求客户端从而指示所述转变已被提交。
在其中缺失STM并未被处置为与提交准则相关的处理的部分的一些实施方案中,提交者节点可采用与图7中关于缺失STM所指示的类似动作。因此,例如,如果提交者节点确定一个或多个STM缺失(具有比所接收的STM的序号低的序号)(元素813),那么可将对缺失STM的重新传输请求发送到直接前趋节点(元素816)以完成所接收STM的处理(元素822)。如果未满足提交准则,那么提交者节点可中止状态转变(元素819)。在一些实施方案中,可将中止通知发送到DAG的一个或多个其他节点,和/或发送到请求状态转变的客户端。在一些实施中,如上文提及,如果已在接受器节点处批准状态转变,那么复制DAG可负责(最终)提交所述状态转变,即使复制路径的一个或多个节点(包含接受器节点自身)失效。在一些此类实施中,中止状态转变可需要相对重量级的改变,诸如从其他DAG节点移除转变的批准记录(或从碰巧存储批准记录的节点的DAG的实际移除)。如下文关于图11a至图14进一步详细描述,可在一些实施方案中使用抢先协调DAG暂停技术来避免以下情形:STM到达提交者节点,而未在所需数目的DAG节点处复制对应的状态转变信息。
图9是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可执行在复制DAG的配置管理器(DCM)处。如元素901中所示,可通过配置管理器检测可潜在地触发DAG处的配置改变的事件。此类事件可包含接收诸如以下的消息:“检测到节点故障”(例如,从DAG节点,或从提供商网络的健康管理部件);或“可用于服务”(例如,从在故障之后已重新启动的DAG节点)。在一些实施方案中,配置管理器自身可负责监视各个DAG节点的健康状态,且触发事件可为通过配置管理器进行的检测,即,所述节点中的一者尚未以及时的方式对某一数目的心跳消息或其他健康检查做出响应。在至少一些实施方案中,DAG节点可负责报告任何明显的节点故障(例如,当连接意外丢失时,或当在大于阈值的时间段内未从邻居节点接收到消息时)到DCM。在一些实施方案中,DAG节点还可负责通知DCM可能导致DAG配置改变的即将发生的变化(例如,当节点计划离线以用于维护时)。在所描绘实施方案中,DCM可例如基于可实施在DCM集群的多个节点当中的共识协议来确定所指示配置改变(例如,失效节点的移除,或新节点的加入)是否变得有效(元素904)。例如,在一些实施中,由一个DCM节点进行的DAG节点已失效的确定可在从所述配置移除节点之前必须在集群的一个或多个其他节点处确认(例如,通过在其他DCM节点处审阅从DAG节点接收的心跳响应)。在其他实施中,可在无需利用基于共识的协议的情况下执行关于是否应用可能的配置改变的决策。在一些实施方案中,可确定或产生与DAG配置改变相关联的序号或逻辑时间戳,例如,用于包含在发送到DAG的其他节点的配置德尔塔消息中,使得可在DAG节点处按正确的次序处理配置改变。
独立于批准配置改变的方式,在一些实施方案中,在将所述改变视为完成之前,可必须在DCM的多个存储位置处复制配置改变的表示(元素907)。在其中DCM充当DAG配置信息的权威来源的实施方案中,将关于配置改变的信息保存在多个位置可为DCM的功能性的重要方面。在至少一些实施中,可复制仅所述配置的改变(而不是,例如,整个配置)。在已保存配置改变信息之后,可识别将从DCM发送对应的配置德尔塔消息(指示所述配置的仅实施改变,未必DAG的整个配置)前往的一组DAG节点(元素910)。在一些实施方案中,可将所有DAG成员(潜在地包含作为配置德尔塔消息中指示的配置改变的部分从DAG移除的节点)选择为用于配置德尔塔消息的目的地。在一个实施方案中,可选择仅假定为当前DAG成员的节点,例如,如果节点被移除或已知已失效,那么可不将配置德尔塔消息发送到节点。在其他实施方案中,可将成员的一些子集选择为目的地,且所述子集可负责将配置改变传播到剩余节点。在成员的子集被选择为目的地的实施方案中,DCM可必须在任何给定时间跟踪哪些改变已被传播到哪些成员。在已识别DAG节点的目的地集合之后,可将各自的配置德尔塔消息相对于彼此异步地发送到其,且无需请求在状态转变消息处理或状态转变请求处理中的任何暂停(元素913)。在至少一些实施方案中,配置德尔塔消息可包含与配置改变相关联的配置序号。在一些实施中,复合配置德尔塔消息可指示两个或两个以上改变(例如,失效节点的移除和替换节点的加入)。
图10是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可响应于接收到来自配置管理器的配置德尔塔消息而执行在复制DAG的成员节点处。在所描绘实施方案中,在从DCM接收包括配置改变序号的此类配置德尔塔消息后(元素1001),接收者DAG节点可例如通过比较新近接收的序号与先前接收的最高序号来确定其是否缺失任何先前配置德尔塔消息。如果接收者确定一个或多个配置德尔塔消息尚未被接收(元素1004),那么其可发送配置刷新请求到DCM(元素1007)。此类刷新请求可导致DCM重新发送缺失的一个或多个配置德尔塔消息,例如,或导致发送其中指示DAG的整个当前配置的不同类型的消息。
如果未检测到缺失配置德尔塔消息(也在对应于元素1004的操作中),那么接收者节点可将所接收的配置改变信息存储在本地存储器中的配置改变储存库中。储存库中的累积消息可用以更新接收者的DAG配置视图(元素1010)。更新DAG配置的本地视图可包含例如:确定待用于未来向外发出的和进入的状态转变消息的一个或多个复制路径的一个或多个DAG节点和/或边缘。如先前提及,由于消息递送的异步性质和由于网络的不同部分可体验不同的延迟,所以在一个DAG节点处获得配置德尔塔消息的顺序可与在另一节点处接收同一组配置德尔塔消息的顺序不同。因此,在给定时间点在两个不同节点处识别的复制路径可彼此不同。在所描绘实施方案中,如果复制路径上的直接前趋节点已改变或如果其直接后继已改变,那么接收者节点可采用其他动作。在一些实施方案中,如果直接后继者节点和直接前趋节点两者都不改变,那么配置德尔塔消息的处理可在将配置改变信息存储在接收者节点的本地存储器处(元素1027)之后结束。
直接前趋节点相对于DAG的节点C改变的情形的示例是复制路径从A到B到C改变为A到C的部分。如果更新配置涉及接收者的直接前趋节点的改变,且尚没有消息直接从新的直接前趋节点(如元素1013中所检测)被接收,那么接收者节点(当前示例中的节点C)可建立与新的直接前趋(当前示例中的节点A)的连接。另外,在至少一些实施方案中,接收者节点(例如,节点C)还可发送请求到新的直接前趋(例如,节点A),用于重新传输具有比接收者节点处的最近接收的序号高的序号的STM(元素1017)。如果节点C具有后继节点,那么其可继续传输任何待决状态转变消息到此类后继节点,而节点C等待从节点A接收请求的重新传输。
如果配置德尔塔消息指示接收者的直接后继节点已改变,(例如,当模式A接收上文论述的同一示例配置德尔塔消息时,其指示节点B已离开DAG),且尚没有消息从新的直接后继节点接收(元素1021),那么接收者节点可建立与新的后继节点的连接。在上述示例中,节点A可建立与节点C(其新的直接后继)的连接。随后可将状态转变消息转移到新的直接后继(元素1024)。
复制DAG节点的协调暂停
对于提供商网络操作者,可能致使大量应用的几乎同时停机的大规模故障事件存在显著的挑战性。其应用受持续停机影响的客户可能对提供商网络提供用于关键应用所需的服务水平的能力失去信心。尽管大规模故障事件的可能性可通过智能基础结构设计和通过实施可利用所述基础结构的高可用性特征的应用架构而降低,但其不可能完全地消除大规模故障。在至少一些实施方案中,因此可开发可能允许分布式应用从影响多个资源的故障较快速且清晰地恢复的技术。在采用上文所描述类型的复制DAG用于分布式应用状态管理的一些环境中,可使用协调暂停协议来支持从分布式故障的较有效且高效的恢复。在一个实施方案中,例如,响应于故障情形的检测,可通过配置管理器指导DAG的某一数目的节点来停止执行其正常应用状态转变处理操作(例如,接收状态转变请求消息,存储应用状态信息的本地副本,和沿着其复制路径传输状态转变请求)。在至少一些实施方案中,在暂停其操作之后,节点可使其本地应用状态记录与其他DAG节点同步,执行干净关闭和重新启动。在节点重新启动之后,其可报告回配置管理器,其可用于服务的恢复,且等待通过配置管理器对DAG的重新激活。
图11a-11h共同示出根据至少一些实施方案的操作的示例性顺序,所述操作可在此类协调暂停程序期间在复制DAG处执行。示出DAG中的每一节点可存储各自的一组提交记录,其中每一提交记录包含(或指示,例如经由指针)对应的提交序号(CSN)。从所述节点的角度来看,本地提交记录集因此可表示使用DAG来管理的应用的状态。经批准(但尚未提交)的状态转变的记录还可保持在一些或所有节点处,如先前描述。应注意,尽管本文在动态复制DAG的上下文中描述协调暂停技术,其中DCM如上文描述来传输配置德尔塔消息以保持DAG节点关于DAG配置改变而更新,但在一些实施方案中可采用类似的方法用于其他状态复制技术。例如,协调暂停技术还可用在其中使用停止一切重新配置时间间隔(在此期间以同步的方式来更新所有节点)来实施复制节点群组的配置改变的环境中,使得复制群组仅在所有节点已了解新配置之后变得可操作。因此,动态复制DAG可表示多节点状态复制群组(SRG)的仅一个示例,在不同实施方案可在所述多节点状态复制群组处实施协调暂停技术。至少一些此类SRG可具有类似于先前描述的DCM的其自身配置管理器,且可具于指定为提交者节点的一些节点和指定为非提交者节点的其他节点。
图11a中展示包括五个节点1102A、1102B、1102C、1102D和1102E的复制DAG连同DCM1180。在所描绘示例中,提交者节点1102E包括确定应起始协调暂停程序用于DAG的暂停触发检测器1106。在不同实施方案中,许多不同类型的原因可导致开始暂停程序。例如,暂停程序可由于以下原因而起始:(a)由于某一阈值数目的节点可能已失效(例如节点1102B和1102D处的故障,由“X”符号指示);(b)由于在提交者节点(或在某一其他节点)处接收配置德尔塔消息的速率超过阈值;(c)由于在某一DAG节点或DCM处丢失网络包或连接的比率超过阈值,等等。在所描绘实施方案中,提交者节点1102E发送DAG暂停请求1150,其包括在提交者节点的提交记录集中所表示的序号当中的最高序号。此最高序号可在本文被称作最高提交序号(HCSN)1108,且可用作在暂停程序的步骤中的一者期间在DAG节点当中使提交记录集同步的参考,如下文描述。在一些实施方案中,应起始暂停的初始确定可在非提交者节点中的一者处或在DCM 1180自身处进行,且可将特定提交序号(理想地但未必是HCSN)选择为目标序号,应使节点更新其提交记录集高达所述目标序号。
响应于接收到暂停请求,DCM 1180将HCSN保存在持久性存储器1175中,如图11b中展示。DCM接着可将各自的暂停命令1152发送到DAG节点的至少一子集,例如在所描绘示例性情形中分别将命令1152A和1152B发送到节点1102A和1102C。在一些实施方案中,DCM1180可将暂停命令发送到所有DAG节点,所述DAG节点为根据保存在DCM处的最新DAG配置的DAG的成员(包含可能已失效的节点,例如1102B和1102D)。暂停命令可包含HCSN 1108。
在接收到暂停命令后,DAG节点可停止处理状态转变请求/消息,且可代替开始处理以验证其提交记录集包含多达HSCN且包含对应于HSCN的提交记录的所有提交记录。例如,可能是以下情况:节点1102A和节点1102C可能尚未被提交者节点1102E通知关于序号小于或等于HCSN的一个或多个提交状态转变。在此类情形中,如图11c中展示,节点1102A可发送提交记录同步请求1172B到提交者节点1102E(如箭头标记“1a”所指示),且节点1102C可发送类似的提交记录同步请求1172B到节点1102E(如箭头标记“1b”所指示)。提交记录同步请求1172可分别包含在发送请求的节点处缺失哪些提交记录的指示,例如,节点1102A可指示其已经具有序号高达SN1的提交记录,而节点1102C可指示其缺失序号SN2、SN3和SN4的提交记录。接着可通过提交者节点分别将缺失的提交记录1174A和1174B发送到节点1102A和1102C,如箭头标记“2a”和“2b”所指示。节点1102A和1102C接着可将各自的同步确认1176A和1176B发送到DCM 1180,如箭头标记“3a”和“3b”所指示。DCM 1180可将节点1102A和1102C添加到在DCM的持久性存储器1175处维持的最新节点列表1133(即,已更新其提交记录集以匹配提交者节点1102E的提交记录集的节点),如箭头标记“4”所指示。
如图11d中展示,在所描绘实施方案中,DAG的节点可终止执行且自我重新启动。例如,失效节点1102B和1102D可重新启动作为从其故障恢复的部分。作为协调暂停程序的部分,节点1102A和1102C可在其提交记录集已与提交者节点的同步之后将其提交记录集(和/或与节点的操作相关的额外元数据)保存在本地存储器中,且接着起始受控的重新启动。在所描绘实施方案中,节点1102E可在其已发送暂停请求1150之后等待某一时间间隔(允许提交者节点对至少一些同步请求1172作出响应),将任何状态元数据保存到本地存储器,且接着起始其自身的受控重新启动作为暂停程序的部分。
在一些实施方案中,在DAG节点1102A-1102E恢复联机之后,其可每个发送各自的“可用于服务”消息到DCM 1180,如图11e中展示,且等待重新激活指令以恢复其应用状态转变处理操作。DCM可能够辨别(使用其最新节点列表1133)节点1102B和1102D的提交记录集可能不是最新的,且可因此发送各自的同步命令1194到节点1102B和1102D,如图11f中展示。在至少一些实施中,同步命令可指示HCSN 1108。响应于同步命令1194,节点1102B和1102D可每个发送其自身的提交记录同步请求1172C和1172D到已知为最新的节点,从而指示哪些提交记录在其各自的提交记录集中缺失。例如,节点1102B可将其同步请求1172C发送到节点1102A,而节点1102D可将其同步请求发送到节点1102E。在一些实施方案中,DCM可指定提交记录同步请求应被发送到的目的地节点。在一个实施方案中,所有非提交者DAG节点可必须使其提交记录集与提交者节点同步。节点1102B和1102D可分别接收其缺失的提交记录1174C和1174D,使得最终所有节点已使其提交记录集同步高达HCSN。在一些实施中,节点1102B和1102D可发送指示其提交记录集已被更新/同步的确认到DCM 1180。在至少一个实施方案中,DCM可扮演相对于上文关于图11f所描述的未在其最新节点列表中的那些节点而稍微较被动的角色。在此类实施方案中,当失效节点(例如1102B或1102D)恢复联机时,其发送消息到DCM以确定新近联机的节点是否缺失任何提交记录。DCM可通知所述节点(例如,通过仅指示HCSN),具有高达HCSN的序号的提交记录是所述节点变成最新而需要的。节点接着可负责使其自身最新,且一旦其已使提交记录同步高达HCSN即向DCM回报。因此,在此类实施方案中,DCM可不必发送同步命令1194;而是,新近联机的节点可采取主动以使其提交记录集同步。
在确认至少阈值数目的节点已更新提交记录集之后,DCM 1180可确定重新启动后DAG的配置。在一些情况下,可重新使用在暂停之前在使用中的同一配置,而在其他实施方案中可选择不同的配置。例如,可以是需要DAG具有最少四个节点的情况,因此最初可选择节点1102A-1102E中的仅四个。如图11g中展示,DCM 1180可发送各自的重新激活消息到选定的节点组(在所描绘示例中所有五个节点),从而指示DAG的当前配置。DAG节点接着可恢复正常操作,如图11h所指示。在一些实施方案中,未失效的至少一些DAG节点(例如,1102A、1102C和1102E)可不必自我重新启动。而是,在此类实施方案中,在使其提交记录集同步之后,此类节点中的一者或多者可仅使进一步状态转变处理延期,直到其接收到来自DCM的重新激活命令为止。
图12是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可在协调暂停程序期间执行在诸如复制DAG的SRG的提交者节点处。如元素1201中展示,提交者节点可确定用于SRG的协调暂停的触发准则已满足。多种不同的触发条件可导致协调暂停,包含例如,通过提交者节点检测到保持响应的SRG节点的数目已降到阈值以下,或发生SRG的配置改变的比率超过阈值。在一些情况下,资源工作负载水平或误差率可触发暂停,例如,如果丢失网络包的比率超过阈值,或如果意外终止连接的比率处于或高于最大可接受率。在一个实施方案中,SRG的非提交者节点或诸如DCM的配置管理器可最初检测到将要导致受控暂停的问题,且可将所述问题通知提交者节点。
在所描绘实施方案中,在确定将要起始受控暂停之后,提交者节点可暂停或停止其状态转变消息的正常处理/复制,且将任何显著的至今仍尚未保存的提交记录保存到本地存储器(元素1204)。提交者节点接着可将包含HCSN的指示的暂停请求(已被提交者节点存储的提交记录的转变的序号当中的最高提交序号)传输到SRG的配置管理器(例如,在复制DAG情况中的DCM)(元素1207)。HCSN可充当目标提交序号,SRG的当前活动节点将使其提交记录集同步高达所述目标提交序号。
在至少一些实施方案中,在其发送暂停请求之后,提交者节点可接收来自其他SRG节点的某一数目的提交记录同步请求(例如,已确定其不具有序号高达HCSN的全组提交记录的节点)(元素1210)。在所描绘实施方案中,提交者节点对在可配置时间窗期间接收的任何此类同步请求作出响应。提交者节点接着可任选地执行干净关闭和重新启动,且将可用于服务消息发送到SRG的配置管理器(元素1213)。在一些实施方案中,可省略干净关闭和重新启动,且提交者节点可仅发送可用于服务消息,或提交者节点可仅延期进一步状态转变相关处理直到从配置管理器接收到重新激活指令为止。最终,提交者节点可接收来自配置管理器的重新激活消息,指示DAG的当前暂停后配置,且提交者节点接着可按照所指示的配置来恢复状态转变相关的处理(元素1216)。在一些实施方案中,可以是以下情况:在新的暂停后配置中,提交者节点不再被授予提交者的角色;而是,其可例如被配置成接受器节点、中间节点或备用节点。
图13是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可在协调暂停程序期间执行在诸如复制DAG的状态复制群组的非提交者节点处。在正常操作期间,非提交者节点可在对应转变已被提交之后的某点将提交记录存储在本地存储器中;结果,非提交者节点的本地提交记录集可不必与提交者节点的提交记录集一样最新。如元素1301中展示,非提交者节点可接收来自配置管理器的暂停命令,指示HCSN作为非提交者节点将要使其本地提交记录集同步到的目标序号。
在接收到暂停命令后,非提交者节点可暂停或停止处理新的状态转变消息。如果具有比HCSN低的序号的一些提交记录在本地提交记录集中缺失,那么非提交者节点可将用于缺失记录的提交记录同步请求发送到提交者节点(或发送到配置管理器所指示作为缺失提交记录的来源的不同节点)(元素1304)。如果其提交记录集已经关于HCSN最新,那么所述非提交者节点可不需要在暂停程序的此阶段与其他节点通信。在所描绘实施方案中,在验证具有高达HCSN的序号的提交记录存储在本地存储器中之后,非提交者节点可将同步确认消息发送到配置管理器(元素1307)。非提交者节点接着可延期进一步应用状态转变处理,直到其被配置管理器重新激活为止。任选地,非提交者节点可执行干净关闭和重新启动,且在重新启动之后将“可用于服务”消息发送到配置管理器(元素1310)。响应于来自配置管理器的重新激活消息,非提交者节点可更新其SRG配置视图且恢复应用状态转变处理(元素1313)。在暂停后配置中,在一些情况下可通过配置管理器将不同的角色授予非提交者节点,例如非提交者节点的角色可改变为提交者节点。
图14是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可在协调暂停程序期间执行在诸如复制DAG的状态复制群组的配置管理器处。如元素1401中展示,配置管理器可接收来自SRG的提交者节点的暂停请求,指示来自其提交记录存储在提交者节点处的转变的序号当中的最高提交序号(HCSN)。在一些实施方案中,可在最终进行暂停SRG操作的决策之前,在配置管理器的各个节点当中采用共识协议,之后。配置管理器可将HCSN存储在持久性存储器中(元素1404)(例如,在配置管理器集群的若干节点处的各自存储装置处),且将指示HCSN的暂停命令发送到SRG的一个或多个其他节点(元素1407)。在一些实施方案中,可将暂停命令发送到SRG的所有已知成员,包含假定已失效的节点。SRG的接收者节点可每个验证其本地提交记录集含有对应于HCSN的提交记录(其在一些情况下可需要接收者节点获得如上所述的来自提交者节点的缺失提交记录)。在验证其提交记录集关于HCSN最新之后,暂停命令的接收者可向配置管理器发送指示其提交记录集现在最新的同步确认。因此,在接收到来自SRG节点的此类确认后,配置管理器可将所述节点添加到最新节点列表(元素1410)。
在一些实施方案中,配置管理器可等待接收来自SRG节点的指示其可用于服务的各自消息。在接收到来自节点的此类消息后(例如,在节点已完成干净关闭和重新启动之后,或在节点已在故障后恢复联机之后),配置管理器可确定所述节点是否在最新节点列表中。如果从其接收“可用于服务”指示的节点并未已知为关于提交记录最新,那么配置管理器可例如在显式同步命令中或响应于来自节点的隐式或显式查询而发送指示HCSN到节点(元素1413)。通过使用HCSN作为提交记录被更新高达的目标序号,节点接着可通过与已经最新的其他节点通信而更新其本地提交记录集。在一些实施方案中,配置管理器可在同步命令中包含过时节点将要从其获得缺失的提交记录的来源的指示。
在配置管理器已确认所需最少数目的SRG节点(a)可用于服务和(b)关于应用提交状态最新之后,配置管理器可使SRG的初始暂停后配置结束(元素1416)。配置管理器接着可将指示所述配置的重新激活消息发送到初始配置中的适当的节点组(元素1419)。在一些实施方案中,可将初始配置信息提供到节点作为一序列配置德尔塔消息。
在至少一些实施方案中,选定用于同步的目标序号(即,SRG的多个节点中的每一者将要更新其本地提交记录集高达的所述序号)未必需要为最高提交序号。例如,可能是以下情况:提交者节点处的最高提交序号是SN1,且归因于由于快速上升的大规模故障事件的检测而引起的暂停SRG的操作的紧急需要,SRG配置管理器可愿意允许节点在使其提交记录更新为较小序号(SN1-k)后暂停其操作。在一些实施中,SRG的节点可在暂停/重新启动之前使其提交记录同步到某一较低序号,且可在暂停之后同步到最高提交序号,例如在节点重新启动之后,且将“可用于服务”消息发送到配置管理器。如先前指出,在一些实施方案中,暂停程序可通过非提交者节点或通过配置管理器自身起始。
用于多数据存储事务的基于日志的乐观并发控制
在一些实施方案中,可使用上文所描述类型的复制DAG来实施乐观并发控制技术,所述技术使用使得能够支持涉及多个独立数据存储区的事务的日志记录服务。图15示出根据至少一些实施方案的示例性系统环境,所述环境包括支持可包含对多个数据存储区的写入的事务的持久性改变日志。系统1500展示可使用日志记录服务实例化的持久性改变日志1510。在所描绘实施方案中,可在日志记录服务处注册一个或多个数据存储区1530用于事务管理,诸如数据存储区1530A(例如NoSQL或非关系数据库)和数据存储区1530B(例如,关系数据库)。术语“并发控制”、“事务管理”和“更新管理”可在本文关于日志记录服务所提供的功能性而用作同义词。
在一些实施方案中,客户端1532可递交指示数据源集的注册请求,为此其希望使用用于特定应用的基于日志的事务管理,例如经由日志记录服务管理器1501所呈现的管理或控制平面编程接口。在一些实施方案中,持久性改变日志1510可响应于此类注册请求而实例化。大体来说,可创建给定持久性改变日志实例用于管理用于一个或多个基础数据存储区的事务,即,在至少一些部署中,可使用基于日志的事务管理用于单个数据存储区而不是同时用于多个数据存储区。如本文所使用,术语“数据存储区”可指广泛多种持久性或临时性数据储存库和/或数据消费者中的任一者的实例。例如,一些数据存储区可包括可能未必提供用于多项目事务的原生支持的持久性非关系数据库,而其他数据存储区可包括可能原生支持多项目事务的持久性关系数据库。在一些实施方案中,使得其用户能够存储任意大小的非结构化数据对象、可通过网络服务接口访问的提供商网络的网络可访问的存储服务可被注册为数据存储区中的一者。其他类型的数据存储区可包括存储器内数据库、分布式高速缓冲存储器的实例、网络可访问的块存储服务、文件系统服务或物化视图。消耗日志记录服务所记录的提交写入例如以产生新数据假影的实体可表示另一类型的数据存储区,且可在本文一般称为“数据消费者”。此类数据存储区可例如包含预计算查询结果管理器(PQRM)(如在数据存储区1530C的情况下),其负责根据通过日志记录服务管理的指定数据集而产生指定查询的结果(其中指定数据集可包含存储在一个或多个不同其他数据存储区处的对象)。在一些实施方案中,被配置成产生通过日志记录服务管理的一些或所有提交数据的时间点快照的快照管理器可表示另一类别的数据存储区。在不同实施方案中,可存储此类日志快照用于多种目的,诸如用于备份或用于离线工作负载分析。本文可使用术语“数据消费者”来指诸如PQRM和快照管理器的数据存储区。至少一些数据存储区可具有不同于其他者的读取接口1531,例如在所描绘实施方案中,数据存储区1530A的数据存储区(DS)读取接口1531A可包括不同于DS读取接口1531B或预计算查询接口1531C的API集、基于网络的接口、命令行工具或定制GUI(图形用户接口)。
在所描绘实施方案中,日志记录服务客户端1532可本地构建事务请求,且接着递交(或“提供”)事务请求用于由持久性改变日志1510批准和提交。在一个实施中,例如,日志记录服务的客户端库可使得客户端能够通过发布“事务开始”请求的逻辑等效物来起始候选事务。在候选事务内,客户端可在数据存储区1530处对选定对象集执行某一数目的读取,本地(例如,在本地存储器中)执行指向在一个或多个数据存储区处的提议写入集。客户端接着可通过发布“事务结束”请求的等效物来递交候选事务。在所描绘实施方案中,可通过日志的写入接口1512在与持久性改变日志1510相关联的冲突检测器1505处接收候选事务请求1516。大体来说,在至少一些实施方案中,给定事务请求1516可包含分别来自一个或多个数据存储区的一个或多个读取,和分别针对一个或多个数据存储区的一个或多个提议写入,其中被读取的数据存储区组可或不可与被写入的数据存储区组重叠。在一些实施方案中,可使用原生DS读取接口1531来执行读取(尽管如下文描述,在一些情形下客户端还可通过持久性改变日志1510来执行只读操作)。
在一些实施方案中,在给定事务请求中指示的至少一些写入可取决于所述读取中的一者或多者的结果。例如,请求事务可涉及从数据存储区DS1处的位置L1读取一个值V1,从数据存储区DS2处的第二位置L2读取第二值V2,计算函数F(V1,V2)且将所述函数的结果存储在某一数据存储区DS3处的位置L3处。在一些基于锁定的并发控制机制中,可必须在L1和L2处获得排它锁定以确保值V1和V2在L3更新之前不改变。在图15中示出的日志记录服务的乐观并发控制机制中,可能并不必须获得锁定。而是,在所描绘实施方案中,冲突检测器1505可至少部分基于事务描述符1516的内容和持久性改变日志1510的提交事务日志记录集1527来确定:在请求事务中读取的数据项目集从其各自的数据存储区被读取以来是否已更新。在至少一些实施方案中,可使用基于序号的技术来确定此类读取写入冲突是否存在,如下文进一步详细描述。如果冲突检测器1505确定在事务期间读取的数据一点也没被覆写,那么可接受请求事务用于提交,且可提交此类接受用于提交事务1514用于在持久性改变日志处复制对应的日志记录。术语“批准”和“接受”可在本文关于未拒绝的请求事务而用作同义词。在所描绘实施方案中,如果一些读取数据从发生对应的读取以来已更新(或如果由冲突检测器估计所述数据被更新的可能性大于阈值),那么可代替拒绝或中止所述请求事务1516。此类型的并发控制方法可认为是乐观的,因为最初可在读取写入冲突不可能的乐观假设下进行关于是否继续进行事务的写入集的决策。结果,在其中读取写入冲突实际上很少的情形中,可比使用较传统的基于锁定的技术更有可能的情况实现较高通量和较低响应时间。
在所描绘实施方案中,在接受事务用于提交的情况下,在认为所述提交是成功的之前,可在与持久性改变日志1510相关联的复制DAG的某一数目的节点处复制提交事务日志记录的内容(如下文关于图16进一步详细描述)。在所描绘实施方案中,如果未创建必要数目的副本,那么可拒绝或中止所述事务。提交所需的副本的数目可对于不同的应用或客户端而不同。提交事务日志记录还可在本文称作“提交记录”。在一些实施方案中,当提交请求事务时,可通知请求客户端1532。在至少一个实施方案中,客户端1532可被通知事务何时被拒绝,使得,例如,可产生和递交新的事务请求用于所需更新。
对于提交的每一事务,在至少一些实施方案中,可在持久性改变日志1532处产生和存储(例如,作为提交事务日志记录的副本中的每一者的部分)提交序号(或指示应用的提交状态的某一其他识别符)。此类提交序号可例如被实施为计数器或实施为逻辑时间戳,如上文关于在用于状态转变的复制DAG处使用的序号所论述。所述提交序号可例如在一些实施方案中由冲突检测器确定,或在其他实施方案中在持久性改变日志的不同部件处确定(诸如被使用的复制DAG的提交者节点)。在所描绘实施方案中,在提交给定事务且在持久性改变日志处存储其提交记录之后,可将事务的写入应用或传播到其针对的数据存储区1530中的一者或多者(或,如在PQRM 1530C的情况下,其中写入数据将要被消耗)。在一些实施中,可按异步方式将写入推进到目标数据存储区1530。因此,在此类实施中,在提交事务的时间(即,当所需数目的提交记录副本已被成功存储时)与提交事务的特定写入操作的有效负载到达对应数据存储区的时间之间可存在某一延迟。在图15中展示的实施方案中,可使用各自的异步写入应用器1517来将写入中的一些或全部传播到相关数据存储区。例如,写入应用器1517A被配置成应用与数据存储区1530A相关的写入1515A,写入应用器1517B推进与数据存储区1530B相关的写入,且写入应用器1517C推进将在数据存储区1530C处被消耗的写入。在一些实施中,写入应用器可包括持久性改变日志1510的子部件(例如,线程或处理程序),而在其他实施中,写入应用器1517可经实施为在持久性改变日志外部的实体。在一些实施方案中,给定写入应用器1517可负责将写入传播到一个以上数据存储区1530,或单个数据存储区1530可接收来自多个写入应用器1517的写入。在至少一个实施中,可使用拉取技术来将写入数据传播到数据存储区,例如,一个或多个数据存储区1530可将写入请求递交到持久性改变日志1510或写入应用器,而非在写入应用器主动下被提供写入数据。在将事务期间写入的数据应用到对应数据存储区之后,客户端1532可能够使用数据存储区的各自读取接口来读取更新数据。在一些实施方案中,写入应用器中的至少一者可能够执行同步写入(例如,当由日志记录服务明显指示进行时,或用于应用器所负责的所有写入)。例如,在通知客户端已提交所述事务之前,客户端可能希望确保给定事务的至少一个写入(诸如针对在事务中涉及的多个数据存储区当中的“主控”数据存储区的写入)已被应用。在一些实施方案中,可在事务请求1516中指示将被同步执行的特定写入。
在一些实施方案中,如下文进一步详细描述,给定事务请求1516可包含:事务的读取集的各自指示符(即,识别在事务期间读取的数据对象集的信息);事务的写入集(即,识别在事务被提交的情况下将被更新/写入的数据对象集的信息);写入有效负载(即,将被存储用于每一写入的数据字节集);和/或冲突检查定界符(应被检查以接受/拒绝所述事务的提交事务日志记录的子集的指示)。事务请求的这些组成要素中的一些或全部可连同事务的提交序号一起存储在对应的提交记录内。在至少一个实施方案中,持久性改变日志1510可例如响应于来自数据存储区的查询或来自日志记录服务客户端的查询而提供应用的最新提交状态的识别符1590(诸如,至此产生的最高提交序号)。在所描绘实施方案中,写入应用器可指示对应于其在数据存储区处应用的写入的提交序号。因此,在任何给定时间点,客户端1532可能够(例如,通过查询数据存储区)确定对应于在给定数据存储区1530处的最近应用写入的提交序号。
在至少一些实施方案中,在事务请求的产生期间(例如,通过日志记录服务的客户端库),可从在事务期间进行访问的数据存储区获得最近应用的提交时间戳,且可在事务请求中指示此类提交序号中的一者或多者作为冲突检查定界符。例如,考虑在特定客户端起始包含在数据存储区DS1处的位置L1的读取的事务之时的情形,对应于DS1处的最近应用写入的提交序号为SN1。在此示例中进一步假定,事务的读取集仅包括DS1的数据。在此类情形中,SN1可包含在事务请求1516中。冲突检测器可识别序号大于SN1的提交记录作为待被检查有用于请求事务的读取写入冲突的提交记录集。如果所识别提交记录的写入集中的任一者与请求事务的读取集重叠,那么可拒绝/中止所述事务;否则,在此示例性情形中可批准所述事务用于提交。
在所描绘实施方案中,日志记录服务可暴露一个或多个编程日志读取接口1513(例如,API、网页、命令行实用程序、GUI及其类似者),以使得客户端1532能够直接读取日志记录。在其他实施方案中,可能未实施允许直接访问改变日志1510的此类读取API。直接访问指示已提交的特定事务的日志记录以及确定所述事务提交的次序的能力可使得在一些实施方案中执行新类型分析而非直接仅访问数据存储区更有可能的情况(由于至少一些数据存储区可通常仅允许读取器看见数据对象的最新应用版本而不是数据对象的历史)。
图15中示出的乐观并发控制机制可允许支持比在至少一些情形中使用基础数据存储区的并发控制机制而可能的更复杂类型的原子操作。例如,一些高性能非关系数据存储区可仅允许单项目事务(即,一次可允许一个写入,但如果在单个批量更新中递交多个写入,那么可能未提供原子性/一致性保证用于一起进行的多个写入)。通过上文所描述的基于日志的方法,可相对轻松地支持包含对非关系数据存储区(和/或其他数据存储区一样)的多个位置的写入的单个事务。持久性改变日志1510连同相关联的冲突检测器1505可在本文称作基于日志的事务管理器。在一些实施方案中,写入应用器1517还可被视为事务管理器的子部件。
如上文提及,在一些实施方案中,可使用先前描述的复制DAG来实施持久性改变日志1510。图16示出根据至少一些实施方案的使用复制DAG 1640的持久性改变日志的示例性实施。在所描绘实施方案中,DAG所管理的应用状态转变对应于日志客户端1660请求的事务,作为包含针对一组一个或多个数据存储区的读取和写入的应用的部分。可将应用的状态建模为存储在本地存储器中在接受器节点1610、中间节点1612、提交者节点1614和备用节点1616处的各自的事务记录集1672,其中当前复制路径包括节点1610、1612和1614。在一些实施中,可存储用于批准(即,指示所述请求事务已被批准用于提交)和提交的单独事务记录,而在其他实施方案中,单个事务记录可与指示所述事务是否已被提交的字段一起存储。在所描绘实施方案中,序号或逻辑时间戳可被存储为事务记录中的至少一些的部分或由其指示。
在所描绘实施方案中,可通过实施在接受器节点1610处的冲突检测器来进行关于请求事务1650是否被批准用于提交的决策,但在其他实施方案中,冲突检测器可实施在复制DAG的外部。容错日志配置管理器164可将配置德尔塔消息异步发送到DAG节点1610、1612、1614和1616,其中每一此类消息指示DAG配置的改变而不是DAG的整个配置,且不需要DAG节点暂停处理客户端1660所提交的引入的事务请求的流。每一DAG节点可独立地处理或聚集所接收的配置德尔塔消息以得出当前DAG配置的其各自视图1674(例如,节点1610处的视图1674A、节点1612处的视图1674B、节点1614处的视图1674C和节点1616处的视图1674D)。至少一些视图1674可在给定时间点与其他节点处的那些视图不同;因此,在正常操作条件下,不同的DAG节点可不需要使其DAG配置视图彼此同步。指示被批准(但尚未提交)事务的消息1652A和1652B可分别从接受器节点1610和中间节点1612沿着复制路径传输。在所描绘实施方案中,提交者节点1614可将指示提交的消息1653传输到接受器节点和中间节点以及到备用节点1616。图16的实施方案中展示为在复制DAG外部的实体的异步写入应用器1692可将来自各个提交事务记录的写入传播到适当的数据存储区或数据消费者。在其他实施方案中,写入应用器可实施在复制DAG内,例如,作为在DAG节点内运行的各自处理程序。在一些实施中,仅DAG节点的子集可由应用器1692读取,以便将提交写入传播到其目的地数据源或数据消费者。在其他实施方案中,如图16中展示,应用器可读取来自DAG节点中的任一者的提交事务记录以推进如先前描述的写入有效负载的内容。
事务请求元素
图17示出根据至少一些实施方案的可由日志记录服务的客户端1732递交的事务请求描述符1744的示例性分量元素。如所展示,在所描绘实施方案中,事务描述符1744可包含冲突检查定界符1702、读取集描述符1704、写入集描述符1706、写入有效负载1708、和任选逻辑约束描述符1710。在所展示的示例中,日志记录服务客户端1732包括可被用来集合事务请求描述符的客户端库1756。在至少一些实施方案中,客户端库可自动地分别记录在事务期间从其读取数据的数据存储区1730A、1730B和1730C内的读取位置1761A、1761B和1761C,和/或将数据写入到的(在所描绘示例中为数据存储区1730C的)写入位置1771。在一些实施中,客户端库1756还可从数据源1730中的每一者获得其写入最近已被应用到数据存储区的最近事务的对应提交序号(CSN)。在一个实施方案中,将事务的读取中的任一者发布到对应数据存储区之前,可检索此类CSN,例如。在另一实施方案中,可刚好在发布针对当前事务内的数据存储区的第一读取之前从给定数据存储区1730检索CSN。
在所描绘实施方案中,可从将最近应用CSN提供作为输入的函数导出冲突检查定界符1702。例如,在一个实施中,可使用从在事务期间读取的所有数据存储区获得的CSN当中的最小序号。在另一实施中,可包含包括来自数据存储区中的每一者的CSN的向量或阵列作为事务请求描述符的冲突检查定界符1702。冲突检查定界符1702在本文还可称作提交状态识别符(CSI),因为其表示请求事务所取决于的一个或多个数据存储区的提交状态。在一些实施方案中,可将选定散列函数应用到读取位置1761A、1761B或1761C中的每一者以获得将被包含在读取描述符1704中的散列值集。类似地,可将选定散列函数(取决于实施,与用于读取描述符相同的函数或是不同函数)应用到事务的写入的位置以产生写入集描述符1706。在其他实施方案中,可不使用散列法;而是,例如,非散列位置识别符可用于读取集和写入集条目中的每一者。写入有效负载1708可包含针对包含在事务中的写入中的每一者将被写入的数据的表示。任选逻辑约束1710可包含用于重复检测/消除和/或用于在其他事务之前或之后顺序指定事务的签名,如下文进一步详细描述。在一些实施方案中,可存储事务请求描述符1744的内容的一些或全部作为在持久性改变日志1510处复制的事务状态记录的部分(例如,批准事务记录和/或提交事务记录)。
应注意,从其产生读取描述符和写入描述符的读取位置和写入位置可表示不同的存储粒度,或甚至在不同实施方案中的不同类型的逻辑实体,或用于不同的数据存储区。例如,对于包括非关系数据库的数据存储区,其中特定的数据对象由容器名称(例如表格名称)、用户名称(指示容器的所有者)和某一键集(例如,散列键和范围键)的组合表示,可获得作为元组(容器ID、用户ID、散列键、范围键)的函数的读取集。对于关系数据库,可使用元组(表格ID、用户ID、行ID)或(表格ID、用户ID)。
在各种实施方案中,事务管理器可负责使用事务请求的内容和持久性改变日志来识别事务请求中所指示的读取与日志中所指示的写入之间的冲突。对于相对简单的读取操作,基于进行读取的位置而产生散列值,以及比较所述读取位置的散列值与改变日志中所指示的写入的散列值可足够用于检测冲突。在一些实施方案中,对于较复杂的读取请求,使用基于位置的散列值可能并不总是足够的。例如,考虑以下情形:其中读取请求R1包括查询“从表格T1选择以字母‘G’开头的产品名称”,且原始结果集是“Good-product1”。如果在检查其写入W1取决于R1的结果的事务请求用于接受之时,将产品名称“Good-product2”插入到表格中,那么此将意味着如果R1在进行事务接受决策之时重新运行那么R1的结果集将改变,即使“Good-product1”数据对象的位置可能尚未修改且因此可能未被指示日志的写入记录。为了处置关于此类读取查询的读取写入冲突,或为了读取涉及值的范围的查询(例如,“选择产品价格在$10与$20之间的产品名称集),在一些实施方案中,可使用基于逻辑或谓词的读取集描述符。因此可将上文所描述的基于位置的读取集指示符视为可在各种实施方案中用于读取写入冲突检测的结果集改变检测元数据的仅一个示例类别。
读取写入冲突检测
图18示出根据至少一些实施方案的在基于日志的事务管理器处的读取写入冲突检测的示例。在所描绘示例中,展示存储在持久性改变日志1810处的事务提交记录(CR)1852按照从日志顶部到底部增加提交序号的次序布置。最新或最近提交事务由CR 1852F表示,具有提交序号(CSN)1804F和写入集描述符(WSD)1805F。CR 1852A、1852B、1852C、1852D和1852E中的每一者包括对应的CSN 1804(例如,分别CSN 1804A-1804E)和对应的WSD 1805(例如,WSD1805A-1805E)。
如所展示,事务请求描述符1844包含冲突检查定界符(或提交状态识别符)1842、读取集描述符1846和写入集描述符1848。(未展示请求事务的写入有效负载)。可需要基于日志的事务管理系统的冲突检测器来识别将被检查用于与请求事务的读取集冲突的日志1810的CR集。在所描绘实施方案中,冲突检查定界符1842指示可由冲突检测器使用来识别将被检查用于与请求事务读取写入冲突的CR集1809的开头的下界CSN,如由箭头标记“匹配”所指示。在一些实施方案中,集1809可包含以高达最近提交事务(CR 1852F)的匹配序号开始的所有CR。如果CR集1809所指示的写入中的任一者与事务请求1844中所指示的读取中的任一者重叠,那么此类读取写入冲突可导致请求事务的拒绝。在不同实施方案中可使用多种机制来检查此类重叠是否存在。在一个实施方案中,例如,可使用一个或多个基于散列法的计算或探测来确定,读取集描述符1846中表示的读取是否与CR集1809中所指示的写入冲突,因此避免CR集的依序扫描。在一些实施中,例如如果CR集中的记录数目低于阈值,那么可使用CR集1809的依序扫描。如果CR集1809中所指示的写入没有一者与请求事务的读取中的任一者重叠,那么可接受事务,这是因为在事务请求的制备期间读取的数据没有一者可能自其被读取以来改变。在至少一个实施方案中,事务请求描述符还可指示将被检查用于冲突的事务记录的序号的上界,例如冲突检查定界符可指示CS集1852内的开始点和结束点两者。
用于乐观的基于日志的并发控制的方法
图19是示出根据至少一些实施方案的可在日志记录服务处执行的控制平面操作的多个方面的流程图。所展示的管理或配置相关操作中的至少一些可由诸如图15中示出的日志记录服务管理器1501例如响应于在日志记录服务处实施的一个或多个管理编程接口的调用而执行。如元素1901中展示,可通过日志记录服务来注册一个或多个数据存储区用于事务管理,所述日志记录服务例如使用上文所描述的读取写入冲突检测方法来实施乐观并发控制机制。在不同实施方案中,可使用基于日志的方法来实施用于具有各自不同的读取接口的多种类型的数据存储区的事务管理,包含例如关系数据库、非关系数据库、存储器内数据库、提供商网络实施的存储服务、分布式高速缓冲存储器部件、预计算查询结果管理器、快照管理器等等的实例。在一些实施方案中,使用给定日志实例来管理的基础数据存储区中的一些或所有可能并不支持由一些传统关系数据库系统支持的至少一些ACID特性(原子性、一致性、隔离和耐久性)。
日志记录服务可识别将用于持久性改变日志的复制DAG节点的一组主机,所述持久性改变日志将被实施用于注册数据存储区(元素1904),例如在实施于提供商网络处的布建服务的帮助下。还可识别一个或多个主机用于复制DAG的配置管理器,例如如先前描述,可在一些实施中使用利用基于共识的协议来实施DAG配置改变的节点集群。可在选定主机处实例化复制节点和配置管理器。可配置基于日志的事务管理机制的其他部件,包含冲突检测器、一个或多个写入应用器和任选读取接口管理器用于持久性改变日志(元素1907)。在一些实施方案中,用于日志的读取接口管理器可负责响应于直接递交到日志(并非递交到注册数据存储区的读取接口)的读取请求。在一个示例性实施中,写入应用器可被实例化为订阅何时在日志处提交事务的通知的各自处理程序或线程。在一些实施方案中,冲突检测器可包括利用日志的读取接口的模块。冲突管理器的配置可包含例如,建立相对于对应于重复删除或顺序的约束检查操作来识别读取写入冲突的次序,向客户端提供响应的方式(例如,客户端是否和如何被通知事务拒绝/提交),等等。在一些实施方案中,冲突检测器、写入应用器和/或日志读取接口管理器可按多租户方式实施,例如,给定冲突检测器、写入应用器或读取接口管理器可将其服务提供到从其建立各自的日志实例的多个客户端。
在已配置持久性改变日志的各个部件之后,可例如通过将适当的网络地址和/或凭据提供到客户端来启用来自客户端的事务请求的流(元素1910)。在至少一些实施方案中,在日志记录服务处执行的控制平面操作可包含修整或存档所存储事务状态记录的部分(元素1914)。在一些此类实施方案中,例如,当用于给定持久性改变日志的事务记录的存储量超过阈值时,可将某一数目的最旧事务记录复制到不同的存储设施(诸如提供商网络存储服务,或用于最近事务记录集的较慢的存储装置组)。在另一实施方案中,可仅丢弃最旧事务记录。在至少一个实施方案中,可根据需要来执行其他控制平面操作,诸如在持续改变日志的一个实例与另一实例之间切换,例如,第一改变日志达到记录的阈值群体时。
图20是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可响应于从客户端接收的事务请求而执行在日志记录服务处。如元素2001中展示,日志记录服务的冲突检测器可接收事务T1的事务请求描述符,例如,指示冲突检查定界符、读取集和包括到一个或多个数据存储区处的各自位置的一个或多个写入的写入集,针对所述数据存储区已通过日志记录服务建立了持久性改变日志。冲突检查定界符可指示从其获得事务的读取的结果的一个或多个源数据存储区的提交状态,且因此可充当提交状态识别符(CSI)。在一些环境中CSI还可称作“快照序号”,因为其可对应于源数据存储区的时间点逻辑快照。可识别存储在持久性改变日志处的事务记录集S1,用于例如使用冲突检查定界符和存储在日志中的事务记录的序号来检查与请求事务的潜在冲突(元素2004)。在一个实施方案中,此类集S1可包含例如具有高于冲突检查定界符中所指示的序号的提交序号的事务的所有记录。
如果检测到读取写入冲突(元素2007),例如,如果请求事务的读取集至少部分地与集S1的事务中的一者的写入集重叠,那么可拒绝或中止事务T1(元素2022)。在一些实施方案中,可使用散列函数来确定此类重叠是否存在,例如如果读取集散列到与写入集相同的值,那么可假定已发生冲突。在一些实施中,可将拒绝的指示或通知提供到从其接收事务请求的客户端,从而使得客户端能够通过产生和递交另一请求描述符来重试所述事务。如果未检测到冲突(如也在元素2007中确定),那么可接受T1用于提交(元素2010)。在所描绘实施方案中,可起始T1的事务记录的复制到持久性存储器,例如在日志的多个复制DAG节点处。在一些实施方案中,当接受T1用于提交时可将接受序号指派到T1,且可将所述接受序号与至少一些事务请求描述符元素的内容一起存储在每一副本中。在至少一个实施方案中,如果所述事务最终获得提交,那么接受序号可充当提交序号。
取决于其事务被管理的应用的数据耐久性需要,可必须在事务T1的提交完成之前存储阈值数目的副本。如果保存足够数目的副本(如元素2013中确定),那么可认为提交是成功的,且在一些实施方案中可通知请求客户端所述提交完成(元素2014)。如果由于某种原因可保存到持久性存储器的副本数目低于所需阈值(如还在元素2013中所检测),那么可中止/拒绝所述事务(元素2022)。在T1提交之后,在所描绘实施方案中,可例如通过异步写入应用器来将T1的写入集中指示的写入操作应用到对应的数据存储区或数据消费者(元素2016)。在一些实施方案中,写入应用器中的至少一者可为同步的,例如,客户端可被通知:已只有在此类同步写入应用器完成事务的写入子集(已针对其同步地应用更新)之后才提交所述事务。在已应用更新之后,可响应于通过各自数据存储区的读取接口接收的客户端读取请求来读取更新数据元素(元素2019)。除了各个注册数据存储区所支持的读取接口之外,在至少一些实施方案中,持久性改变日志自身可例如通过日志记录服务的编程查询/读取接口而直接被查询事务记录内容。在一些实施中,通过此类日志记录服务接口而针对日志的读取可能够在一些情况下比针对数据存储区的读取更快速地看见写入操作的结果,这是因为数据存储区可依赖于异步应用器以传播已经存在于日志中的写入。在一些实施方案中,可使用同步应用器,其在于日志处提交事务时尽快传播写入到数据存储区。在其他实施方案中,每一应用器可具有可配置时间窗,在所述时间窗内必须将写入传播到对应的数据存储区或消费者,使得变得有可能调整事务提交与数据存储区处的事务的修改数据的出现之间的最大延迟。
图21示出根据至少一些实施方案的可用以实现各自特殊情况一致性目标的事务请求描述符的示例。在一个实施方案中,日志记录服务的客户端可能希望强制执行“写后读”一致性语义,据此写入变得在其一被提交时即可由所有读取器可见。为了确保写后读一致性,即,为了确保读取总是在数据被提交后即刻“看见”数据,客户端可能希望递交甚至用于只读事务的事务请求(以及用于含有写入的事务)。只读事务请求描述符(TRD)2144例如具有空写入集2106A和空写入有效负载2108A,但具有非空冲突检查定界符2102A和非空读取集描述符2104A。在接收到此类只读事务请求描述符后,冲突检测器可检查在请求中所指示的读取集与写入之间是否存在重叠,已提交具有高于冲突检查定界符中所指示的序号的序号的所述写入。如果检测到冲突,那么可拒绝只读事务,因此不允许读取可在产生冲突检查定界符之后已提交写入的位置,即使请求事务不包含取决于那些读取的任何写入。
在至少一些实施方案中,在某些状况下,可将只写事务请求递交到日志记录服务。对于一些应用,可能有以下情况:客户端至少在一些时间段期间或针对一些数据存储区不希望强制执行读取写入一致性检查。而是,客户端可希望在此类时间段期间使一些写入无条件地接受而用于提交。因此,可递交具有空读取集2104B和/或空冲突检查定界符2102B连同非空写入集描述符2106B和非空写入有效负载2108B的事务请求描述符2145。例如,当最初填入数据存储区或对象时,或在仅一个写入器客户端已知在某一时间段期间递交请求的情况下,可递交此类只写请求。
如先前提及,在一些实施方案中,可使用异步写入应用器来将提交写入的内容从持久性改变日志传播到各个数据存储区或数据消费者。由于写入传播的异步性质,可能有在某一时间点提交写入集尚未被传播到其预期数据存储区的情况。在至少一个实施方案中,有可能使用只写事务来冲洗此类未应用写入。例如,如果特定写入应用器WA1被配置成具有给定数据存储区DS1未解决的不超过N个未应用写入,那么客户端可递交针对DS1中的特殊写入位置WL1的只写事务请求描述符(诸如TRD 2145),其中特定或主要使用WL1用于冲洗未解决的提交写入。在一些情况下,此类TRD可根本不需要具有任何写入有效负载(例如,可将写入有效负载2108B设置为空)。当接受此类写入应用冲洗事务请求时,可将新的待决提交写入添加到日志和添加到WA1的未解决的请求队列。随着队列的长度生长,WA1可必须开始在队列中应用先前提交的写入以满足其不超过N个未应用写入的要求。在一些实施方案中,可定期地(例如,每秒一次)递交此类写入应用冲洗请求,以确保所述提交写入不保持待决太长时间。当写入应用冲洗事务的提交写入到达应用器的队列的头部时,在一些实施中,无需执行物理写入;而是,例如,应用器可仅发送对应于事务的提交序号到目的地数据存储区作为最近“应用”写入的指示符。
对于一些应用,客户端可希望在至少一些时间段期间强制执行严格的串行化。即,一次可允许仅一个(含有写入)事务继续进行,不管在事务期间的数据读取与可从起始事务准备以来已提交的写入之间是否存在任何冲突。在此类情形中,客户端可将严格串行化事务请求描述符2146连同其指示应用所使用的所有数据集的全部内容的读取集描述符2104C递交到日志记录服务。在散列值用作读取/写入位置的指示符且使用与写入集条目的逐位比较来检测冲突的一个实施中,例如,可将包含在读取集描述符2402C中的散列值设置为“1”的序列(例如,对于16位散列值为“1111111111111111”)。如果已提交CSN大于此类TRD2146的冲突检查定界符2102C的任何含有写入事务,那么可拒绝对应于TRD 2146的事务。因此,写入集描述符2106C和写入有效负载2108C所指示的写入将仅在描述符所指示的冲突检查时间间隔中未提交其他写入的情况下(不管此类写入的位置)才被提交。
重复删除和顺序约束
在一些实施方案中,日志记录服务的客户端可能希望确保不将重复条目写入到一个或多个数据存储区。在一个此类实施方案中,除了执行如上所述的读取写入冲突检测之外,日志记录服务还可必须强制执行事务请求中所指示的重复删除要求。图22示出根据至少一些实施方案的强制执行与在基于日志的事务管理器处接收的事务请求相关联的重复删除约束的示例。如所展示,事务请求描述符2244包括读取写入冲突检查定界符2212、读取集描述符2214、写入集描述符2216和逻辑约束定界符2218。图22中未展示TRD 2244的写入有效负载。在所描绘实施方案中,逻辑约束描述符2218包含指示其表示重复删除约束的LC类型字段2219、重复删除检查定界符2220和排除签名2222。
在所描绘实施方案中,为了确定是否接受请求事务,日志记录服务可能必须执行两个类型的检查:一个用于检测读取写入冲突,且一个用于检测重复。在所描绘实施方案中,持久性改变日志2210中的提交记录2252可每个包含各自的提交序号(CSN 2204)、写入集描述符(WSD)2205和重复删除签名(DDS)2206。为了确定读取写入冲突是否已发生,日志记录服务可识别CR集2209,在对应于读取写入冲突检查定界符2212的序号处开始且在最近提交记录2252F结束,将评估其写入集用于与请求事务的读取集描述符2214重叠。如果检测到读取写入冲突(即,如果存在此类重叠),那么可如先前描述拒绝请求事务。
为了确定请求事务的写入是否表示重复,在所描绘实施方案中可识别在对应于重复删除检查定界符2220的序号处开始且在最近提交记录2252F结束的另一CR集2259。对于CR集2259中的提交记录中的每一者,日志记录服务可检查提交记录中存储的重复删除签名中的任一者是否与请求事务的排除签名2222匹配。如果发现此类匹配,那么可检测到重复,且在此类情形中可拒绝请求事务,即使未检测到读取写入冲突。如果未检测到复制,且如果未检测到读取写入冲突,那么可接受所述事务用于提交。
在至少一些实施方案中,重复删除签名2206可表示通过对应事务按照与写入集描述符不同的方式(例如,通过使用不同散列函数而产生的散列值,或通过使用较多位存储的散列值)写入的数据项目。写入集的此类不同编码可出于许多原因中的任一者而用于重复删除相对读取写入冲突检测。例如,对于一些应用,客户端比其由于假阳性读取写入冲突检测而偶尔必须重新递交事务更加担心准确地检测重复。对于此类应用,读取写入冲突检测中误差的可接受率因此可高于重复检测误差的可接受率。因此,在一些实施中,输出值采用128位或256位的加密强度散列函数可用于重复删除签名,而使用16位或32位来存储输出的较简单散列函数可用于包含在WSD中的写入签名。在一些情形中,针对所使用的数据存储区的小子集可能需要重复删除,而可必须针对大的多的事务集来检查读取写入冲突。在此类情况下,可通过使用比在一些实施方案中的重复删除签名小的WDS签名来降低存储和网络连接资源利用率。在逻辑上分离读取写入冲突检测机制与重复删除检测机制而非出于其他原因合并所述两者也可以是有用的,例如,为了避免日志记录服务的用户当中的混乱,为了能够支持用于重复删除的分离计费等等。
在其他实施方案中,写入集描述符可用于读取写入冲突检测目的和重复删除目的两者(例如,可未使用单独排除签名)。类似地,在一些实施方案中,同一序号值可用作读取写入冲突检查定界符和重复删除检查定界符,即,也可检查针对读取写入冲突而检查的提交记录集用于重复。在至少一个实施方案中,可例如使用写入集描述符而通过默认执行重复删除,不需要将逻辑约束描述符包含在事务请求描述符中。
对于一些应用,客户端可能对指定事务集当中强制执行提交次序感兴趣,例如,递交分别用于事务T1、T2和T3的三个不同事务请求的客户端可能希望使T1在T2之前提交,且T3仅在T1和T2两者已提交之后才提交。在一些实施方案中,可使用第二类型的逻辑约束描述符来强制执行此类提交顺序约束。图23示出根据至少一些实施方案的强制执行与在基于日志的事务管理器处接收的事务请求相关联的顺序约束的示例。如所展示,事务请求描述符2344包括读取写入冲突检查定界符2312、读取集描述符2314、写入集描述符2316、以及与图22的逻辑描述符2218不同类型的逻辑约束定界符2318。图23中未展示TRD 2344的写入有效负载。在所描绘实施方案中,逻辑约束描述符2318包含指示其表示顺序约束的LC类型字段2319、顺序检查定界符2220、以及分别对应于事务T1和T2的所需顺序签名2322A和2322B。逻辑约束描述符2318可包含在TRD 2344中以确保仅在先前已提交事务T1和T2两者(由顺序签名2322A和2322B表示)的情况下提交请求事务。
为了确定是否接受请求事务,在图23中示出的示例中日志记录服务可再次必须执行两个类型的检查:一个用于检测读取写入冲突,且一个用于确保事务T1和T2已被提交。在所描绘实施方案中,持久性改变日志2310中的提交记录2352可每个包含各自的提交序号(CSN 2304)、写入集描述符(WSD)2305和顺序签名2306。为了确定读取写入冲突是否已发生,像以前一样,日志记录服务可识别CR集2309,在对应于读取写入冲突检查定界符2312的序号处开始且在最近提交记录2352F结束,将评估其写入集用于与请求事务的读取集描述符2314重叠。如果检测到读取写入冲突(即,如果存在此类重叠),那么可拒绝请求事务。
为了确定请求事务的顺序约束是否得到满足,在所描绘实施方案中可识别在对应于顺序检查定界符2320的序号处开始且在最近提交记录2352F结束的另一CR集2359。日志记录服务可必须验证,具有匹配所需签名2322A和2322B的顺序签名的各自提交记录存在于CR集2359内。如果在CR集2259中未发现所需签名2322中的至少一者,那么可能违反了顺序约束且可拒绝请求事务,即使未检测到读取写入冲突。如果在CR集2359中发现顺序签名两者,且如果未检测到读取写入冲突,那么可接受所述事务用于提交。
在不同实施方案中可使用多种技术来产生存储在CR 2352(且在TRD 2344中)的顺序签名。在一些实施方案中,其可由事务的写入集产生;在其他实施方案中,顺序签名可至少部分基于其他因素。例如,在一些实施方案中,请求客户端的身份除了可编码在写入签名中之外还可编码在顺序签名中,请求所述事务所在的时钟时间可编码在顺序签名中,或可编码从其请求事务的位置的指示,等等。在一些实施方案中,可应用如上文描述的关于使用与写入集签名不同的用于表示顺序签名的技术的类似考虑因素。因此,在一些实施方案中,可使用与用于产生写入集描述符内容不同的用以产生顺序签名的技术,即使顺序签名和写入集签名两者都从同一基础写入位置导出。例如,可使用不同的散列函数或不同的散列值大小。然而,在其他实施方案中,写入集描述符可用于读取写入冲突检测和顺序执行目的两者(例如,可未使用单独顺序签名)。类似地,在一些实施方案中,同一序号值可用作读取写入冲突检查定界符和顺序检查定界符,即,也可检查针对读取写入冲突而检查的提交记录集用于顺序。在一些情况下,与写入集无关的任意数字或字符串可用作顺序签名。在至少一个实施方案中,约束描述符可不包含LC类型字段;而是,约束的类型可由事务请求内的约束描述符的位置指示。在一些实施方案中,“所需”标记可与顺序签名相关联,且“排除”标记可与重复删除签名相关联,而不是例如使用LC类型字段。如先前在读取写入冲突检查定界符的上下文中提及,在一些实施方案中,也可在事务请求描述符内指定CSN上界以指示将要被检查用于约束检查的提交记录范围,而不是仅指定CSN下界。
在一些实施方案中,可强制执行比图23中所示的更复杂的顺序约束。例如,代替仅请求日志记录服务以验证在请求事务的提交之前事务T1和T2两者必须已被提交(按照任何次序),客户端可能够请求必须在T2之前已提交T1。类似地,在一些实施方案中,客户端可能够请求负排序要求:例如,某一事务集{T1,T2,Tk}应按照某一指定次序(或按照任何次序)在请求事务之前提交,且也不应提交某一其他事务集{Tp,Ts}。
在图22和图23中,在所展示的事务请求中指示单个类型的逻辑约束。在一些实施方案中,客户端可希望对各个事务强制执行若干不同类型的逻辑约束。图24示出根据至少一些实施方案的包括多个逻辑约束描述符的事务请求描述符的示例。将要应用一个顺序约束,且将要针对事务描述符2444所表示的同一请求事务来应用一个重复删除约束。在所描绘实施方案中,读取和写入集描述符包括用于每一数据项目读取或写入的32位(4字节)散列值。例如,各自的4字节读取散列签名2464A和2464B可表示读取集描述符2404中的两个数据项目位置,且各自的4字节写入散列签名2465A和2465B可包含在写入集描述符2406中以表示目标用于写入的两个位置(在事务被提交的情况下)。使用读取写入冲突检查定界符2402来选择持久性改变日志中序号范围的下界,将检查所述持久性改变日志的提交记录用于与请求事务的读取写入冲突。
在所描绘实施方案中,事务请求描述符2444还可包含顺序约束描述符2408A和重复删除约束描述符2408B。顺序约束描述符2408A可包含约束类型字段2409A、顺序检查定界符2410、以及对应于必须已针对将被接受的请求事务而完成提交的事务的一个或多个所需顺序签名诸如2412A和2412B。重复删除约束描述符2408B可包含约束类型字段2409B、重复删除检查定界符2420和重复删除排除签名2422。
如所展示,在所描绘实施方案中,所需顺序签名2412A、2412B和重复删除签名2422可分别包括128位(16字节)散列签名2466A、2466B和2467。因此,在所描绘示例中,逻辑约束签名可每个占据用于读取和写入集签名的每个数据项目所使用的位数的四倍,此相对于针对读取写入冲突检测而执行的比较可帮助减少针对逻辑约束相关比较的散列碰撞的数目。在一些实施方案中,诸如MD5的加密散列函数可用于顺序和/或重复删除签名。在至少一些此类实施方案,加密散列函数的使用可帮助减小评估逻辑约束时的误差到近零的可能性。尽管基于假阳性散列碰撞(例如基于假阳性读取写入冲突检测)的事务拒绝的适度地低比率可是可接受的,但至少一些客户端可更关心避免归因于假阳性散列碰撞的事务的接受(例如,在提交顺序的情况下),且使用加密强度散列函数可帮助避免此类不正确的事务接受。在一些实施中,客户端可能够选择散列函数以用于重复检测和/或用于顺序目的。在一些实施方案中,与图24中所示不同的散列函数和/或散列值长度可用于重复删除签名、顺序签名和/或读取或写入签名,例如,重复删除和顺序签名可在大小上不同。在至少一些实施方案中,读取或写入的数据项目的地址可用于读取/写入集签名、重复删除和/或顺序签名,例如,而不是使用由所述地址产生的散列值。在一个实施方案中,除了或代替将数据写入的位置,重复删除和/或写入签名还可从写入有效负载导出。
在一些实施方案中,还可在事务请求描述符中指定额外的逻辑约束,诸如数据完整性/有效性约束或提交最后期限约束。示例性数据完整性或有效性约束可需要例如,在不同值V2已经存储在DS1中或某一其他数据存储区中的情况下,特定值V1可仅存储在数据存储区DS1中。数据有效性约束可界定用于将被存储的指定数据类型或数据项目的可接受范围(对存储于指定数据存储区位置中的值无条件或有条件的)。提交约束可指示事务的提交应被完成的最后期限,意图是如果最后期限未满足那么应抛弃或中止所述事务。
图25是示出根据至少一些实施方案的操作的多个方面的流程图,所述操作可响应于指示一个或多个逻辑约束的事务请求而执行在日志记录服务处。在所描绘实施方案中,给定事务的提交要求可包含并发控制要求(例如,未发现上文所描述种类的读取写入冲突的要求)以及逻辑约束要求。在至少一些实施方案中,可支持重复删除和顺序逻辑约束两者用于单个事务(也可支持其他逻辑约束,但在图25中仅展示与重复删除和顺序有关的操作)。如元素2501中展示,可在与日志记录服务的特定持久性改变日志实例相关联的冲突检测器处接收包含事务T1的一个或多个逻辑约束描述符的事务请求描述符。对于每一逻辑描述符,可在所描绘实施方案中指定对应的检查定界符,以用以选择将被分析的提交记录集,从而确定逻辑约束是被满足还是违反。还可针对每一逻辑约束指定各自的一个或多个签名集。还可指示请求事务的读取集和写入集连同读取写入冲突检查定界符。如先前提及,在一些实施方案中,与用于检查读取写入冲突相同的定界符可用于一个或多个逻辑约束。而且,在至少一个实施方案中,逻辑约束可不需要单独的签名;而是,例如,写入集签名可用作重复删除和/或顺序签名。
通过使用读取写入冲突检查定界符,在所描绘实施方案中可识别将被分析的第一提交记录集CRS1。例如,此类集可包括其序号位于开始于读取写入冲突检查定界符处、高达最近存储提交记录的序号(或高达事务请求中所指示的不同上界)的范围中的那些提交记录。如果检测到读取写入冲突(元素2504)(例如,如果CRS1的提交记录中的任一者的写入集与请求事务的读取集重叠),那么可拒绝/中止事务(元素2531)。检查读取写入冲突还可在本文称作验证所述请求事务满足并发控制要求。在一些实施方案中,从其接收事务请求的客户端可被通知所述事务已中止。
如果未检测到读取写入冲突(也在对应于元素2504的操作中),那么在所描绘实施方案中可按顺序检查对应的描述符所指示的逻辑约束中的每一者。可检查序列中的下一逻辑约束描述符,且可基于与所述约束相关联的检查定界符而选择用于约束分析的新的提交记录集CRS-k(元素2507)。例如,CRS-k可包含序号在开始于定界符处且结束于最高记录提交序号处(或高达事务请求中所指示的不同上界)的范围中的所有提交记录。将被执行的分析可取决于逻辑约束描述符的类型。如果将要检查重复删除约束,且如果通过比较CDR-k的重复删除签名与请求事务而发现重复(元素2510),那么还可拒绝/中止所述事务(元素2531)。如果所述约束为重复删除约束且未发现重复(也如元素2510中所检测),且如果较多逻辑约束保持被分析,那么可检查下一逻辑约束描述符且可针对下一逻辑描述符重复对应于元素2507继续向前的操作。
如果约束描述符指示顺序约束(其指示提交事务的一个或多个所需签名),那么可检查用于顺序约束的CRS-k以确保实际上已存储所需签名用于已完成提交的事务。如果未发现所需事务的提交记录(如在元素2513中所检测),那么还可中止/拒绝所述请求事务(元素2531)。如果发现所需事务的提交记录(也在对应于元素2513的操作中),那么可完成顺序约束处理。如在读取写入冲突检测的情况下,在至少一些实施方案中,还可使用用于所述比较的散列函数来执行逻辑约束检查,因此避免扫描提交记录集的开销。如果剩余任何逻辑约束描述符(元素2516),那么可继而对其进行检查。如果没有逻辑约束描述符剩余(如也在元素2516中所检测),那么可接受所述事务用于提交。可在所描绘实施方案(元素2519)中起始用以将事务的提交记录保存在持久性存储器中的程序,例如在复制DAG的若干节点处。如果复制成功(例如,如果将提交记录的足够数目的副本成功地存储在各自存储装置处)(如元素2522中所检测),那么所述事务的提交可被视为完成。如果由于某种原因而未存储所需数目的副本,那么仍可拒绝/中止所述事务(元素2531)。在一些实施方案中,可将事务已被成功提交的通知传输到请求客户端(元素2525)。
在一些实施方案中,用以检查一个以上逻辑约束的操作可代替并行执行。在一个实施方案中,读取写入冲突检查和逻辑约束检查的任何组合可并行执行。在一些实施方案中,可将关于所指示逻辑约束中的每一者的响应提供到请求客户端,即使所述约束中的一者或多者并未满足。例如,在具有重复删除约束和顺序约束的事务请求的情况下,可检查顺序约束,即使重复删除约束并未满足,且可将两约束的评估结果提供到客户端。在一些实施中,客户端可能够显式地请求给定事务请求的逻辑约束的指定子集或全部将被检查。
应注意,在各种实施方案中,与图6、图7、图8、图9、图10、图12、图13、图14、图19、图20和图25的流程图中所示的那些操作不同的操作可用以实施上文所描述的应用状态管理、协调暂停、并发控制和逻辑约束管理的技术中的至少一些。在一些实施方案中,所展示的一些操作可未实施,或者可按不同次序实施,或者并行而不是顺序地实施(如上文关于图25所指示)。
使用案例
上文所描述的使用复制DAG来管理应用状态变化的包含基于日志的事务管理的技术可在多种实施方案中有用。随着越来越多的组织将其计算移往提供商网络环境,已开发出具有各自一致性语义和各自接口的多种分布式存储应用。一些较大应用可跨越多个数据存储区实例,且复制DAG和基于日志的事务管理技术可表示用以分布式存储应用管理的统一、灵活、可扩展且高度可用的方法。复制DAG节点即使在DAG配置的各自视图可至少临时分歧的情况下而在应用状态转变方面取得进展的能力可减少或消除可能在使用较少动态复制技术的情况下出现的处理应用请求中的至少一些“停止一切”暂停。基于日志的事务管理可能不仅允许跨数据存储区事务(以及用于可能不支持原子多写入事务的数据存储区的多项目事务),而且可有助于诸如自动查询响应产生、快照产生及其类似者的特征。可使用日志记录服务的自身读取接口来启用跨越多个数据存储区执行数据分析的全新方式。
在一些提供商网络环境中,通过复制DAG进行的基于日志的事务管理可用以存储实施在提供商网络处的另一网络可访问服务的控制平面配置信息,诸如虚拟化计算服务、存储服务或数据库服务。在此类情形中,使用日志来管理的事务可表示网络可访问服务的各个资源的配置的改变(诸如在虚拟计算服务情况下的计算实例或虚拟化主机)。
说明性计算机系统
在至少一些实施方案中,实施本文所述技术(包含用以实施复制DAG的各个部件和/或用于事务管理的日志记录服务的技术)中的一者或多者的一部分或全部的服务器可包含通用计算机系统,所述通用计算机系统包含一个或多个计算机可访问介质或被配置来访问一个或多个计算机可访问介质。图26示出此类通用计算装置9000。在所说明实施方案中,计算装置9000包含通过输入/输出(I/O)接口9030耦接到系统存储器9020(其可包括非易失性存储器模块和易失性存储器模块两者)的一个或多个处理器9010。计算装置9000还包含耦接到I/O接口9030的网络接口9040。
在各种实施方案中,计算装置9000可以是包含一个处理器9010的单处理器系统,或包含若干处理器9010(例如两个、四个、八个或另一合适数目)的多处理器系统。处理器9010可以是能够执行指令的任何合适处理器。例如,在各种实施方案中,处理器9010可以是实施多种指令集架构(ISA)中任一架构的通用或嵌入式处理器,诸如x86、PowerPC、SPARC或MIPS ISA或者任何其他合适的ISA。在多处理器系统中,每一处理器9010可通常但并非必须实施同一ISA。在一些实施中,可代替或者除了常规处理器使用图形处理单元(GPU)。
系统存储器9020可被配置来存储可由处理器9010访问的指令和数据。在至少一些实施方案中,系统存储器9020可包括易失性部分和非易失性部分两者;在其他实施方案中,可仅使用易失性存储器。在各种实施方案中,系统存储器9020的易失性部分可使用任何合适的存储器技术来实施,所述存储器技术诸如静态随机存取存储器(SRAM)、同步动态RAM或任何其他类型的存储器。对于系统存储器的非易失性部分(例如其可包括一个或多个NVDIMM),在一些实施方案中可使用基于闪存的存储器装置,包含NAND闪存装置。在至少一些实施方案中,系统存储器的非易失性部分可包含电源,诸如超级电容器或其他电力存储装置(例如,电池)。在各种实施方案中,基于忆阻器的电阻性随机存取存储器(ReRAM)、三维NAND技术、铁电RAM、磁阻RAM(MRAM)或者各种类型的相变存储器(PCM)中的任一种可至少用于系统存储器的非易失性部分。在所说明实施方案中,实施一个或多个期望功能的程序指令和数据(诸如上文所述的那些方法、技术和数据)被展示为作为代码9025和数据9026存储在系统存储器9020内。
在一个实施方案中,I/O接口9030可被配置成协调处理器9010、系统存储器9020以及装置中的任何外围装置之间的I/O业务,所述外围装置包含网络接口9040或其他外围接口,诸如各种类型的持久性和/或易失性存储装置。在一些实施方案中,I/O接口9030可执行任何必要的协议、时序或其他数据变换,以便将来自一个部件(例如,系统存储器9020)的数据信号转换成适合于由另一部件(例如,处理器9010)使用的格式。在一些实施方案中,I/O接口9030可包含对于通过各种类型外围总线附接的装置的支持,诸如外围部件互连(PCI)总线标准或通用串行总线(USB)标准的变体,例如。在一些实施方案中,I/O接口9030的功能可划分到两个或多个单独部件中,诸如北桥和南桥,例如。而且,在一些实施方案中,I/O接口9030的功能性中的一些或全部(诸如通向系统存储器9020的接口)可直接并入到处理器9010中。
网络接口9040可被配置成允许数据在计算装置9000与附接到一个或多个网络9050的其他装置9060(例如如图1至图25中所示出的其他计算机系统或装置)之间进行交换。在各种实施方案中,网络接口9040可支持通过任何合适的有线或无线通用数据网络(诸如各类以太网网络)进行通信,例如。另外,网络接口9040可支持通过电信/电话网络(诸如模拟语音网络或数字光纤通信网络)、通过存储区域网络(诸如光纤信道SAN)或者通过任何其他合适类型的网络和/或协议进行通信。
在一些实施方案中,系统存储器9020可以是计算机可访问介质的一个实施方案,所述计算机可访问介质被配置成存储如上文针对图1至图25所描述用于实施对应方法和设备的实施方案的程序指令和数据。然而,在其他实施方案中,可在不同类型的计算机可访问介质上接收、发送或存储程序指令和/或数据。一般来说,计算机可访问介质可包含非暂时性存储介质或存储器介质,诸如磁性或光学介质,例如通过I/O接口9030耦接到计算装置9000的磁盘或DVD/CD。非暂时性计算机可访问存储介质还可包含可作为系统存储器9020或另一类型的存储器被包含在计算装置9000的一些实施方案中的任何易失性或非易失性介质,诸如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等。此外,计算机可访问介质可包含经由通信介质(诸如网络和/或无线链路)传递的传输介质或信号,诸如电信号、电磁信号或数字信号,诸如可通过网络接口9040来实施。多个计算装置中的部分或全部(诸如图26中所示出的那些)可用于实施各种实施方案中的所描述功能性;例如,在多种不同的装置和服务器上运行的软件部件可合作来提供功能性。在一些实施方案中,除了或者代替使用通用计算机系统来实施,所描述功能性的部分可使用存储装置、网络装置或专用计算机系统来实施。如本文所使用的术语“计算装置”是指至少所有这些类型的装置,并且不限于这些类型的装置。
鉴于以下条款,上述实施方案可更好地理解:
1.一种系统,其包括:
一个或多个计算装置,其被配置来:
响应于通过实施在提供商网络处的多数据库日志记录服务来注册多个数据存储区用于事务管理的请求,包含实施第一组数据访问接口的第一数据存储区和实施第二组数据访问接口的第二数据存储区,指定所述日志记录服务的特定持久性改变日志来存储针对所述多个数据存储区的一个或多个数据存储区的写入的表示;
在所述多数据库日志记录服务的冲突检测器处接收由客户端请求的事务的表示,其中所述事务包含针对所述第一数据存储区的至少第一写入操作以及针对所述第二数据存储区的至少第二写入操作;
在所述冲突检测器处至少部分基于所述表示的内容和至少部分基于所述特定持久性改变日志的内容来确定所述事务将被提交;
将指示所述事务的一个或多个日志记录添加到所述多数据库日志记录服务的所述特定持久性改变日志;
将所述第一写入操作应用到所述第一数据存储区,且将所述第二写入操作应用到所述第二数据存储区;
响应于使用所述第一组数据访问接口的针对所述第一数据存储区的第一查询,提供包含所述第一写入操作的结果的第一响应;
响应于使用所述第二组数据访问接口的针对所述第二数据存储区的第二查询,提供包含所述第二写入操作的结果的第二响应;以及响应于通过由所述多数据库日志记录服务所界定的编程查询接口的针对所述日志记录服务的第三查询,提供第三响应,所述第三响应包含所述第一写入操作和所述第二写入操作中的一者或多者的结果。
2.如条款1所述的系统,其中所述第一数据存储区和所述第二数据存储区中的每一数据存储区包括以下各项中的一者:非关系数据库系统、关系数据库系统、实施允许访问非结构化数据对象的web服务接口的存储服务、存储器内数据库或分布式高速缓冲存储器的实例。
3.如条款1所述的系统,其中所述特定持久性改变日志包括多个副本节点,其中所述多个副本节点中的每一节点将所述一个或多个日志记录的日志记录的副本存储在各自存储装置处。
4.如条款1所述的系统,其中所述一个或多个计算装置经进一步配置来:
根据至少所述第一写入操作的所述结果来更新物化视图。
5.如条款1所述的系统,其中所述一个或多个计算装置经进一步配置来:
至少部分基于至少所述第一写入操作的所述结果来产生用于第四查询的预计算结果;以及
响应于接收到所述第四查询,提供所述预计算结果。
6.一种方法,其包括:
通过一个或多个计算装置执行:
实例化特定持久性改变日志来存储针对一个或多个数据存储区的写入的表示,所述数据存储区包含实施第一组数据访问接口的第一数据存储区;
接收由所述第一数据存储区的客户端请求的事务的表示,其中所述事务包含针对存储在所述第一数据存储区处的数据对象的至少第一写入;
至少部分基于所述表示的内容和至少部分基于所述特定持久性改变日志的内容来确定所述请求事务将被提交;
将指示所述第一写入的日志记录添加到所述特定持久性改变日志;以及
将所述第一写入的指示从所述特定持久性改变日志传播到所述第一数据存储区。
7.如条款6所述的方法,其中所述第一数据存储区不支持用于包含一个以上写入的操作集的原子性,其中由所述客户端请求的所述事务包含针对第二数据对象的第二写入,进一步包括通过所述一个或多个计算装置来执行:
继确定所述请求事务将被提交之后,
将所述第二写入的指示添加到所述特定持久性改变日志;以及
将所述第二写入的指示传播到所述第一数据存储区。
8.如条款6所述的方法,其中所述特定持久性改变日志包括多个副本节点,其中所述多个副本节点中的每一节点将所述日志记录的副本存储在各自存储装置处。
9.如条款8所述的方法,其中所述多个副本节点的每一副本节点为有向非循环图(DAG)的成员,其具有相关联的DAG配置管理器负责将DAG成员改变消息传播到所述多个副本节点。
10.如条款8所述的方法,其中所述多个副本节点包含在提供商网络的第一数据中心处的第一副本节点和在所述提供商网络的第二数据中心处的第二副本节点。
11.如条款6所述的方法,其进一步包括通过所述一个或多个计算装置来执行:
根据所述第一写入的所述结果来更新物化视图。
12.如条款6所述的方法,其进一步包括通过所述一个或多个计算装置来执行:
至少部分基于所述第一写入的所述结果来产生用于查询的预计算结果;以及
响应于接收到所述查询,提供所述预计算结果。
13.如条款6所述的方法,其进一步包括通过所述一个或多个计算装置来执行:
接收通过日志记录服务注册所述一个或多个数据存储区用于事务管理的请求,其中所述实例化所述特定持久性改变日志是响应于注册所述一个或多个数据存储区的所述请求。
14.如条款6所述的方法,其进一步包括通过所述一个或多个计算装置来执行:
响应于使用所述第一组数据访问接口的针对所述第一数据存储区的第一查询,提供包含所述第一写入的结果的响应;以及
响应于通过日志记录服务的编程查询接口的针对所述特定持久性改变日志的第二查询,提供包含所述第一写入的结果的第二响应。
15.如条款6所述的方法,其中所述第一数据存储区包括实施在提供商网络处的网络可访问服务的控制平面配置信息,且其中所述事务包括所述网络可访问服务的特定资源的配置的改变。
16.如条款6所述的方法,其进一步包括通过所述一个或多个计算装置来执行:
通过与所述特定持久性改变日志相关联的快照管理器来存储所述特定持久性改变日志的至少一部分的内容的时间点快照。
17.一种存储程序指令的非暂时性计算机可访问存储介质,所述程序指令在被执行于一个或多个处理器上时:
在日志记录服务处接收客户端所请求的事务的表示,其中所述事务包含针对存储在第一数据存储区处的数据对象的至少第一写入;
至少部分基于所述表示的内容至少部分基于特定持久性改变日志的内容来确定所述请求事务将被提交;
起始指示所述第一写入的日志记录到所述特定持久性改变日志中的插入;以及
将所述第一写入传播到所述第一数据存储区。
18.如条款17所述的存储程序指令的非暂时性计算机可访问存储介质,其中由所述客户端请求的所述事务包含针对第二数据对象的第二写入,进一步包括通过所述一个或多个计算装置来执行:
继确定所述请求事务将被提交之后,
起始所述第二写入的指示到所述特定持久性改变日志的插入;以及
将所述第二写入传播到目的地数据存储区。
19.如条款18所述的存储程序指令的非暂时性计算机可访问存储介质,其中所述目的地数据存储区是所述第一数据存储区,且其中所述第一数据存储区不支持用于包含一个以上写入操作的操作集的原子性。
20.如条款18所述的存储程序指令的非暂时性计算机可访问存储介质,其中所述目的地数据存储区是具有不同于所述第一数据存储区的访问接口的第二数据存储区。
21.如条款17所述的存储程序指令的非暂时性计算机可访问存储介质,其中所述特定持久性改变日志包括多个副本节点,其中所述多个副本节点中的每一复本节点将所述日志记录的副本存储在各自存储装置处。
22.如条款21所述的存储程序指令的非暂时性计算机可访问存储介质,其中所述多个副本节点的每一副本节点为有向非循环图(DAG)的成员,其具有相关联的DAG配置管理器负责将DAG成员改变消息传播到所述多个副本节点。
另外,鉴于以下额外条款,上述实施方案也可更好地理解:
1.一种系统,其包括:
一个或多个计算装置,其被配置来:
实例化包括用以复制特定应用的状态信息的多个节点的状态复制群组(SRG),其中所述SRG的至少一些节点存储所述应用的各自提交记录集,其中提交记录集的每一提交记录包括指示相对于其他状态转变来提交所述应用的状态转变的次序的提交序号(CSN),且其中所述SRG包括被配置来提交请求状态转变的提交者节点;
响应于已满足阈值条件的检测在所述提交者节点处确定所述SRG的状态转变处理操作将被暂停;
从所述提交者节点将指示存储在所述提交者节点处的所述提交记录集的所述CSN当中的最高提交序号(HCSN)的暂停请求传输到所述SRG的容错配置管理器;
将来自所述配置管理器的各自暂停命令传输到所述SRG的包含第二节点的一个或多个其他节点,其中所述暂停命令指示所述HCSN;
响应于接收到来自所述配置管理器的暂停命令而暂停所述第二节点处的状态转变处理操作;
通过所述第二节点验证所述第二节点的提交记录集包含具有所述HCSN的提交记录;以及
通过所述提交者节点和所述第二节点来延期状态转变操作的进一步处理,直到接收到来自所述配置管理器的重新激活消息为止。
2.如条款1所述的系统,其中已满足所述阈值条件的所述检测包括确定度量在可接受范围之外,其中所述度量包括以下各项中的一者或多者:(a)所述SRG的活动节点的数目;(b)从所述SRG的选定节点处的所述容错配置管理器接收的SRG配置德尔塔消息的速率;或(c)与所述SRG的选定节点的客户端连接数目。
3.如条款1所述的系统,其中所述一个或多个计算装置经进一步配置来:
响应于接收到来自所述容错配置管理器的所述暂停命令而通过所述第二节点确定在所述第二节点处的所述提交记录集不包含包括HCSN的提交记录;以及
通过所述第二节点从所述提交者节点请求包含包括所述HCSN的提交记录的一个或多个提交记录。
4.如条款1所述的系统,其中所述第二节点包括在特定主机处的第一执行线程,其中所述一个或多个计算装置经进一步配置来:
在验证包括所述HCSN的所述提交记录存储在所述第二节点的提交记录集中之后,重新启动所述第一执行线程。
5.如条款4所述的系统,其中所述一个或多个计算装置经进一步配置来:
在已发送所述暂停命令之后通过所述容错配置管理器确定,其提交记录已被更新高达所述HCSN的可用SRG节点的数目超过阈值;以及
通过所述容错配置管理器将包含所述SRG的目标配置的表示的各自重新激活请求传输到其提交记录集已被更新高达所述HCSN的每一节点。
6.一种方法,其包括:
通过一个或多个计算装置执行:
确定包括多个节点的状态复制群组(SRG)的状态转变处理操作将被暂停,其中指定所述SRG复制包括应用的各自提交记录集的状态信息,其中所述提交记录集的每一提交记录具有指示在所述SRG处提交所述应用的对应状态转变的次序的相关联提交序号(CSN);
识别所述SRG的一个或多个节点的提交记录集将被同步高达的目标CSN;
将来自所述SRG的配置管理器的各自暂停命令传输到所述SRG的所述一个或多个其他节点,其中所述暂停命令指示所述目标CSN;
通过所述一个或多个其他节点的特定节点验证,对应于所述目标CSN的提交记录存储在所述特定节点的提交记录集中;以及
通过所述特定节点暂停状态转变处理操作。
7.如条款6所述的方法,其中所述SRG的所述状态转变处理操作将被暂停的所述确定是响应于度量在可接受范围之外的检测,其中所述度量包括以下各项中的一者或多者:(a)所述SRG的活动节点的数目;(b)从所述SRG的选定节点处的所述配置管理器接收的SRG配置德尔塔消息的速率;或(c)与所述SRG的选定节点的客户端连接数目。
8.如条款6所述的方法,其中在所述SRG的提交者节点处执行所述SRG的所述状态转变处理操作将被暂停的所述确定,其中所述提交者节点负责提交所述应用的一个或多个请求状态转变,且其中所述目标CSN是所述提交者节点的所述提交记录集的所述CSN当中的所述最高CSN。
9.如条款6所述的方法,其进一步包括在所述验证之前通过所述一个或多个计算装置来执行:
响应于接收到来自所述配置管理器的暂停命令,通过所述特定节点确定在所述第二节点处的所述提交记录集不包含对应于所述目标CSN的提交记录;以及
通过所述特定节点从所述SRG的不同节点请求包含对应于所述目标CSN的提交记录的一个或多个提交记录。
10.如条款6所述的方法,其中所述特定节点包括在特定主机处的第一执行线程,进一步包括通过所述一个或多个计算装置来执行:
继所述暂停之后重新启动所述第一执行线程。
11.如条款6所述的方法,其进一步包括通过所述一个或多个计算装置来执行:
继所述验证之后在所述配置管理器处接收来自所述特定节点的所述特定节点已使其提交记录集更新高达所述目标CSN的确认;以及
通过所述配置管理器将所述特定节点包含在所述SRG的最新节点的集合中。
12.如条款11所述的方法,其进一步包括通过所述一个或多个计算装置来执行:
继所述暂停之后在所述配置管理器处接收来自所述SRG的第二多个节点的指示所述各自节点可用于服务的各自消息,其中所述第二多个节点包含提交者节点、所述特定节点和第三节点,;
通过所述配置管理器使用所述最新节点集合来确定所述第三节点的提交记录集不包含对应于所述目标CSN的提交记录;以及
通过所述配置管理器将所述目标CSN的指示传输到所述第三节点。
13.如条款12所述的方法,其进一步包括通过所述一个或多个计算装置来执行:
在所述配置管理器处接收所述第三节点的提交记录集已被更新高达所述目标CSN的确认;
通过所述配置管理器确定,其提交记录已被更新高达所述目标CSN的可用SRG节点的数目超过阈值;以及
通过所述配置管理器将包含所述SRG的目标配置的表示的各自重新激活请求传输到其提交记录集已被更新高达所述目标CSN的每一节点。
14.如条款6所述的方法,其中所述SRG的所述多个节点包括包含从接受器节点到提交者节点的复制路径的有向非循环图,进一步包括通过所述一个或多个计算装置来执行:
在所述状态转变处理操作将被暂停的所述确定之前在所述接受器节点处接收来自客户端的提交所述应用的特定状态转变的请求;
在所述接受器节点处存储指示已接受所述特定状态转变用于复制的记录;
通过所述复制路径将提交所述特定状态转变的所述请求从所述第二节点传播到所述提交者节点;
通过所述提交者节点确定,指示所述特定状态转变已被存储的各自记录所在的所述SRG的节点数目高于复制阈值,以及
在所述提交者节点处存储对应于所述特定状态转变的提交记录。
15.如条款6所述的方法,其中所述应用包括以下各项中的一者:数据库服务、日志记录服务、或提供商网络服务的控制平面部件。
16.一种存储程序指令的非暂时性计算机可访问存储介质,所述程序指令在被执行于一个或多个处理器上时:
确定目标提交序号(CSN),所述CSN将用以在状态复制群组(SRG)处的应用状态转变处理操作的暂停之前使与所述SRG的多个节点当中的特定应用相关的状态信息同步,其中所述多个节点包含第一节点和第二节点,其中所述第一节点和第二节点的每一节点存储所述特定应用的各自提交记录集,且其中所述集的每一提交记录具有指示在所述SRG处提交所述对应状态转变的次序的相关联的各自CSN;
通过所述SRG的配置管理器将所述目标CSN存储在持久性存储装置处;
从所述配置管理器将指示所述目标CSN的各自暂停命令传输到所述第一节点和所述第二节点中的至少一个节点;以及
响应于在所述配置管理器处接收的指示,继在所述第一节点和所述第二节点处的操作的各自暂停之后,所述第一节点和所述第二节点可用于操作的恢复,
验证其提交记录集包含对应于所述目标CSN的提交记录的所述SRG的可用节点的数目超过阈值;以及
将重新激活消息传输到其提交记录集包含对应于所述目标CSN的提交记录的可用节点的至少子集。
17.如条款16所述的非暂时性计算机可访问存储介质,其中所述指令在被执行于所述一个或多个处理器处时:
从所述第一节点接收暂停所述应用状态转变处理操作的请求,其中所述第一节点是负责提交请求状态转变的提交者节点,且其中所述请求包括所述目标CSN。
18.如条款16所述的非暂时性计算机可访问存储介质,其中所述指令在被执行于所述一个或多个处理器处时:
响应于度量在可接受范围之外的检测而确定暂停所述应用状态转变处理操作,其中所述度量包括以下各项中的一者或多者:(a)SRG的活动节点的数目;(b)从所述SRG的选定节点处的所述配置管理器接收的SRG配置德尔塔消息的速率;或(c)与所述SRG的选定节点的客户端连接数目
19.如条款16所述的非暂时性计算机可访问存储介质,其中所述SRG的所述多个节点包括有向非循环图。
20.如条款16所述的非暂时性计算机可访问存储介质,其中所述指令在被执行于所述一个或多个处理器时利用共识协议来确定所述SRG的所述状态转变处理操作将被暂停。
另外,鉴于以下条款,上述实施方案可更好地理解:
1.一种系统,其包括:
一个或多个计算装置,其被配置来:
在经实例化用于一个或多个数据存储区的基于日志的事务管理器处接收来自客户端的请求事务的事务描述符,其中对应于将被检查而确定是否提交所述请求事务的第一逻辑约束,所述事务描述符指示(a)约束类型和(b)一个或多个数据签名;
通过所述基于日志的事务管理器使用对应于存储在特定持久性日志中的提交事务的至少一些事务记录来确定,所述请求事务关于并发控制要求集是可提交的;
通过所述基于日志的事务管理器来识别存储在所述特定持久性日志中的将被检查而用于检查所述第一逻辑约束的事务记录的子集,通过所述基于日志的事务管理器来比较所述一个或多个数据签名的内容与存储在事务记录的所述子集中的其他数据签名;
通过所述基于日志的事务管理器至少部分基于一个或多个比较的结果来确定所述第一逻辑约束被所述请求事务满足;以及
通过所述基于日志的事务管理器来提交所述请求事务。
2.如条款1所述的系统,其中所述第一逻辑约束的所述约束类型是重复删除,且其中为了确定所述第一逻辑约束被满足,所述一个或多个计算装置经进一步配置来验证所述事务描述符中所指示的所述一个或多个数据签名的特定数据签名与事务记录的所述子集中存储的数据签名不匹配。
3.如条款1所述的系统,其中所述第一逻辑约束的所述约束类型是提交顺序,且其中为了确定所述第一逻辑约束被满足,所述一个或多个计算装置经进一步配置来验证所述事务描述符中所指示的所述一个或多个数据签名的特定数据签名与事务记录的所述子集中存储的数据签名匹配。
4.如条款1所述的系统,其中对应于将被检查以确定是否提交所述请求事务的第二逻辑约束,所述事务描述符指示不同于所述第一逻辑约束的所述约束类型的第二约束类型。
5.如条款1所述的系统,其中所述事务描述符至少包含第一定界符,所述第一定界符将用以识别将被检查以检查所述第一逻辑约束的事务记录的所述子集。
6.一种方法,其包括:
通过一个或多个计算装置执行:
在基于日志的事务管理器处接收指示对请求事务的第一逻辑约束的事务描述符;
识别将被检查而用于检查所述第一逻辑约束的存储在特定持久性日志中的事务记录的子集,
比较所述事务描述符中所指示的一个或多个数据签名的内容与存储在事务记录的所述子集中的一个或多个数据签名;
至少部分基于所述比较的结果来确定所述第一逻辑约束被所述请求事务满足;以及
响应于确定已满足所述请求事务的一个或多个提交要求,包含满足所述第一逻辑约束的要求,提交所述请求事务。
7.如条款6所述的方法,其中所述第一逻辑约束包括重复删除约束,其中所述事务描述符中所指示的所述一个或多个数据签名包含表示所述请求事务的写入操作所针对的位置的特定重复删除签名,且其中所述第一逻辑约束被所述请求事务满足的所述确定包含验证所述特定重复删除签名与存储在事务记录的所述子集中的另一重复删除签名不匹配。
8.如条款6所述的方法,其中所述第一逻辑约束包括提交顺序约束,其中所述事务描述符中所指示的所述一个或多个数据签名包括顺序签名,且其中所述逻辑约束被所述请求事务满足的所述确定包括验证所述特定顺序签名与存储在事务记录的所述子集中的另一顺序签名匹配。
9.如条款6所述的方法,其中所述事务描述符指示对所述请求事务的第二逻辑约束。
10.如条款9所述的方法,其中所述第一逻辑约束包括重复删除约束,且所述第二逻辑约束包括提交顺序约束。
11.如条款6所述的方法,其中所述一个或多个提交要求包括并发控制要求。
12.如条款6所述的方法,其中所述事务描述符至少包含第一定界符,所述第一定界符将用以识别将被检查以检查所述第一逻辑约束的事务记录的所述子集。
13.如条款12所述的方法,其中所述第一定界符包括对应于特定事务的提交的逻辑时间戳,其中在所述接收所述事务描述符之前提交所述特定事务。
14.如条款12所述的方法,其中所述事务描述符指示第二逻辑约束,且其中所述事务描述符包括不同的定界符,所述不同的定界符将用以识别将被检查以检查所述第二逻辑约束的事务记录的不同子集。
15.如条款6所述的方法,其中所述事务描述符包括指示所述请求事务的目标写入位置的特定写入签名,其中所述一个或多个数据签名包括对应于所述目标写入位置的特定重复删除签名,其中所述特定重复删除签名不同于所述特定写入签名。
16.如条款6所述的方法,其中所述请求事务包含来自数据存储区的一个或多个读取,包括以下各项中的一者:(a)关系数据库;(b)非关系数据库;(c)存储器内数据库;(d)实施web服务接口的存储服务;(e)文件系统;或(f)分布式高速缓冲存储器的实例。
17.一种存储程序指令的非暂时性计算机可访问存储介质,所述程序指令在被执行于一个或多个处理器上时:
在基于日志的事务管理器处接收指示对请求事务的第一逻辑约束的事务描述符;
识别将被检查而用于检查所述第一逻辑约束的存储在特定持久性日志中的事务记录的子集,
比较所述事务描述符中所指示的一个或多个数据签名的内容与存储在事务记录的所述子集中的一个或多个数据签名;
至少部分基于比较所述一个或多个数据签名的所述内容的结果来确定所述第一逻辑约束被所述请求事务满足;以及
响应于已满足所述请求事务的一个或多个提交要求的确定,包含满足所述第一逻辑约束的要求,提交所述请求事务。
18.如条款17所述的存储程序指令的非暂时性计算机可访问存储介质,其中所述第一逻辑约束包括以下各项中的一者:重复删除约束或提交顺序约束。。
19.如条款17所述的存储程序指令的非暂时性计算机可访问存储介质,其中所述一个或多个一个或多个提交要求包括并发控制要求。
20.如条款17所述的存储程序指令的非暂时性计算机可访问存储介质,其中所述事务描述符至少包含第一定界符,所述第一定界符将用以识别将被检查以检查所述提交顺序约束的事务记录的所述子集。
另外,鉴于以下条款,上述实施方案可更好地理解:
1.一种系统,其包括:
一个或多个计算装置,其被配置来:
至少部分基于从容错有向非循环图(DAG)配置管理器接收的配置德尔塔消息的第一序列而在指定复制应用的状态的节点的DAG的第一非提交者节点处识别通往所述DAG的第一提交者节点的第一复制路径的至少一部分,其中所述DAG的至少一个其他节点已接收来自所述容错DAG配置管理器的配置德尔塔消息的不同序列;
从所述第一非提交者节点来传输用于在沿着所述第一复制路径的一个或多个节点的各自本地存储装置处进行复制的状态转变消息,所述状态转变消息指示(a)通过客户端请求的第一候选状态转变的批准,和(b)指示在所述第一非提交者节点处相对于其他候选状态转变而处理所述第一候选状态转变的次序的序号;
响应于通过所述容错DAG配置管理器进行的所述第一复制路径的特定节点将从所述DAG移除的确定,
起始指示所述特定节点从所述DAG的移除的各自配置德尔塔消息从所述容错DAG配置管理器到所述DAG的一个或多个剩余节点的传输,无需指导所述一个或多个剩余节点暂停状态转变的处理。
2.如条款1所述的系统,其中由所述一个或多个剩余节点中的第一剩余节点接收的特定配置德尔塔消息并不指示所述DAG的完整成员。
3.如条款1所述的系统,其中所述容错DAG配置管理器包括使用基于共识的协议来确定所述特定节点将从所述DAG移除的多个配置节点。
4.如条款1所述的系统,其中所述一个或多个计算装置经进一步配置来:
响应于已创建所述候选状态转变的记录的阈值数目的副本的确定而在所述第一提交者节点处存储已提交所述候选状态转变的指示;
向至少所述第一非提交者节点通知已提交所述候选状态转变;以及
向所述客户端通知已提交所述候选状态转变。
5.如条款1所述的系统,其中配置德尔塔消息的所述第一序列包括第一配置德尔塔消息其后接着第二配置德尔塔消息,且其中配置德尔塔消息的所述第二序列包括所述第二配置德尔塔消息其后接着所述第一配置德尔塔消息。
6.一种方法,其包括:
通过一个或多个计算装置执行:
将对应于请求状态转变的状态转变消息从复制节点的有向非循环图(DAG)的第一非提交者节点传播到所述DAG的第一提交者节点,,其中所述状态转变消息包含指示相对于其他请求状态转变而批准所述请求状态转变的次序的序号;
响应于通过DAG配置管理器确定特定节点将被添加到所述DAG,起始指示所述特定节点到所述DAG的所述添加的配置德尔塔消息从所述DAG配置管理器到所述DAG的一个或多个其他节点的传播,无需指导所述一个或多个其他节点暂停状态转变消息的处理。
7.如条款6所述的方法,其中所述配置德尔塔消息并不指示所述DAG的完整成员。
8.如条款6所述的方法,其进一步包括通过所述一个或多个计算装置来执行:
响应于通过所述DAG配置管理器确定将从所述DAG移除不同的节点,将指示所述不同节点从所述DAG的所述移除的第二配置德尔塔消息从所述DAG配置管理器传播到所述DAG的至少第一剩余节点,无需指导所述第一剩余节点暂停状态转变消息的处理。
9.如条款8所述的方法,其中所述不同节点是所述第一剩余节点的直接前趋,其进一步包括:
在所述第一剩余节点处确定指示从所述不同节点接收的最近状态转变消息的最高接收序号;以及
至少部分基于所述最高接收序号来将传输具有在范围内的序号的状态转变消息的请求从所述第一剩余节点传输到所述DAG的第二剩余节点,其中所述第二剩余节点在所述不同节点的移除之前是所述不同节点的直接前趋。
10.如条款6所述的方法,其中所述请求状态转变包括针对存储在数据库服务处的数据对象的写入操作。
11.如条款6所述的方法,其中所述请求状态转变包括日志消息到日志记录服务的特定日志中的插入。
12.如条款6所述的方法,其中所述DAG配置管理器包括多个配置节点,其中所述特定节点将被添加的所述确定包括通过所述多个配置节点来使用基于共识的协议。
13.如条款6所述的方法,其中所述一个或多个其他节点包含第一节点和第二节点,进一步包括通过所述一个或多个计算装置来执行:
在于所述第一节点处接收指示所述DAG的不同节点的移除的配置德尔塔消息之前,以及继于所述第二节点处接收指示所述不同节点的所述移除的配置德尔塔消息之后:
通过所述不同节点接收来自所述第二节点的不同状态转变消息;
在所述不同节点处复制对应于所述不同状态转变消息的记录;以及
通过所述不同节点将所述不同状态转变消息传输到所述第一节点。
14.如条款6所述的方法,其进一步包括通过所述一个或多个计算装置来执行:
响应于已创建所述请求状态转变的表示的阈值数目的副本的确定而在所述第一提交者节点处存储已提交所述请求状态转变的指示;
向至少所述第一非提交者节点通知已提交所述请求状态转变;以及
向从其接收实施所述状态转变的请求的客户端通知已提交所述状态转变。
15如条款6所述的方法,其进一步包括通过所述一个或多个计算装置来执行:
实例化所述DAG的一个或多个备用节点;
在已于阈值数目的DAG节点处复制所述请求状态转变的各自表示之后,将所述状态转变消息传输到所述一个或多个备用节点的特定备用节点;
在所述特定备用节点处存储所述请求状态转变的记录;以及
选择所述特定备用节点作为用于以下各项中的一者的替代者:(a)所述DAG的失效非提交者节点;或(b)所述DAG的失效提交者节点。
16.如条款6所述的方法,其中所述第一非提交者节点包括在提供商网络的第一数据中心处的第一主机处执行的处理程序,且其中所述第一提交者节点包括在所述提供商网络的不同数据中心处的不同主机处执行的不同处理程序。
17.一种存储程序指令的非暂时性计算机可访问存储介质,所述程序指令在被执行于一个或多个处理器上时实施经建立以复制状态信息的DAG的特定节点,其中所述特定节点被配置来:
从DAG配置管理器接收多个配置德尔塔消息,其中所述多个配置德尔塔消息的特定配置德尔塔消息指示以下各项中的一者或多者:(a)节点到所述DAG的添加;或(b)节点从所述DAG的移除;
继接收来自所述DAG配置管理器的特定配置德尔塔消息之后,指示已从所述DAG移除在所述特定节点处从其接收状态转变消息的直接前趋节点,
使用至少所述特定配置德尔塔消息来识别不同的直接前趋节点,以及
将用于状态转变消息的请求传输到所述不同直接前趋节点。
18.如条款17所述的非暂时性计算机可访问存储介质,其中所述特定节点被配置来:
继接收所述特定配置德尔塔消息之后且在接收用于状态转变消息的所述请求的响应之前,将特定状态转变消息传输到所述特定节点的直接后继节点。
19.如条款17所述的非暂时性计算机可访问存储介质,其中所述特定节点被配置来:
继接收来自所述DAG配置管理器的不同配置德尔塔消息之后,指示已从所述DAG移除直接后继节点,
使用至少所述不同配置德尔塔消息来识别不同的直接后继节点,状态转变消息将从所述特定节点被发送到所述后继节点,以及
起始与所述不同直接后继节点的网络连接的建立。
20.一种存储程序指令的非暂时性计算机可访问存储介质,所述程序指令在被执行于一个或多个处理器上时实施经建立以复制状态信息的节点的DAG的配置管理器,其中所述配置管理器被配置来:
至少部分基于共识协议来确定将从所述DAG移除所述DAG的特定节点,其中所述特定节点占据所述DAG内的特定位置;
从存储在所述配置管理器处的所述DAG的配置的持久性表示移除所述特定节点;以及
将指示所述特定节点已从所述DAG移除的配置德尔塔消息传输到所述DAG的一个或多个剩余节点,无需请求所述一个或多个剩余节点暂停与所述应用的状态转变相关的处理。
21.如条款20所述的存储程序指令的非暂时性计算机可访问存储介质,其中所述配置管理器被配置来:
响应于所述特定节点可用于服务作为所述DAG的成员的确定,识别用于所述特定节点的所述DAG内的不同位置;以及
将指示所述特定节点在所述DAG内的所述不同位置处已被添加到所述DAG的另一配置德尔塔消息传输到所述DAG的所述一个或多个剩余节点,无需请求所述一个或多个剩余节点暂停与所述应用的状态转变相关的处理。
22.如条款20所述的非暂时性计算机可访问存储介质,其中所述配置德尔塔消息并不指示所述DAG的完整成员。
23.如条款20所述的非暂时性计算机可访问存储介质,其中所述配置管理器被配置来:
识别在所述特定节点从所述DAG移除之前指派到所述特定节点的特定角色,其中所述角色包括以下各项中的一者:接受器节点、中间节点或提交者节点;以及
将所述特定角色指派到所述DAG的不同节点,其中所述不同节点包括以下各项中的一者:(a)所述特定节点在所述移除之前的后继节点;或(b)所述DAG的备用节点。
另外,鉴于以下条款,上述实施方案可更好地理解:
1.一种存储程序指令的非暂时性计算机可访问存储介质,所述程序指令在被执行于一个或多个处理器上时:
在基于日志的事务管理器处接收来自客户端的请求事务的事务描述符,其中所述事务描述符至少包括:(a)在所述请求事务期间从其读取数据的源数据存储区的第一提交状态识别符(CSI);(b)指示在所述请求事务期间从其读取数据的一个或多个对象的各自读取签名;以及(c)指示响应于所述请求事务的提交而将数据写入到的一个或多个对象的各自写入签名;
通过所述基于日志的事务管理器使用所述第一CSI来识别存储在特定持久性日志中的事务记录的子集,所述特定持久性日志在提交所述请求事务之前将被检查用于冲突,其中所述特定持久性日志包括对应于与包含所述源数据存储区的一个或多个数据存储区相关联的先前提交事务的事务记录,
响应于通过所述基于日志的事务管理器进行的所述请求事务的所述读取签名所指示的所述对象中没有一者已被事务记录的所述子集中所指示的写入操作修改的确定,接受所述请求事务用于提交。
2.如条款1所述的非暂时性计算机可访问存储介质,其中包含在所述事务描述符中的特定读取签名包括从对应于从其读取数据的所述一个或多个对象的一个或多个读取位置的特定读取位置产生的第一散列值,且其中包含在所述事务描述符中的特定写入签名包括从对应于将数据写入到的一个或多个对象的一个或多个写入位置的特定写入位置产生的第二散列值。
3.如条款1所述的非暂时性计算机可访问存储介质,其中所述读取签名中所指示的所述一个或多个对象包括第一数据存储区处的第一对象,其中所述CSI包括对应于所述第一数据存储区处的先前提交事务的第一逻辑时间戳。
4.如条款1所述的非暂时性计算机可访问存储介质,其中所述读取签名中所指示的所述一个或多个对象包括第一数据存储区处的第一对象和第二数据存储区处的第二对象,其中所述CSI是至少部分基于以下各项来确定的:(a)对应于所述第一数据存储区处的第一先前提交事务的第一逻辑时间戳;和(b)对应于所述第二数据存储区处的第二先前提交事务的第二逻辑时间戳。
5.如条款1所述的非暂时性计算机可访问存储介质,其中所述事务描述符包括将被写入到第一写入位置的数据有效负载,其中所述指令在被执行于所述一个或多个处理器处时:
继用于提交的所述请求事务的接受之后,存储对应于所述事务请求的事务记录的一个或多个副本;
提供已提交所述请求事务的指示;以及
相对于已提交所述请求事务的所述指示异步地起始将所述数据有效负载传播到所述第一写入位置的操作。
6.一种方法,其包括:
通过一个或多个计算装置执行:
接收请求事务的事务描述符,其中所述事务描述符至少包括:(a)冲突检查定界符;(b)指示在所述请求事务期间从其读取数据的一个或多个对象的读取集描述符;以及(c)指示响应于所述请求事务的提交而将数据写入到的一个或多个对象的写入集描述符;
使用所述冲突检查定界符来识别存储在特定持久性日志中的事务记录的子集,所述特定持久性日志在提交所述请求事务之前将被检查用于冲突,
响应于确定所述读取集描述符中所指示的所述对象中没有一者已被事务记录的所述子集中所指示的写入操作修改,接受所述请求事务用于提交。
7.如条款6所述的方法,其中所述读取集描述符包括从对应于从其读取数据的所述一个或多个对象的一个或多个读取位置的特定读取位置产生的第一散列值,且其中所述写入集描述符包括从对应于将数据写入到的所述一个或多个对象的一个或多个写入位置的特定写入位置产生的第二散列值。
8.如条款6所述的方法,其中所述冲突检查定界符包括对应于特定事务的提交的逻辑时间戳,其中在所述接收所述事务描述符之前提交所述特定事务。
9.如条款6所述的方法,其中所述读取集描述符中所指示的所述一个或多个对象包括在第一数据存储区处的第一对象,进一步包括通过所述一个或多个计算装置来执行:
通过基于日志的事务管理器的客户端侧部件将对第一逻辑时间戳的第一请求递交到所述第一数据存储区,所述第一逻辑时间戳对应于包含在所述第一数据存储区处的所述第一请求的接收之前已应用到所述第一数据存储区的最近写入的先前提交事务;以及
通过所述客户端侧部件选择所述第一逻辑时间戳作为所述冲突检查定界符。
10.如条款9所述的方法,其中所述读取集描述符中所指示的所述一个或多个对象包括在第二数据存储区处的第二对象,进一步包括通过所述一个或多个计算装置来执行:
在所述客户端侧部件处从所述第二数据存储区获得第二逻辑时间戳,所述第二逻辑时间戳对应于包含已被应用到所述第二数据存储区的不同写入的不同的先前提交事务,其中所述不同写入是在将所述第二逻辑时间戳提供到所述客户端侧部件之前已应用到所述第二数据存储区的最近写入;
其中所述选择所述第一逻辑时间戳作为所述冲突检查定界符包括确定所述第一逻辑时间戳小于所述第二逻辑时间戳。
11.如条款6所述的方法,其中所述事务描述符包括将被写入到所述写入集描述符中所指示的第一写入位置的数据有效负载,进一步包括通过所述一个或多个计算装置来执行:
继接受所述请求事务用于提交之后,存储对应于所述事务请求的事务记录的一个或多个副本;
提供已提交所述请求事务的指示;以及
相对于所述提供指示异步地计划将所述数据有效负载写入到所述第一写入位置的操作。
12.如条款6所述的方法,其中所述读取集描述符中所指示的所述一个或多个对象包括位于第一数据存储区处的对象,且其中所述写入集描述符中所指示的所述一个或多个对象包括位于不同数据存储区处的另一对象。
13.如条款6所述的方法,其进一步包括:
接收请求只读事务的第二事务描述符,其中所述第二事务描述符包括:(a)第二冲突检查定界符;以及(b)指示在所述只读事务期间从其读取数据的一个或多个读取位置的第二读取集描述符;以及
响应于确定所述请求只读事务的至少一个读取位置对应于继所述第二冲突检查定界符所指示的操作之后而更新的写入位置,提供已拒绝所述只读事务的指示。
14.如条款6所述的方法,其进一步包括:
接收请求只写事务的第二事务描述符,其中所述第二事务描述符包括指示将数据写入到的特定写入位置的第二写入集描述符;
产生对应于所述只写事务的提交的逻辑时间戳;
确定对应于在所述只写事务尚未被计划之前提交的特定事务中请求的写入的至少一个写入操作,以及
计划所述至少一个写入操作。
15.如条款6所述的方法,其中所述读取集描述符和所述写入集描述符中的至少一个描述符指示存储在以下各项中的一者中的对象:非关系数据库系统、关系数据库系统、实施允许访问非结构化数据对象的web服务接口的存储服务、存储器内数据库或分布式高速缓冲存储器的实例。
16.一种系统,其包括:
一个或多个计算装置,其被配置来:
接收来自客户端的请求事务的事务描述符,其中所述事务描述符至少包括:(a)冲突检查定界符;以及(b)指示在所述请求事务期间从其读取数据的一个或多个读取位置的读取集描述符;
使用所述冲突检查定界符来识别存储在特定持久性日志中的事务记录的子集,所述特定持久性日志在提交所述请求事务之前将被检查用于冲突;以及
响应于确定所述请求事务的所述读取位置没有一者对应于事务记录的所述子集中所指示的写入位置,将新的事务记录存储在所述特定持久性日志中,从而指示已提交所述请求事务。
17.如条款16所述的系统,其中所述事务描述符包括指示继所述事务的提交之后将数据写入到的一个或多个位置的写入集描述符,其中所述新的事务记录包括所述写入集描述符的指示。
18.如条款17所述的系统,其中所述一个或多个计算装置经进一步配置来:
相对于所述特定持久性日志中的所述新的事务记录的插入异步地计划将所述事务描述符中所指示的写入有效负载传播到所述写入集描述符的所述一个或多个位置的第一写入位置的操作。
19.如条款16所述的系统,其中所述读取集描述符包括从所述一个或多个读取位置的特定读取位置产生的第一散列值。
20.如条款16所述的系统,其中所述冲突检查定界符包括对应于特定事务的提交的逻辑时间戳。
总结
各个实施方案可进一步包含在计算机可访问介质上接收、发送或存储根据前面的描述实施的指令和/或数据。一般来说,计算机可访问介质可包含存储介质或存储器介质,诸如磁性或光学介质(例如磁盘或DVD/CD-ROM)、易失性或非易失性介质(诸如RAM(例如,SDRAM、DDR、RDRAM、SRAM等)、ROM等),以及经由通信介质(诸如网络和/或无线链路)传递的传输介质或信号,诸如电信号、电磁信号或数字信号。
如图中所示出并且在本文中描述的各种方法表示方法的示例性实施方案。所述方法可在软件、硬件或其组合中实施。方法的次序可改变,并且各种元素可添加、重新排序、组合、省略、修改等。
受益于本公开的本领域技术人员将清楚地知晓可做出各种修改和改变。本文旨在包含所有此类修改和改变,且因此,以上描述应视为具有说明性而非限制性意义。

Claims (20)

1.一种系统,包括:
一个或多个计算装置,被配置为:
把与请求的状态转变对应的状态转变消息从复制节点的有向无环图(DAG)的第一非提交者节点传播到该DAG的第一提交者节点,其中所述状态转变消息包括指示所请求的状态转变相对于其它请求的状态转变被批准的次序的序号;以及
响应于由DAG配置管理器确定特定节点要被添加到所述DAG,开始从DAG配置管理器向所述DAG的一个或多个其它节点传播指示向所述DAG添加所述特定节点的配置德尔塔消息,并且不指示所述一个或多个其它节点暂停处理状态转变消息。
2.如权利要求1所述的系统,其中:
所述DAG被指定为复制应用的状态;
所述状态转变是由客户端请求的;
所述DAG配置管理器是容错DAG配置管理器;
第一非提交者节点被配置为:
至少部分地基于从所述容错DAG配置管理器接收的第一配置德尔塔消息序列,识别至所述DAG的第一提交者节点的第一复制路径的至少一部分,其中所述DAG的至少一个其它节点已从所述容错DAG配置管理器接收到不同的配置德尔塔消息序列;以及
发送所述状态转变消息用于在沿着第一复制路径的一个或多个节点的相应本地存储装置处复制;并且
所述容错DAG配置管理器被配置为:
响应于确定要从所述DAG移除第一复制路径的特定节点,开始从所述容错DAG配置管理器向所述DAG的一个或多个剩余节点发送指示从所述DAG移除所述特定节点的相应配置德尔塔消息,并且不指示所述一个或多个剩余节点暂停处理状态转变。
3.如权利要求2所述的系统,其中所述容错DAG配置管理器被配置为:
响应于确定要从所述DAG移除所述特定节点,从所述配置管理器处存储的所述DAG的配置的持久性表示移除所述特定节点,其中所述DAG的所述配置指示所述特定节点占用所述DAG内的特定位置;
响应于确定所述特定节点作为所述DAG的成员可用于服务:
识别用于所述特定节点的所述DAG内的一不同位置;以及
向所述DAG的所述一个或多个剩余节点发送指示所述特定节点已在所述DAG内的所述不同位置处被添加到所述DAG的另一配置德尔塔消息,并且不请求所述一个或多个剩余节点暂停与所述应用的状态转变相关的处理。
4.如权利要求2所述的系统,其中所述容错DAG配置管理器被配置为:
识别在从所述DAG移除所述特定节点之前分配给所述特定节点的特定角色,其中所述角色包括以下中的一者:接受器节点、中间节点、或者提交者节点;以及
为所述DAG中的一不同节点分配所述特定角色,其中所述不同节点包括以下中的一者:(a)在被移除前的所述特定节点的后继节点、或者(b)所述DAG的备用节点。
5.如权利要求2中任一项所述的系统,其中由所述一个或多个剩余节点中的第一剩余节点接收的特定配置德尔塔消息没有指示所述DAG的完整成员。
6.如权利要求2所述的系统,其中所述容错DAG配置管理器包括多个配置节点,所述多个配置节点使用基于共识的协议来确定要从所述DAG移除所述特定节点。
7.如权利要求1所述的系统,其中所述一个或多个计算装置还被配置为:
响应于确定已创建了阈值数目的状态转变的记录的副本,在第一提交者节点处存储已提交所述状态转变的指示;
向至少第一非提交者节点通知所述状态转变已被提交;以及
向所述客户端通知所述状态转变已被提交。
8.如权利要求2所述的系统,其中第一配置德尔塔消息序列包括第一配置德尔塔消息其后跟随着第二配置德尔塔消息,并且其中第二配置德尔塔消息序列包括第二配置德尔塔消息其后跟随着第一配置德尔塔消息。
9.一种方法,包括:
由一个或多个计算装置执行:
把与请求的状态转变对应的状态转变消息从复制节点的有向无环图(DAG)的第一非提交者节点传播到该DAG的第一提交者节点,其中所述状态转变消息包括指示所请求的状态转变相对于其它请求的状态转变被批准的次序的序号;以及
响应于由DAG配置管理器确定特定节点要被添加到所述DAG,开始从DAG配置管理器向所述DAG的一个或多个其它节点传播指示向所述DAG添加所述特定节点的配置德尔塔消息,并且不指示所述一个或多个其它节点暂停处理状态转变消息。
10.如权利要求9所述的方法,还包括由所述一个或多个计算装置执行:
响应于由DAG配置管理器确定要从所述DAG移除一不同节点,从所述DAG配置管理器向所述DAG的至少第一剩余节点传播指示从所述DAG移除所述不同节点的第二配置德尔塔消息,并且不指示第一剩余节点暂停处理状态转变消息。
11.如权利要求10所述的方法,其中所述不同节点是第一剩余节点的直接前趋,所述方法还包括:
在第一剩余节点处确定指示从所述不同节点接收的最近状态转变消息的最高接收序号;以及
从所述DAG的第一剩余节点向第二剩余节点发送请求,该请求请求发送具有至少部分地基于所述最高接收序号的范围内的序号的状态转变消息,其中第二剩余节点是移除所述不同节点前所述不同节点的直接前趋。
12.如权利要求9所述的方法,其中所请求的状态转变包括以下的一者:对存储在数据库服务处的数据对象的写操作。
13.如权利要求9所述的方法,其中所请求的状态转变包括把日志消息插入到日志服务的特定日志中。
14.如权利要求9所述的方法,其中所述一个或多个其它节点包括第一节点和第二节点,所述方法还包括由所述一个或多个计算装置执行:
在第一节点处接收到指示移除所述DAG的一不同节点的配置德尔塔消息之前,并且在第二节点处接收到指示移除所述不同节点的配置德尔塔消息之后:
由所述不同节点接收来自第二节点的一不同状态转变消息;
在所述不同节点处复制与所述不同状态转变消息对应的记录;以及
由所述不同节点向第一节点发送所述不同状态转变消息。
15.如权利要求9所述的方法,还包括由所述一个或多个计算装置执行:
响应于确定已创建了阈值数目的请求的状态转变的表示的副本,在第一提交者节点处存储已提交所请求的状态转变的指示;
向至少第一非提交者节点通知所请求的状态转变已被提交;以及
向从其接收到执行所述状态转变的请求的客户端通知所述状态转变已被提交。
16.如权利要求9所述的方法,还包括由所述一个或多个计算装置执行:
实例化所述DAG的一个或多个备用节点;
在已在阈值数目的DAG节点处复制了所请求的状态转变的相应表示之后向所述一个或多个备用节点中的特定备用节点发送所述状态转变消息;
在所述特定备用节点处存储所请求的状态转变的记录;以及
选择所述特定备用节点作为以下中的一者的替代:(a)所述DAG的发生故障的非提交者节点、或者(b)所述DAG的发生故障的提交者节点。
17.一种存储程序指令的非暂态计算机可访问存储介质,所述程序指令当在一个或多个处理器上运行时实现被建立用来复制状态信息的有向无环图(DAG)的特定节点,其中所述特定节点被配置为:
把与请求的状态转变对应的状态转变消息从所述特定节点传播到所述DAG的第一提交者节点,其中所述状态转变消息包括指示所请求的状态转变相对于其它请求的状态转变被批准的次序的序号;以及
从DAG配置管理器接收指示向所述DAG添加另一节点的配置德尔塔消息,其中所述DAG配置管理器在不指示所述特定节点暂停处理状态转变消息的情况下提供所述配置德尔塔消息。
18.如权利要求17所述的非暂态计算机可访问存储介质,其中所述程序指令当在一个或多个处理器上运行时使所述特定节点:
从所述DAG配置管理器接收多个配置德尔塔消息,其中所述多个配置德尔塔消息中的特定配置德尔塔消息指示以下的一者或多者:(a)向所述DAG添加节点,或者(b)从所述DAG移除节点;以及
在从所述DAG配置管理器接收到所述特定配置德尔塔消息后,其中所述特定配置德尔塔消息指示在所述特定节点从其接收到另一状态转变消息的直接前趋节点已被从所述DAG移除:
至少使用所述特定配置德尔塔消息识别一个不同的直接前趋节点;以及
向该不同的直接前趋节点发送针对状态转变消息的请求。
19.如权利要求18所述的非暂态计算机可访问存储介质,其中所述程序指令当在一个或多个处理器上运行时使所述特定节点:
在接收到所述特定配置德尔塔消息后并且在接收到对针对状态转变消息的所述请求的响应前,向所述特定节点的直接后继节点发送特定状态转变消息。
20.如权利要求18所述的非暂态计算机可访问存储介质,其中所述程序指令当在一个或多个处理器上运行时使所述特定节点:
在从所述DAG配置管理器接收到指示直接后继节点已被从所述DAG移除的不同的配置德尔塔消息后:
至少使用该不同的配置德尔塔消息识别要从该特定节点向其发送状态转变消息的一个不同的直接后继节点;以及
开始建立与该不同的直接后继节点的网络连接。
CN201910910400.9A 2014-06-26 2015-06-25 具有多项目事务支持的多数据库日志 Active CN110673932B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910910400.9A CN110673932B (zh) 2014-06-26 2015-06-25 具有多项目事务支持的多数据库日志

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US14/316,622 2014-06-26
US14/316,674 2014-06-26
US14/316,622 US9613078B2 (en) 2014-06-26 2014-06-26 Multi-database log with multi-item transaction support
US14/316,619 2014-06-26
US14/316,619 US9619278B2 (en) 2014-06-26 2014-06-26 Log-based concurrency control using signatures
US14/316,674 US9619544B2 (en) 2014-06-26 2014-06-26 Distributed state management using dynamic replication graphs
US14/316,680 2014-06-26
US14/316,630 2014-06-26
US14/316,680 US9529882B2 (en) 2014-06-26 2014-06-26 Coordinated suspension of replication groups
US14/316,630 US10282228B2 (en) 2014-06-26 2014-06-26 Log-based transaction constraint management
CN201910910400.9A CN110673932B (zh) 2014-06-26 2015-06-25 具有多项目事务支持的多数据库日志
PCT/US2015/037774 WO2015200686A1 (en) 2014-06-26 2015-06-25 Multi-database log with multi-item transaction support
CN201580034518.XA CN106462449B (zh) 2014-06-26 2015-06-25 具有多项目事务支持的多数据库日志

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201580034518.XA Division CN106462449B (zh) 2014-06-26 2015-06-25 具有多项目事务支持的多数据库日志

Publications (2)

Publication Number Publication Date
CN110673932A CN110673932A (zh) 2020-01-10
CN110673932B true CN110673932B (zh) 2024-02-09

Family

ID=53674300

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201580034518.XA Active CN106462449B (zh) 2014-06-26 2015-06-25 具有多项目事务支持的多数据库日志
CN201910910400.9A Active CN110673932B (zh) 2014-06-26 2015-06-25 具有多项目事务支持的多数据库日志

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201580034518.XA Active CN106462449B (zh) 2014-06-26 2015-06-25 具有多项目事务支持的多数据库日志

Country Status (8)

Country Link
EP (2) EP3161630A1 (zh)
JP (2) JP6353086B2 (zh)
KR (1) KR101860278B1 (zh)
CN (2) CN106462449B (zh)
AU (2) AU2015279787B2 (zh)
CA (2) CA2952971C (zh)
SG (2) SG11201610664UA (zh)
WO (1) WO2015200686A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11157517B2 (en) * 2016-04-18 2021-10-26 Amazon Technologies, Inc. Versioned hierarchical data structures in a distributed data store
US10509778B2 (en) 2016-05-25 2019-12-17 Google Llc Real-time transactionally consistent change notifications
US10346387B2 (en) 2016-06-13 2019-07-09 Sap Se Replication of log-structured data
US10671639B1 (en) 2017-03-30 2020-06-02 Amazon Technologies, Inc. Selectively replicating changes to hierarchial data structures
US10860550B1 (en) 2017-03-30 2020-12-08 Amazon Technologies, Inc. Versioning schemas for hierarchical data structures
US11347712B2 (en) 2017-11-07 2022-05-31 International Business Machines Corporation Preventing long running transactions from holding record locks
CN109857523B (zh) * 2017-11-30 2023-05-09 阿里巴巴集团控股有限公司 一种用于实现数据库高可用性的方法及装置
US11182379B2 (en) 2018-08-24 2021-11-23 Oracle International Corporation DAG based methods and systems of transaction processing in a distributed ledger
CN111125163B (zh) * 2018-10-30 2023-06-06 百度在线网络技术(北京)有限公司 用于处理数据的方法和装置
CN110795413A (zh) * 2019-10-30 2020-02-14 珠海港联科技有限公司 一种带有日志记录功能的数据库操作接口服务系统
CN110888790B (zh) * 2019-11-29 2024-02-27 杭州迪普科技股份有限公司 日志管理方法及装置、电子设备、存储介质
CN112035353B (zh) * 2020-08-28 2022-06-17 北京浪潮数据技术有限公司 一种日志记录方法、装置、设备及计算机可读存储介质
CN112035497B (zh) * 2020-08-31 2023-08-04 北京百度网讯科技有限公司 用于清理已提交的事务信息的方法和装置
CN112948494A (zh) * 2021-03-04 2021-06-11 北京沃东天骏信息技术有限公司 数据同步方法、装置、电子设备和计算机可读介质
CN115237854A (zh) * 2021-04-22 2022-10-25 华为技术有限公司 一种日志管理方法及装置
US20230006814A1 (en) * 2021-06-30 2023-01-05 Scality, S.A. Method and apparatus for implementing changes to a file system that is emulated with an object storage system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101676855A (zh) * 2008-09-11 2010-03-24 美国日本电气实验室公司 可变动的辅助存储系统和方法
CN102640151A (zh) * 2009-12-04 2012-08-15 国际商业机器公司 信息系统中转换后的数据的高吞吐量、可靠复制

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628041B2 (ja) * 1984-05-21 1994-04-13 富士通株式会社 メタ・データの管理方式
US6018739A (en) * 1997-05-15 2000-01-25 Raytheon Company Biometric personnel identification system
JP2000250799A (ja) * 1999-03-02 2000-09-14 Mitsubishi Electric Corp 複製ファイル管理システム
JP2004518335A (ja) * 2001-01-11 2004-06-17 ノーテル・ネットワークス・リミテッド 大量データの処理方法
US7894372B2 (en) * 2005-05-31 2011-02-22 Iac Search & Media, Inc. Topology-centric resource management for large scale service clusters
US7734960B2 (en) * 2006-08-14 2010-06-08 Hewlett-Packard Development Company, L.P. Method of managing nodes in computer cluster
CN101184106A (zh) * 2007-11-30 2008-05-21 北京航空航天大学 一种移动数据库的关联事务处理方法
US20090157766A1 (en) 2007-12-18 2009-06-18 Jinmei Shen Method, System, and Computer Program Product for Ensuring Data Consistency of Asynchronously Replicated Data Following a Master Transaction Server Failover Event
JP4818349B2 (ja) * 2008-12-24 2011-11-16 株式会社東芝 分散システムおよび同システムの多重化制御方法
JP2011076487A (ja) * 2009-09-30 2011-04-14 Oki Networks Co Ltd 計算機、及びデータベース管理プログラム
US8442962B2 (en) * 2010-12-28 2013-05-14 Sap Ag Distributed transaction management using two-phase commit optimization
GB2495079A (en) * 2011-09-23 2013-04-03 Hybrid Logic Ltd Live migration of applications and file systems in a distributed system
US20130110767A1 (en) * 2011-10-26 2013-05-02 Nec Laboratories America, Inc. Online Transaction Processing
US9870384B2 (en) * 2012-03-30 2018-01-16 International Business Machines Corporation Database system transaction management
KR101296778B1 (ko) 2012-09-18 2013-08-14 (주)카디날정보기술 NoSQL 데이터베이스를 위한 결과적 트랜잭션 처리 방법
US10747746B2 (en) * 2013-04-30 2020-08-18 Amazon Technologies, Inc. Efficient read replicas

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101676855A (zh) * 2008-09-11 2010-03-24 美国日本电气实验室公司 可变动的辅助存储系统和方法
CN102640151A (zh) * 2009-12-04 2012-08-15 国际商业机器公司 信息系统中转换后的数据的高吞吐量、可靠复制

Also Published As

Publication number Publication date
CN106462449B (zh) 2019-10-29
EP3835969A1 (en) 2021-06-16
AU2019200967B2 (en) 2020-06-04
CN106462449A (zh) 2017-02-22
CA2952971A1 (en) 2015-12-30
CN110673932A (zh) 2020-01-10
CA2952971C (en) 2021-03-30
JP6353086B2 (ja) 2018-07-04
AU2019200967A1 (en) 2019-02-28
JP2017520844A (ja) 2017-07-27
CA3108206A1 (en) 2015-12-30
KR20170013991A (ko) 2017-02-07
EP3161630A1 (en) 2017-05-03
WO2015200686A1 (en) 2015-12-30
AU2015279787B2 (en) 2018-11-15
JP6688835B2 (ja) 2020-04-28
SG10201900418SA (en) 2019-02-27
KR101860278B1 (ko) 2018-05-21
JP2018156683A (ja) 2018-10-04
SG11201610664UA (en) 2017-01-27
AU2015279787A1 (en) 2017-01-12

Similar Documents

Publication Publication Date Title
US11995066B2 (en) Multi-database log with multi-item transaction support
CN110673932B (zh) 具有多项目事务支持的多数据库日志
US9619278B2 (en) Log-based concurrency control using signatures
US9619544B2 (en) Distributed state management using dynamic replication graphs
US9529882B2 (en) Coordinated suspension of replication groups
US10282228B2 (en) Log-based transaction constraint management
US11625700B2 (en) Cross-data-store operations in log-coordinated storage systems
CA2960988C (en) Scalable log-based transaction management
US10296606B2 (en) Stateless datastore—independent transactions
US9323569B2 (en) Scalable log-based transaction management
US10303795B2 (en) Read descriptors at heterogeneous storage systems
CN107148617B (zh) 日志协调存储组的自动配置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant