CN100365579C - 群集范围的读复制更新的系统和方法 - Google Patents
群集范围的读复制更新的系统和方法 Download PDFInfo
- Publication number
- CN100365579C CN100365579C CNB2005101151283A CN200510115128A CN100365579C CN 100365579 C CN100365579 C CN 100365579C CN B2005101151283 A CNB2005101151283 A CN B2005101151283A CN 200510115128 A CN200510115128 A CN 200510115128A CN 100365579 C CN100365579 C CN 100365579C
- Authority
- CN
- China
- Prior art keywords
- transitional period
- node
- cluster
- data
- wide
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
用于同步更新群集数据处理系统中的共享可变数据的系统、方法和计算机程序产品。在群集的每一节点上执行数据单元的更新操作,同时为阅读单元保留所述的共享可变数据的更新之前的视图,所述阅读单元可能正引用所述的更新之前的视图。进行请求在群集范围的过渡期之后延迟移除所述共享可变数据的更新之前的视图。执行过渡期检测处理用于检测何时出现群集范围的过渡期。当出现群集范围的过渡期时,执行对所述共享可变数据的更新之前的视图的延迟移除。这种延迟移除允许阅读单元省略所有的消息传递和加锁,其显著地提高了它们的性能。
Description
技术领域
本发明涉及计算机系统和方法,其中在群集数据处理系统中的节点之间共享公共数据,同时保留数据完整性和一致性。更具体地,本发明涉及改进的数据一致性技术,其不需要分布式锁或特别的消息传递协议,并且在其中数据读操作能够与数据更新操作并发地运行,而无需锁或消息,从而显著提高其性能。
背景技术
作为背景,群集数据处理系统表示一种计算环境,其中多个分离的计算机(被称为节点)合作提供公共数据处理服务或功能。经常是这样的情况:群集的节点共同地共享必须在整个群集中保持一致状态还能够在每一节点上进行本地操作的可变数据。例如,在分布式数据库系统中,管理分布式数据存储池的数据库服务器节点必须各自维护当前哪些服务器节点是群集成员的一致视图。每一节点知道在其他节点上发生的状态改变并且在这些节点之间协调这些状态改变是必需的。
在过去,群集系统使用了全局的居中锁或对共享可变数据的居中访问的租用。不过,获得这些锁或租用的进程必定导致大量开销。在很少修改数据的情况下,这种开销被极大地浪费。存在使获得锁/租用的等待时间与实际的盘I/O(输入/输出)的等待时间重叠的所谓“优化加锁”技术的许多方法,在所述技术中,在任何提交均有可能失效的假设下,进程执行数据更新,因为自事务开始以来已经由另一进程改变了至少一个被提交的数据对象。与此相反,在所谓的“悲观加锁”的情况下,进程在执行任何更新事务之前明确地获得一个锁。也存在加时间戳和具有版本的技术用于维护数据一致性,但是这些技术需要使用特定数据版本的进程以某种方式进行登记,以使该版本避免被过早丢弃。在所有这些情况中,均需要群集范围的加锁/租用,即使工作负载完全为只读的。尽管存在用于将锁存储于高速缓存中的许多技术,以便获得兼容锁时无需其后的I/O,但这仍会导致检测该锁仍被存储于高速缓存中的开销。
作为对于面向锁/租用的互斥的可选方案,群集数据处理系统也能够使用基于消息的协议,如两阶段提交。所述的两阶段提交协议是使群集中的节点同意提交事务的一种分布式算法。所述协议导致所有节点或者提交事务或者终止事务。将算法的两阶段断开为提交请求阶段和提交阶段。在提交请求阶段中,作为与事务有关的协调者的节点发送通知消息到所有其他节点,并等待来自其他节点的响应,其中每一节点或者同意请求或者提出终止回复。在提交阶段中,如果所有节点已同意提交,则协调者发送提交消息,随后所有的节点提交事务。否则,协调者发送终止消息。
尽管基于消息的互斥协议通常是有效的,但一个主要的缺点在于其易于被阻塞。例如,在两阶段提交协议中,当节点等待消息时将会阻塞。这意味着为了由已阻塞的进程所拥有的资源锁而竞争的其他进程将不得不等待所述的锁被解开。此外,单个节点将持续等待,即使所有其他节点均已失效。如果协调者永久性地失效,则一些成员将无法解决其事务。
前述情况推动搜索克服了前述问题的新的面向群集的互斥技术。尤其需要的是一种改进的技术,其不会负担管理分布式锁或租用的开销,并且其不需要与直到接收到响应之前一直阻塞的等待消息的进程进行广泛的消息交换。
发明内容
通过用于同步更新群集数据处理系统中的共享可变数据的方法、系统和计算机程序产品,解决了前述问题并获得本领域的进展。在群集的每一节点执行数据单元更新操作,同时对于阅读单元保留所述的共享可变数据的更新之前的视图,所述阅读单元可能正引用所述的更新之前的视图。进行请求(如通过登记回调)在群集范围的过渡期之后延迟移除所述共享可变数据的更新之前的视图。执行过渡期检测处理用于确定何时出现群集范围的过渡期。当出现所述的群集范围的过渡期时,执行对共享可变数据的更新之前的视图的延迟移除。这种延迟移除允许阅读单元忽略所有的消息传递和加锁操作,其显著地提高它们的性能。
根据本发明的一个方面,提供了一种用于同步对群集数据处理系统中的共享可变数据的更新的方法,所述方法包括:
在所述群集数据处理系统的每一节点上执行数据单元的更新操作,同时为阅读单元保留所述的共享可变数据的更新之前的视图,所述阅读单元可能正引用所述的更新之前的视图;
请求在群集范围的过渡期之后延迟移除所述共享可变数据的所述更新之前的视图,其中该步骤包括在每一节点上登记回调;
检测何时出现群集范围的过渡期;以及
在检测所述的群集范围的过渡期之后执行所述的延迟移除;
由此,访问所述的共享可变数据的阅读单元能够继续进行而无需加锁或消息传递,从而提高它们的性能。
根据本发明的另一个方面,提供了一种具有多个数据处理节点的群集数据处理系统,所述系统适用于同步对共享可变数据的更新,并包括:
用于在所述群集数据处理系统的每一节点上执行数据单元的更新操作同时为阅读单元保留所述的共享可变数据的更新之前的视图的更新装置,所述阅读单元可能正引用所述的更新之前的视图;
用于请求在群集范围的过渡期之后延迟移除所述共享可变数据的所述更新之前的视图的请求装置,其中该装置包括在每一节点上的回调登记装置;
用于检测何时出现群集范围的过渡期的过渡期检测装置;以及
用于在检测所述的群集范围的过渡期之后执行所述的延迟移除的移除装置;
由此,访问所述的共享可变数据的阅读单元能够继续进行而无需加锁或消息传递,从而提高它们的性能。
在本发明的示例性实施例中,更新操作能够首先在启动更新的节点上执行,接着在群集数据处理系统中的其他节点上执行。在此实施例中,启动更新的节点能够首先执行其更新操作,并接着将更新通知到其他节点。更新启动也能够被用于执行群集范围的过渡期检测。具体地,能够通过启动更新的节点执行群集范围的过渡期检测,所述的节点从经过了本地过渡期或静态的群集数据处理系统中的其他节点接收报告。也能够在群集数据处理系统的所有节点上,例如通过维护经过了本地过渡期或静态的节点计数的每一节点执行群集范围的过渡期检测。最后,群集范围的过渡期能够基于经过了本地过渡期或在可选方案中经过了本地静态的群集数据处理系统中的所有节点。
附图说明
从以下本发明的示例性实施例的更具体描述中,本发明前述的和其他的特征和优点将变得明显,如附图中所说明的,在附图中:
图1A-1D是根据传统的读复制更新机制的经过数据单元替换的数据单元的链表的图解表示;
图2A-2C是根据传统的读复制更新机制的经过数据单元删除的数据单元的链表的图解表示;
图3是说明其中四个进程经过了静态的过渡期的流程图;
图4是示出了代表本发明能够实现于其中的一个示例性环境的群集数据处理系统的功能框图;
图5是示出了图4的群集数据处理系统中的读复制更新实例的功能成分的功能框图;
图6A、6B和6C是在图4的群集数据处理系统的单一节点上根据本发明进行更新的数据单元的图解表示;
图7是在图4的群集数据处理系统的每一节点上根据本发明进行更新的数据单元的图解表示;
图8是示出了可根据本发明执行的示例性群集范围的过渡期处理的流程图;以及
图9是示出了可根据本发明执行的群集范围的过渡期处理的可选示例的流程图。
具体实施方式
能够将本发明实现为已知作为读复制更新的互斥技术的扩展。这种互斥技术通常被用于多处理器/单OS(操作系统)环境中,但是就申请者的知识而言,所述互斥技术并未被扩展到群集。读复制更新技术允许访问共享数据用于读而不使用锁,写到共享存储器、存储器屏障、原子指令或其他计算上昂贵的同步机制,同时仍允许并发地更新(修改、删除、插入等等)数据。所述技术很好地适合于多处理器计算环境,在所述多处理器计算环境中,与更新操作(更新单元)的数量比较起来,访问共享数据组的读操作(阅读单元)的数量很大,并且其中对于每一读操作使用其他互斥技术(例如锁)的开销成本将很高。作为示例,一种情况是网络路由选择表,其最多每隔几分钟更新一次,但每秒钟搜索数千次,在此情况中,读方面对锁的获取将非常繁重。
读复制更新技术以两个阶段实现数据更新。在第一(初始更新)阶段,用暂时性保留将更新的数据的两个视图的方式执行实际的数据更新。一个视图是为了当前可能正引用数据的操作的利益而维护的旧(更新之前)数据状态。另一个视图是可用于为了更新之后访问数据的操作的利益的新(更新之后)数据状态。在第二(延迟更新)阶段,在“过渡期”之后移除旧数据状态,所述的“过渡期”的长度足以确保所有正执行的操作将不再维护对更新之前的数据的引用。
图1A-1D说明了使用读复制更新在数据单元A、B和C的组中修改数据单元B。将数据单元A、B和C安置于以非循环方式进行遍历的单向链表中,其中每一单元包含指向链表中的下一单元的指针(或者对于最后的单元的NULL指针),此外还存储了某项数据。假定全局指针(未示出)指向作为链表第一个成员的数据单元A。本领域的技术人员将理解,能够使用各种常规编程构造中的任何一种而实现所述的数据单元A、B和C,所述的编程构造包括但不局限于通过C语言的“struct”变量定义的数据结构。
假定图1A-1D的数据单元链表通过多个并发阅读单元进行遍历(不加锁),并不时地通过删除、插入或修改链表中的数据单元的更新单元进行更新。在图1A中,数据单元B正被阅读单元r1所引用,如数据单元下的垂直箭头所示。在图1B中,更新单元u1希望通过修改数据单元B而更新链表。u1不是简单地更新此数据单元而不顾r1正在引用它的事实(这可能使r1崩溃),而是保留B同时生成B的更新版本(图1C中示为数据单元B’)并将其插入链表。这通过u1获得自旋锁、为B’分配新存储器、复制B的内容到B’、按照需要修改B’、更新从A到B的指针以使其指向B’以及解开该自旋锁而完成。因此,例如阅读单元r2的所有随后(更新之后)遍历该链表的阅读单元将通过遇到B’而看到更新操作的结果。另一方面,旧阅读单元r1将不受影响,因为保留了B的初始版本以及其指向C的指针。尽管r1当前在读陈旧的数据,但存在许多能够被容忍的情况,例如当数据单元跟踪在计算机系统外部的部件的状态(例如网络连通性)并出于通信延迟的原因而必须容忍旧数据的时候。
在更新之后的随后某个时间,r1将继续其对链表的遍历,并将移开其对B的引用。此外,将存在没有其他阅读单元被授权访问B的一个时间。在参考如上所述的表示过渡期终止的这个时间上,u1能够释放B,如图1D所示。
图2A-2C说明了使用读复制更新在数据单元A、B和C的单向链表中删除数据单元B。如图2A所示,假定阅读单元r1当前引用B,而更新单元u1希望删除B。如图2B所示,更新单元u1更新从A到B的指针以使A现在指向C。这样,不会干扰r1,但随后的阅读单元r2看到了删除的结果。如图2C所示,r1随后将移开其对B的引用,在过渡期终止之后允许释放B。
在读复制更新机制的语境中,过渡期表示访问由读复制更新所守卫的数据单元的所有运行进程已经过“静态”的点,在所述的“静态”中,所述进程不再维护对该数据单元的引用,不再维护在该数据单元上的锁,或者不再对数据单元状态做出任何假定。通过约定,对于操作系统的内核码路径,语境(进程)转换、空循环以及用户模式执行均表示对于任一给定CPU的静态(此处未列出的其他操作也能够进行如此表示)。
在图3中,示出了在四个单独的CPU上运行的周期性地经过静态(由双竖条所表示)的四个进程0、1、2和3。过渡期(由竖虚线所表示)包含了其中所有四个进程已经过一个静态的时间帧。如果四个进程0、1、2和3是遍历图1A-1D或图2A-2C的链路的阅读单元进程,则在过渡期之前引用旧数据单元B的这些进程在过渡期之后均不维护对B的引用。通过跟随由更新单元插入的链接,由这些进程所引导的所有过渡期之后的搜索将绕过B。
存在可被用于在过渡期之后实现延迟数据更新的各种方法,包括但不局限于使用回调处理,如标题为“用于在使用执行历史和线程监控的多处理器系统中达到降低互斥开销并维护一致性的装置和方法(ApparatusAnd Method For Achieving Reduced Overhead Mutual-Exclusion AndMaintaining Coherency In A Multiprocessor System Utilizing ExecutionHistory And Thread Monitoring)”的共同转让的美国专利号5,727,209中所描述的。在此将美国专利号5,727,209的内容并入作为参考。
回调处理技术期望共享数据单元的更新单元将执行建立被更新数据的新视图的初始(第一阶段)数据更新操作,并接着指定用于执行移除被更新数据的旧视图的延迟(第二阶段)数据更新操作的回调功能。更新单元将向读复制更新子系统登记回调功能(下文中称为回调),以使能够在过渡期末端执行所述的回调。读复制更新子系统跟踪对于每一处理器的未决回调,并监控每个处理器的静态活动,以便检测当前过渡期何时终止。当当前过渡期终止时,执行适于处理的所有计划中的回调。
在基于群集的数据处理系统中,不能使用在单OS系统中所使用的常规过渡期处理技术,因为数据处理节点的群集中的过渡期的概念可能不同。此外,数据更新的实现是不同的,因为每一节点必须与其他节点协调地执行它本身的本地更新操作。
现在转到图4,说明了示例性的群集数据处理系统(群集)2,其中对应于标号41、42、43和44示出了任意选择的多个处理节点。根据性能要求、设计优选和其他因素能够使用任何适当的计算机系统实现处理节点41、42、43和44。尽管在图4中未示出,但这样的每一节点常规地包括一个或多个处理器、程序存储器、用于与其他节点通信的通信接口以及可选择的例如磁盘驱动器或光盘驱动器的数据存储系统。分别在每一处理节点41、42、43和44中执行的是其功能分布于整个群集2中的软件应用6的实例61、62、63和64。假定软件6使用在每一处理节点41、42、43和44的程序存储器中存在的一组共享可变数据8。具体地,每一处理节点41、42、43和44分别维护共享可变数据8的拷贝81、82、83和84用于由其各自软件实例61、62、63和64所使用。因为在每一处理节点41、42、43和44上维护共享可变数据6,所以数据必须总是在整个群集2中处于一致的状态。
在可从国际商业机器公司得到的IBMTotalStorageSAN卷控制器产品中找到例示了就参考图4而言所描述的群集特征的一个基于群集的数据处理系统,但其并未限制前述描述的普遍性。在其当前版本中,SAN卷控制器被实现为四个数据处理节点的群集,它的作业是为客户端虚拟化SAN(存储区域网络)内的一组RAID存储设备,所述的客户端的数据存储于其中。SAN卷控制器管理存储设备,并建立出现于客户端作为常规SCSI盘的它的虚拟盘表示。
SAN卷控制器系统的操作完整性需要每一节点维护关于所管理存储设备的状态的一致的一组配置数据,如存在什么设备以及每一设备的状态。每一节点还需要维护关于群集状态的一致的一组配置数据,如它的成员资格。由各种进程、线程或在一些节点上运行的其他执行语境(阅读单元)周期性地读这些配置数据,并由额外的进程、线程或其他执行语境(更新单元)周期性地更新这些配置数据。照这样,SAN卷控制器中的节点必须实现适当的基于群集的互斥协议,以便为阅读单元维护所要求的一致性,因为更新单元在各种节点上执行更新。
现在回到图4的群集配置,类似于SAN卷控制器中的配置数据,将由各种阅读单元周期性地读在处理节点41、42、43和44上维护的共享可变数据8,并也将由各种更新单元周期性地更新所述的共享可变数据8,所有的阅读单元和更新单元表示关联于分布式软件6的进程、线程或其他执行语境。标号101、102、103和104说明了可在处理节点41、42、43和44上周期性执行的单独的数据读操作(阅读单元)。标号121、122、123和124说明了可在处理节点41、42、43和44上周期性执行的单独的数据更新操作(更新单元)。出于本描述的目的,假定执行读操作远远比执行更新更频繁,从而满足使用读复制更新的一个基本前提。
由数据更新单元121、122、123和124执行的更新可以包括修改、插入或删除包括共享可变数据6的一部分的任何数据单元。为使采用在整个群集2中维护数据一致性的方式的这种更新更容易,将一些处理节点41、42、43和44编程,以通过周期性地执行各自的读复制更新实例141、142、143和144作为其操作系统功能的一部分而实现读复制更新(RCU)子系统14。
如图5所示,读复制更新子系统14包括回调登记部件18作为其功能的一部分。回调登记部件18作为到读复制更新子系统14的API(应用程序接口),其能够被更新单元121、122、123和124调用以登记用于在由更新单元本身所执行的初始(第一阶段)更新之后的延迟(第二阶段)数据单元更新的请求。如同在关于常规的读复制更新处理中已知的,这些更新请求涉及移除陈旧数据单元,并将被处理作为读复制更新子系统14内的回调。读复制更新子系统14另外包括过渡期检测部件20、回调处理部件22。以下更详细地描述了这些部件的功能。
根据本发明,当例如处理节点41的更新单元121想要更新共享可变数据8的单元时,它用不影响可能正并行使用更新之前的数据视图的阅读单元的方式执行数据单元对它本地拷贝的本地更新。如图6A所示,如果更新单元121希望修改正被阅读单元r1使用的数据单元A,它将首先建立例如阅读单元r2的随后的阅读单元将看到的数据元素A的拷贝A’。如图6B所示,为了r1的利益而保留初始数据单元A,并且更新单元121在它的读复制更新子系统实例141的回调登记部件18中登记回调,如在关于常规的读复制更新处理中已知的。除前述之外,更新单元121发送包含了已修改的数据单元A’的拷贝的更新请求到它的每一同等更新单元122、123和124。这样的每一同等更新单元122、123和124将为了随后阅读单元的利益而安置已修改数据单元A’,并接着在关联于每一同等读复制更新子系统实例142、143和144的回调登记部件18中登记回调。
通过目前存在于所有处理节点41、42、43和44上的新的数据单元A’的拷贝,每一读复制更新子系统实例141、142、143和144的过渡期检测部件20执行过渡期检测功能(见下),在此之后,每一读复制更新子系统实例141、142、143和144的过渡期处理部件22移除数据单元A。图7中示出了在每一处理节点41、42、43和44上执行的整个更新顺序。如所能够看到的,所有的对等更新单元122、123和124对它们的数据单元A的拷贝(A2、A3和A4)执行同样的更新处理,并在它们各自的读复制更新子系统142、143和144的回调登记部件18中登记回调。从而在所有节点上维护了数据一致性。
对于涉及删除数据单元的更新,更新处理是类似的,除了没有涉及到已修改的数据单元。由启动更新单元发送的更新请求将简单地导致同等更新单元为了随后阅读单元的利益而实现删除,并接着在过渡期后登记用于移除已删除数据单元的回调,以便当前阅读单元不被影响。对于涉及插入新数据单元的更新,不需要回调处理。启动更新单元简单地需要将新数据单元的拷贝分发到其同等更新单元,用于将所述的拷贝并入到每一同等更新单元的共享可变数据82、83和84中。
能够以多种方式执行对群集2内的过渡期的检测。一个方法是基于每个节点的过渡期实现群集范围的界线。当每一处理节点41、42、43和44已经对于其内部(内部节点)数据使用了读复制更新处理,并被编程用于检测关于在每一特定节点上运行的处理器的周期时,能够使用这种实现。假定于每一处理节点41、42、43和44上存在这种本地过渡期检测智能,则能够以多种方式进行对群集范围的过渡期的检测。图8和9说明了两个可选方案。
在图8的步骤30中,读复制更新子系统实例141、142、143和144中其一的过渡期检测部件20,即关联于在启动节点上的启动更新单元的过渡期检测部件20将过渡期请求广播到关联于同等节点的其他每一读复制更新子系统实例中的过渡期检测部件20。在步骤32,同等节点开始过渡期跟踪,并当本地过渡期过去时进行响应。当在步骤34中由启动更新的节点确定所有同等节点已报告了本地过渡期时,该启动更新的节点批准同等节点通过移除它们的更新之前的旧数据的拷贝而完成数据更新。
图9说明了群集范围的过渡期检测的另一可选方案,其中每一处理节点41、42、43和44维护在每一节点上在本地已过去的过渡期的数量的累积计数。在步骤40中,在每一读复制更新子系统实例141、142、143和144中的过渡期检测部件20启动累积的过渡期计数。在步骤42中,启动本地过渡期检测处理以跟踪本地过渡期活动。步骤44测试本地过渡期是否已经过去。如果本地过渡期已经过去,则在步骤46中将过渡期指示广播到其他节点。这能够以多种方式完成,例如,通过将过渡期指示借道到在群集系统中常规地被用于监控节点操作耐久性的类型的常规的心跳消息上。在广播过渡期指示之后,在步骤48中终止本地过渡期处理,并且在步骤50中增加累积的过渡期计数。如果在步骤44中确定本地过渡期还未过去,则步骤52测试另一节点是否已报告了过渡期。如果另一节点还未报告过渡期,在步骤44重新开始处理。如果已报告了过渡期,则在步骤50中增加累积的过渡期计数。在步骤54中,进行测试以确定是否所有节点已报告了过渡期。如果它们并未都报告过渡期,则处理返回到步骤44。如果所有节点均已报告了过渡期,则在步骤56中每一读复制更新实例141、142、143和144中的过渡期检测部件20将调用其回调处理部件22以实现延迟更新处理。
注意,对于相对小的群集,能够使用示出了这些节点的位图,而代替使用对已经过过渡期的节点的数量进行计数的计数器。对于大的群集,能够使用组合树。
如上所述,过渡期检测的前述实例假定每一处理节点41、42、43和44被编程用于检测本地过渡期。在不存在这种编程的情况下,群集范围的过渡期检测能够基于每一节点的静态定义,所述的静态定义被选择用于确保给定节点上没有阅读单元能够维护对该节点的共享可变数据8的更新之前的旧版本的引用,所述的旧版本将在回调处理期间被移除。一旦选择了适当的静态定义,则可将任一适当的技术用于检测群集范围的过渡期何时已经过去,作为所有节点经过了静态的结果。例如,根据所使用的适当定义,可用静态代替过渡期而使用图8和9的过程中的任一个。
因此,已公开了一种用于管理群集数据处理系统中的共享可变数据的技术,其中能够用不影响并行阅读单元的方式执行对共享数据的更新。有利地,为了访问被更新的数据,阅读单元既不需要获得锁也不需要参与信息接发。它们能够完全地继续进行而不知道正在执行的并行更新,从而显著地提供了它们的性能。
将要理解,前述概念可被不同地包含于数据处理系统、机器实现的方法和计算机程序产品中的任一个中,其中在一个或多个数据存储媒体上记录编程方法,用于控制数据处理系统执行所需功能。所述媒体可以为常规地用于商业软件销售的类型的便携式光存储盘。这种媒体能够单独地存储本发明的编程方法,或者连同操作系统或结合了读复制更新功能的其他软件产品一起存储。也能够将所述编程方法存储于便携式磁媒体(如软盘、闪速存储器棒等等)之上或与并入计算机平台中的驱动器系统所结合的磁媒体(如盘驱动器)上。
尽管已描述了本发明的各种实施例,但应该显而易见,根据本发明能够实现许多变化和可选实施例。因此,应该理解,除了根据所附权利要求及其同等物的精神之外,不以任何方式限制本发明。
Claims (18)
1.一种用于同步对群集数据处理系统中的共享可变数据的更新的方法,所述方法包括:
在所述群集数据处理系统的每一节点上执行数据单元的更新操作,同时为阅读单元保留所述的共享可变数据的更新之前的视图,所述阅读单元可能正引用所述的更新之前的视图;
请求在群集范围的过渡期之后延迟移除所述共享可变数据的所述更新之前的视图,其中该步骤包括在每一节点上登记回调;
检测何时出现群集范围的过渡期;以及
在检测所述的群集范围的过渡期之后执行所述的延迟移除;
由此,访问所述的共享可变数据的阅读单元能够继续进行而无需加锁或消息传递,从而提高它们的性能。
2.根据权利要求1的方法,其中所述的更新操作首先在启动更新的节点上执行,接着在所述群集数据处理系统中的其他节点上执行。
3.根据权利要求2的方法,其中所述的启动更新的节点将所述的更新通知到所述的其他节点。
4.根据权利要求1的方法,其中所述的群集范围的过渡期检测由启动更新的节点执行。
5.根据权利要求4的方法,其中所述的群集范围的过渡期检测由所述启动更新的节点执行,所述启动更新的节点从经过本地过渡期或静态的所述群集数据处理系统中的其他节点接收报告。
6.根据权利要求1的方法,其中所述的群集范围的过渡期检测在所述的群集数据处理系统的所有节点上执行。
7.根据权利要求6的方法,其中所述的群集范围的过渡期检测由维护经过本地过渡期或静态的节点的计数的所述的群集数据处理系统的每一节点执行。
8.根据权利要求1的方法,其中所述的群集范围的过渡期基于经过了本地过渡期的所述群集数据处理系统中的所有节点。
9.根据权利要求1的方法,其中所述的群集范围的过渡期基于经过了本地静态的所述群集数据处理系统中的所有节点。
10.一种具有多个数据处理节点的群集数据处理系统,所述系统适用于同步对共享可变数据的更新,并包括:
用于在所述群集数据处理系统的每一节点上执行数据单元的更新操作同时为阅读单元保留所述的共享可变数据的更新之前的视图的更新装置,所述阅读单元可能正引用所述的更新之前的视图;
用于请求在群集范围的过渡期之后延迟移除所述共享可变数据的所述更新之前的视图的请求装置,其中该装置包括在每一节点上的回调登记装置;
用于检测何时出现群集范围的过渡期的过渡期检测装置;以及
用于在检测所述的群集范围的过渡期之后执行所述的延迟移除的移除装置;
由此,访问所述的共享可变数据的阅读单元能够继续进行而无需加锁或消息传递,从而提高它们的性能。
11.根据权利要求10的系统,其中所述的更新装置包括首先在启动更新的节点上执行更新操作,接着在所述群集数据处理系统中的其他节点上执行更新操作。
12.根据权利要求11的系统,其中所述的启动更新的节点适用于将所述的更新通知到所述的其他节点。
13.根据权利要求10的系统,其中所述的过渡期检测装置关联于所述的启动更新的节点。
14.根据权利要求13的系统,其中所述的过渡期检测装置包括关联于所述启动更新的节点的装置,用于从经过本地过渡期或静态的所述群集数据处理系统中的其他节点接收报告。
15.根据权利要求10的系统,其中所述的过渡期检测装置包括用于在所述的群集数据处理系统的所有节点上执行群集范围的过渡期检测的装置。
16.根据权利要求15的系统,其中所述的过渡期检测装置包括关联于所述的群集数据处理系统的每一节点的装置,用于维护经过本地过渡期或静态的节点的计数。
17.根据权利要求10的系统,其中所述的群集范围的过渡期基于经过了本地过渡期的所述群集数据处理系统中的所有节点。
18.根据权利要求10的系统,其中所述的群集范围的过渡期基于经过了本地静态的所述群集数据处理系统中的所有节点。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/999,833 US8126843B2 (en) | 2004-11-30 | 2004-11-30 | Cluster-wide read-copy update system and method |
US10/999,833 | 2004-11-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1821965A CN1821965A (zh) | 2006-08-23 |
CN100365579C true CN100365579C (zh) | 2008-01-30 |
Family
ID=36568465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101151283A Expired - Fee Related CN100365579C (zh) | 2004-11-30 | 2005-11-10 | 群集范围的读复制更新的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US8126843B2 (zh) |
CN (1) | CN100365579C (zh) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006293501A (ja) * | 2005-04-06 | 2006-10-26 | Hitachi Ltd | ストレージシステム、構成管理方法、及びプログラム |
US7441113B2 (en) | 2006-07-10 | 2008-10-21 | Devicevm, Inc. | Method and apparatus for virtualization of appliances |
US7917479B2 (en) | 2007-03-20 | 2011-03-29 | Micron Technology, Inc. | Non-volatile memory devices, systems including same and associated methods |
US8495641B2 (en) * | 2007-06-29 | 2013-07-23 | International Business Machines Corporation | Efficiently boosting priority of read-copy update readers while resolving races with exiting and unlocking processes |
US8706706B2 (en) * | 2007-09-13 | 2014-04-22 | International Business Machines Corporation | Fast path for grace-period detection for read-copy update system |
US8055918B2 (en) * | 2008-04-03 | 2011-11-08 | International Business Machines Corporation | Optimizing preemptible read-copy update for low-power usage by avoiding unnecessary wakeups |
US7953778B2 (en) * | 2008-05-20 | 2011-05-31 | International Business Machines Corporation | Efficient support of consistent cyclic search with read-copy update and parallel updates |
US8108696B2 (en) * | 2008-07-24 | 2012-01-31 | International Business Machines Corporation | Optimizing non-preemptible read-copy update for low-power usage by avoiding unnecessary wakeups |
US7953708B2 (en) * | 2008-07-28 | 2011-05-31 | International Business Machines Corporation | Optimizing grace period detection for preemptible read-copy update on uniprocessor systems |
US8020160B2 (en) * | 2008-07-28 | 2011-09-13 | International Business Machines Corporation | User-level read-copy update that does not require disabling preemption or signal handling |
US8195893B2 (en) * | 2008-11-03 | 2012-06-05 | International Business Machines Corporation | Eliminating synchronous grace period detection for non-preemptible read-copy update on uniprocessor systems |
US8185704B2 (en) | 2009-09-02 | 2012-05-22 | International Business Machines Corporation | High performance real-time read-copy update |
US9459963B2 (en) * | 2009-09-03 | 2016-10-04 | International Business Machines Corporation | Safely rolling back transactions in a transactional memory system with concurrent readers |
DE102009042128A1 (de) * | 2009-09-18 | 2011-03-24 | Siemens Aktiengesellschaft | Verfahren und System zur Verwendung von temporären exklusiven Sperren für parallele Betriebsmittelzugrife |
CN102035862B (zh) * | 2009-09-30 | 2013-11-06 | 国际商业机器公司 | Svc集群中配置节点的故障移交方法和系统 |
US8407503B2 (en) * | 2010-09-27 | 2013-03-26 | International Business Machines Corporation | Making read-copy update free-running grace period counters safe against lengthy low power state sojourns |
US8615771B2 (en) | 2011-06-20 | 2013-12-24 | International Business Machines Corporation | Effective management of blocked-tasks in preemptible read-copy update |
US9189413B2 (en) * | 2011-06-20 | 2015-11-17 | International Business Machines Corporation | Read-copy update implementation for non-cache-coherent systems |
US9250978B2 (en) | 2011-06-27 | 2016-02-02 | International Business Machines Corporation | Asynchronous grace-period primitives for user-space applications |
US9009122B2 (en) | 2011-12-08 | 2015-04-14 | International Business Machines Corporation | Optimized resizing for RCU-protected hash tables |
US8661005B2 (en) | 2011-12-08 | 2014-02-25 | International Business Machines Corporation | Optimized deletion and insertion for high-performance resizable RCU-protected hash tables |
US9256476B2 (en) | 2011-12-10 | 2016-02-09 | International Business Machines Corporation | Expedited module unloading for kernel modules that execute read-copy update callback processing code |
US9003420B2 (en) | 2012-05-18 | 2015-04-07 | International Business Machines Corporation | Resolving RCU-scheduler deadlocks |
US8938631B2 (en) | 2012-06-30 | 2015-01-20 | International Business Machines Corporation | Energy efficient implementation of read-copy update for light workloads running on systems with many processors |
US8874535B2 (en) | 2012-10-16 | 2014-10-28 | International Business Machines Corporation | Performance of RCU-based searches and updates of cyclic data structures |
US9419859B2 (en) | 2012-12-04 | 2016-08-16 | Microsoft Technology Licensing, Llc | Service allocation in a distributed computing platform |
US9524324B1 (en) * | 2012-12-26 | 2016-12-20 | Emc Corporation | Framework for performing updates of globally shared data in a multiprocessor environment |
US8924655B2 (en) | 2013-02-04 | 2014-12-30 | International Business Machines Corporation | In-kernel SRCU implementation with reduced OS jitter |
US8972801B2 (en) | 2013-02-04 | 2015-03-03 | International Business Machines Corporation | Motivating lazy RCU callbacks under out-of-memory conditions |
US9244844B2 (en) | 2013-03-14 | 2016-01-26 | International Business Machines Corporation | Enabling hardware transactional memory to work more efficiently with readers that can tolerate stale data |
US9348765B2 (en) | 2013-03-14 | 2016-05-24 | International Business Machines Corporation | Expediting RCU grace periods under user mode control |
US9396226B2 (en) | 2013-06-24 | 2016-07-19 | International Business Machines Corporation | Highly scalable tree-based trylock |
US9389925B2 (en) | 2013-12-03 | 2016-07-12 | International Business Machines Corporation | Achieving low grace period latencies despite energy efficiency |
US9547652B2 (en) * | 2014-05-29 | 2017-01-17 | Netapp, Inc. | System and method for validating replication of mutable operations performed on a file system object during a migration |
US9720836B2 (en) | 2015-05-11 | 2017-08-01 | International Business Machines Corporation | Preemptible-RCU CPU hotplugging while maintaining real-time response |
US9552236B2 (en) | 2015-05-12 | 2017-01-24 | International Business Machines Corporation | Tasks—RCU detection of tickless user mode execution as a quiescent state |
US9886329B2 (en) | 2015-06-25 | 2018-02-06 | International Business Machines Corporation | Scalable RCU callback offloading |
US9965432B2 (en) | 2015-10-02 | 2018-05-08 | International Business Machines Corporation | Handling CPU hotplug events in RCU without sleeplocks |
US10140131B2 (en) | 2016-08-11 | 2018-11-27 | International Business Machines Corporation | Shielding real-time workloads from OS jitter due to expedited grace periods |
US10353748B2 (en) | 2016-08-30 | 2019-07-16 | International Business Machines Corporation | Short-circuiting normal grace-period computations in the presence of expedited grace periods |
US10282230B2 (en) | 2016-10-03 | 2019-05-07 | International Business Machines Corporation | Fair high-throughput locking for expedited grace periods |
US10146577B2 (en) | 2016-12-11 | 2018-12-04 | International Business Machines Corporation | Enabling real-time CPU-bound in-kernel workloads to run infinite loops while keeping RCU grace periods finite |
US10372510B2 (en) | 2017-03-15 | 2019-08-06 | International Business Machines Corporation | Using expedited grace periods to short-circuit normal grace-period computations |
US11055271B2 (en) | 2017-11-13 | 2021-07-06 | International Business Machines Corporation | Funnel locking for sleepable read-copy update |
US10983840B2 (en) | 2018-06-21 | 2021-04-20 | International Business Machines Corporation | Consolidating read-copy update types having different definitions of a quiescent state |
US11061864B2 (en) | 2018-07-26 | 2021-07-13 | Red Hat, Inc. | Clustered network file system server reclaim via decentralized, coordinated grace period |
US10268610B1 (en) | 2018-08-16 | 2019-04-23 | International Business Machines Corporation | Determining whether a CPU stalling a current RCU grace period had interrupts enabled |
US10831542B2 (en) | 2018-10-01 | 2020-11-10 | International Business Machines Corporation | Prevent counter wrap during update-side grace-period-request processing in tree-SRCU implementations |
US10613913B1 (en) | 2018-10-06 | 2020-04-07 | International Business Machines Corporation | Funnel locking for normal RCU grace period requests |
CN110011857A (zh) * | 2019-04-12 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 一种节点控制器的集群事件处理方法及相关装置 |
CN110069221B (zh) * | 2019-04-30 | 2020-03-06 | 北京华三通信技术有限公司 | 数据释放方法及装置 |
US11386079B2 (en) | 2019-06-26 | 2022-07-12 | International Business Machines Corporation | Replacing preemptible RCU with an augmented SRCU implementation |
US10977042B2 (en) * | 2019-07-26 | 2021-04-13 | International Business Machines Corporation | Using expedited RCU grace periods to avoid out-of-memory conditions for offloaded RCU callbacks |
US11321147B2 (en) | 2019-08-29 | 2022-05-03 | International Business Machines Corporation | Determining when it is safe to use scheduler lock-acquiring wakeups to defer quiescent states in real-time preemptible read-copy update |
CN111680015B (zh) * | 2020-05-29 | 2023-08-11 | 北京百度网讯科技有限公司 | 文件资源处理方法、装置、设备和介质 |
US20230081900A1 (en) * | 2021-09-15 | 2023-03-16 | Cockroach Labs, Inc. | Methods and systems for transactional schema changes |
CN117271141B (zh) * | 2023-11-21 | 2024-02-23 | 新华三技术有限公司 | 资源更新系统、装置及网络设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5727209A (en) * | 1993-07-19 | 1998-03-10 | Sequent Computer Systems, Inc. | Apparatus and method for achieving reduced overhead mutual-exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring |
US6341339B1 (en) * | 1998-03-26 | 2002-01-22 | Compaq Computer Corporation | Apparatus and method for maintaining data coherence within a cluster of symmetric multiprocessors |
WO2003021484A2 (en) * | 2001-08-30 | 2003-03-13 | Bea Systems, Inc | Cluster caching with concurrency checking |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6421787B1 (en) * | 1998-05-12 | 2002-07-16 | Sun Microsystems, Inc. | Highly available cluster message passing facility |
US6389420B1 (en) * | 1999-09-30 | 2002-05-14 | Emc Corporation | File manager providing distributed locking and metadata management for shared data access by clients relinquishing locks after time period expiration |
US20020035559A1 (en) * | 2000-06-26 | 2002-03-21 | Crowe William L. | System and method for a decision engine and architecture for providing high-performance data querying operations |
US20020069192A1 (en) * | 2000-12-04 | 2002-06-06 | Aegerter William Charles | Modular distributed mobile data applications |
US20020165942A1 (en) * | 2001-01-29 | 2002-11-07 | Ulrich Thomas R. | Data path accelerator with variable parity, variable length, and variable extent parity groups |
US7120693B2 (en) | 2001-05-08 | 2006-10-10 | International Business Machines Corporation | Method using two different programs to determine state of a network node to eliminate message response delays in system processing |
US6947940B2 (en) * | 2002-07-30 | 2005-09-20 | International Business Machines Corporation | Uniform name space referrals with location independence |
-
2004
- 2004-11-30 US US10/999,833 patent/US8126843B2/en not_active Expired - Fee Related
-
2005
- 2005-11-10 CN CNB2005101151283A patent/CN100365579C/zh not_active Expired - Fee Related
-
2011
- 2011-10-31 US US13/285,849 patent/US8635193B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5727209A (en) * | 1993-07-19 | 1998-03-10 | Sequent Computer Systems, Inc. | Apparatus and method for achieving reduced overhead mutual-exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring |
US6341339B1 (en) * | 1998-03-26 | 2002-01-22 | Compaq Computer Corporation | Apparatus and method for maintaining data coherence within a cluster of symmetric multiprocessors |
WO2003021484A2 (en) * | 2001-08-30 | 2003-03-13 | Bea Systems, Inc | Cluster caching with concurrency checking |
Also Published As
Publication number | Publication date |
---|---|
US8635193B2 (en) | 2014-01-21 |
US8126843B2 (en) | 2012-02-28 |
US20060117072A1 (en) | 2006-06-01 |
CN1821965A (zh) | 2006-08-23 |
US20120047140A1 (en) | 2012-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100365579C (zh) | 群集范围的读复制更新的系统和方法 | |
US11556543B1 (en) | Streaming joins with synchronization via stream time estimations | |
US11914572B2 (en) | Adaptive query routing in a replicated database environment | |
US11397709B2 (en) | Automated configuration of log-coordinated storage groups | |
US7716249B2 (en) | Transaction and task scheduler | |
CN109074306B (zh) | 分布式存储系统中的混合垃圾收集 | |
CN100412865C (zh) | 效率得到提高的读取-复制更新系统和方法 | |
US10373247B2 (en) | Lifecycle transitions in log-coordinated data stores | |
JP5577350B2 (ja) | 効率的なデータ同期化のための方法及びシステム | |
CN101142551B (zh) | 不使用原子指令而适当处理大量处理器的读复制更新的宽限期检测方法和装置 | |
US8418181B1 (en) | Managing program execution based on data storage location | |
Srinivasan et al. | Aerospike: Architecture of a real-time operational dbms | |
EP3195117B1 (en) | Automated configuration of log-coordinated storage groups | |
CN112997167A (zh) | 数据库系统中的任务调度 | |
US20190034231A1 (en) | Enabling Real-Time CPU-Bound In-Kernel Workloads To Run Infinite Loops While Keeping RCU Grace Periods Finite | |
CN104040481A (zh) | 用于融合、存储和检索增量式备份数据的方法和系统 | |
CN112965951A (zh) | 用于数据库中数据重分布的系统和方法 | |
Lin et al. | Don't Look Back, Look into the Future: Prescient Data Partitioning and Migration for Deterministic Database Systems | |
EP1215590B1 (en) | Method and system for scalable, high performance hierarchical storage management | |
CN114201109A (zh) | 跟踪存储卷在数据传递期间的变化 | |
CN112749156A (zh) | 数据处理方法、数据库管理系统和数据处理设备 | |
KR20200013448A (ko) | 데이터 동기화 트래픽을 최소화하기 위한 방법 및 시스템 | |
Maiyya et al. | Samya: Geo-Distributed Data System for High Contention Data Aggregates | |
Scotti et al. | Comdb2 bloomberg's highly available relational database system | |
US20240126744A1 (en) | Transaction-aware table placement |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |