用于缓存器同步的装置、系统和方法

文档序号:7626276阅读:73来源:国知局
专利名称:用于缓存器同步的装置、系统和方法
技术领域
本发明涉及缓存器同步,更具体地说,涉及多层环境内的同步级联缓存器。
背景技术
在客户机-服务器环境中,客户机常常缓存属于服务器的数据。换句话说,客户机将来自服务器的数据副本存储到耦合到客户机上的例如随机存取存储器(RAM)上,诸如本地RAM。这样,客户机可以在本地访问并修改该被缓存的数据,而不需要跨过网络或其他通信信道通信以远程访问位于服务器的数据。时间、处理器和网络流量的节约可导致客户机-服务器系统的性能的大幅提高。
当客户机缓存来自服务器的数据时,服务器通常阻止其它客户机或应用程序移动或修改服务器上的数据。在某个意义上,客户机检查来自服务器的数据,服务器可以阻止其他客户机中断该访问。但在某些情形下,可用于从客户机回调数据以实现来自其他客户机的数据访问请求。例如,如果另一个客户机要求访问同样的数据,则服务器可以请求第一个客户机将其被缓存的数据与服务器同步。在典型的同步操作中,客户机将被缓存的数据,包括任何修改,发回给服务器,并且中止在本地缓存数据。那么服务器具有可用的最近的数据。将被缓存的、修改的数据从客户机发回服务器可称为将数据清仓返回服务器。
当客户机将数据清仓返回服务器时,为了阻止客户机应用程序或其他用户进一步修改被缓存的数据,客户机通常锁定被缓存的数据以响应来自服务器并遍及同步操作的同步呼叫。只有当缓存器清仓完成时,客户机才释放锁定或解锁缓存器。客户机通常响应同步回调以通知服务器同步完成。
当传统的同步技术应用于提供级联缓存和同步的多层系统时,可中断整个系统。多层结构或环境的一个例子是在层叠在数据库/文件服务器上的应用程序/数据库服务器中运行的企业应用程序。图1描述了传统的多层系统中的同步死锁。简单的多层系统包括三个节点,可称为节点A、节点B和节点C。节点A和节点B构成第一个客户机-服务器关系,类似地,节点B和节点C构成在下游层的第二个客户机-服务器关系。节点B作为节点A的客户机,可以缓存来自节点A的数据。随后,节点C作为节点B的客户机,可以缓存来自节点B的数据,包括最初由节点B从节点A获得的部分或全部数据。
当节点A从另一个客户机接收数据访问请求时,节点A作为服务器,可以请求作为客户机的节点B同步(清仓返回)其被缓存的数据。通常,节点B锁定其缓存器以响应来自节点A的同步请求。随着缓存器耦合到被锁定的节点B,由节点B缓存的数据对任何修改不可用。然而,作为服务器的节点B识别由节点A请求的某些数据已经在下游被作为客户机的节点C缓存。因此,节点B发送同步请求到节点C。
不幸的是,节点C不能向节点B清仓返回其被缓存的数据,因为节点B已经锁定其缓存器以响应来自节点A的同步请求。在这种情况下,当节点A等待节点B清仓返回、节点B等待节点C清仓返回、节点C等待节点B解锁其缓存器以使节点C可清仓返回时,整个系统可能死锁。
在节点A是存储区域网络(SAN)文件系统元数据服务器、节点B是节点A的IBM全存储SAN文件系统客户机、节点B也作为通用因特网文件系统(CIFS)服务器以及节点C是节点B的CIFS客户机的系统中,该问题的一个具体的例子是显然的。如果节点B支持CIFS Oplocks协议,则系统死锁的可能性实质上增加,其中上述协议在相应的同步请求正在进行时,使用考虑所准许的锁定的反转锁定模型(inverted-locking model)。
多阶段提交协议,诸如两阶段提交协议,存在并用在分布式事务处理和协议环境内。然而,这些协议仅仅用于群集或单层或两层系统内的分布式协议、投票以及潜在的锁定。多阶段提交协议还没有在具有超过两层的多层系统内实现。
根据上述的讨论,显然需要在多层环境内存在用于缓存器同步的装置、系统和方法。有益地,这样的装置、系统和方法会克服现有的允许同步死锁的同步问题。

发明内容
已经提出本发明的几个实施例以响应现有技术的现状,特别是响应现有技术还没有被当前可用的缓存器同步系统完全解决的问题和需要。因此,本发明已经提出一种用于数据比较的克服现有技术中的上述讨论的部分或全部缺点的装置、系统和方法。
同步缓存器数据的装置具有逻辑单元,其包含被配置为在功能上执行必要的缓存器同步操作的多个模块。在上述实施例中,这些模块包括同步模块、同步前模块、同步后模块、缓存模块、回调模块以及锁定模块。
在一个实施例中,同步模块同步来自客户机-服务器环境中的两个节点的数据。同步模块还可以参与管理参加节点之间的通信。在另一个例子中,同步模块可方便具有一个或者多个上游和/或下游节点的级联缓存器同步。
在一个实施例中,同步前模决可以发送同步前呼叫到作为客户机的下游节点。在另一个例子中,同步前模块可以接收来自作为服务器的上游节点的同步前呼叫。在再一个实施例中,同步前模块可以发送或者接收同步前确认,其表明下游节点准备接收来自上游节点的同步回调。
在一个实施例中,同步后模块可以发送或接收同步后呼叫和/或对应的同步后确认。通过执行在上游节点和下游节点之间的同步前和同步后通信,缓存装置可以避免多层系统内的死锁。
在一个实施例中,缓存模块将来自上游节点的数据缓存在本地缓存器或远程耦合的缓存器中。缓存装置缓存数据的能力可与包括锁定模块的其他模块的操作有关。
在一个实施例中,回调模块从一个节点向另一个节点发送同步回调或请求。此外,回调模块可从一个节点向另一个节点发送同步前呼叫和/或同步后呼叫。在另一个实施例中,回调模块可协同锁定模块发送同步、同步前和/或同步后回调。
在一个实施例中,锁定模块锁定或者解锁耦合到节点的缓存器。例如,锁定模块可锁定缓存器以响应来自上游节点的同步回调。锁定模块还可以解锁缓存器以响应同步操作的完成。通过锁定缓存器,锁定模块阻止缓存器耦合到的节点或节点上的应用程序修改缓存器中的部分或全部被缓存的数据。具体地,锁定模块阻止应用程序或用户访问从上游节点缓存的并可与上游数据同步的数据。
在一个实施例中,锁定模块锁定缓存器以响应来自上游节点的同步回调,并在向上游节点发送同步完成通知之前解锁缓存器。在再一个实施例中,锁定模块可阻止在同步前通信或者同步后通信中锁定缓存器。
本发明还提出一种同步缓存器数据的系统。在一个实施例中,该系统可以在具有三个或更多个节点的多层系统中实现。具体地,在一个实施例中,该系统可以包括上游节点、中间节点以及下游节点。在另一个实施例中,该系统可具有服务器、第一下游节点和第二下游节点。该系统还包括缓存装置,其在将耦合到中间节点(例如第一下游节点)的被缓存的数据与耦合到上游节点(例如服务器)的数据同步之前,将耦合到下游节点(例如第二下游节点)的被缓存的数据与耦合到中间节点(例如第一下游节点)的被缓存的数据同步。
在另一个实施例中,该系统还可以包括同步前模块以在同步操作之前接收从上游节点到中间节点的同步前呼叫。在另一个实施例中,该系统还可以包括锁定模块,其响应同步前呼叫并在来自上游节点的同步呼叫之前维持耦合到中间节点的第一缓存器解锁。锁定模块还可以锁定第一缓存器以响应来自上游节点的同步呼叫。
还提出了一种存储程序的信号承载介质,所述程序在执行时执行一个或多个操作以同步缓存器数据。在一个实施例中,这些操作包括接收来自耦合到第一下游节点的上游节点的同步前呼叫,锁定耦合到第一下游节点的第一缓存器以响应来自上游节点的同步呼叫,以及将上游节点上的源数据与第一缓存器上的被缓存的数据同步。
在另一个实施例中,这些操作还可包括发送来自耦合到第二下游节点的第一下游节点的同步回调,以将第一缓存器上的被缓存的数据与耦合到第二下游节点的第二缓存器上的被缓存的数据同步。在另一个实施例中,这些操作还可包括在第一缓存器被锁定之前发送同步回调。在另一个实施例中,这些操作还可包括锁定第一缓存器以响应第一和第二缓存器同步的完成。
在另一个实施例中,这些操作还可包括接收从上游节点到第一下游节点的同步后呼叫,以响应将第一缓存器与上游节点同步的完成。在另一个实施例中,这些操作还可包括在第一下游节点的第一缓存器上缓存来自上游节点的源数据。在另一个实施例中,这些操作还可包括阻止第一下游节点修改第一缓存器上的被缓存的数据。在另一个实施例中,这些操作还可包括阻止耦合到第一下游节点的第二下游节点将来自第一缓存器的数据缓存到耦合到第二下游节点的第二缓存器上。
本发明还提出一种同步缓存器数据的方法。在公开的实施例中,该方法实质上包括执行上述提出的关于已描述的装置和系统的操作的功能所必需的操作。而且,该方法的部分或者全部操作实质上可类似于在执行信号承载介质上的程序时所执行的操作。
在整个说明书中,对于特征、优点或者类似的语言,并不意味着本发明所能实现的所有特征和优点应在本发明的任意一个实施例中体现。而是说,有关特征和优点的语言应理解为是指结合实施例所描述的特定特征、优点或特性至少包括在本发明的一个实施例中。因此,整个说明书中关于特征、优点和类似的语言的讨论可以指同一个实施例,除了不必要的以外。
而且,所描述的本发明的特征、优点或特性可以采用适当的方式结合在一个或多个实施例中。本领域的普通技术人员将认识到本发明可以实现,而无需特定实施例的一个或多个特定特征或优点。在其他情况下,在某些实施例中可发现没有在本发明的所有实施例中提供的附加的特征和优点。
通过下面的说明和所附的权利要求,本发明的这些特征和优点将会变得更加明显,或者可通过后面介绍的本发明的实施方式体会。


为了更好地理解本发明的优点,参考附图中图示的特定实施例,对在上面简要描述的本发明进行更具体的描述。应理解这些附图仅仅描述了本发明的典型实施例,因此不能认为是对本发明范围的限制,本发明通过附图描述和说明附加的特征和细节,其中图1是说明传统的同步死锁的示意性流程图;图2是说明分布式多层系统的一个实施例的示意性框图;图3是说明缓存装置的一个实施例的示意性框图;图4是说明可结合图3的缓存装置执行的同步方法的一个实施例的示意性框图;图5是说明可在多层系统上执行的级联同步方法的一个实施例的示意性框图;图6至图8是说明可在分布式多层系统上执行的级联同步方法的更详细的实施例的示意性框图。
具体实施例方式
本说明书所描述的许多功能单元已被标记为模块,以更具体地强调其实现的独立性。例如,模块可以实现为包括常用VLSI电路或门阵列、现有的诸如逻辑芯片、晶体管或其他分立元件的半导体器件的硬件电路。模块还可以在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件或类似的器件的可编程硬件器件中实现。
模块还可以在由各种类型的处理器执行的软件中实现。例如,同样的可执行代码的模块可以包括一个或多个计算机指令的物理或逻辑方框,其例如可以是对象、程序或函数。不过,执行同样的模块不需要物理地放在一起,而可以包括存储在不同位置中的不同的指令,当指令在逻辑上结合在一起时,其包括模块并实现模块的所述目的。
实际上,可执行代码的模块可以是单个指令或若干个指令,甚至可以分布在几个不同的代码片段上、在不同的程序中和在几个存储器件上。类似地,操作数据可以在模块内识别和显示,可以用任何适合的形式实现以及在任何适当类型的数据结构内组织。操作数据可以集中为单一的数据组,或者可以分布在不同的位置上,包括在不同的存储器件上,并且可以仅仅作为系统或网络上的电子信号至少部分地存在。
图2描述了分布式多层系统200的一个实施例。所描述的多层系统200包括节点A 202、节点B 204和节点C 206。这里“A”、“B”和“C”的命名仅仅为了方便,在可选择的实施例中,节点202-206可以用其他的指示符指定。节点A 202也可以被称作第一节点、上游节点等。类似地,节点B 204也可以被称作第二节点、中间节点或第一下游节点。同样地,节点C 206也可以被称作第三节点、下游节点或第二下游节点。对特定节点202-206的说明和参考应当使所描述的节点202-206清楚。
在另一个实施例中,多层系统200可包括除了三个节点202-206之外的在单个层内附加的上游节点(在节点A 202上方)、附加的下游节点(在节点C 206下方)和/或附加的群集节点,其中,每一个层由所描述的节点202-206中的一个节点表示。在某些实施例中,分布式客户机-服务器体系可以跨过单个层使用。
在一个实施例中,节点A 202包括缓存装置210和多个数据结构212。缓存装置210可以部分或整体地设置在节点A 202上,或者可以从远程位置耦合到节点A 202上。参照图3,更详细地说明和描述缓存装置210的一个例子。数据结构212可包括任何类型的数据结构,包括数据文件、可执行文件、目录、数据库等等,数据结构可以存储在节点A 202上或者对于节点A是可访问的。仅仅为了说明的目的,数据结构212被标明为“A”到“E”。这些数据结构212也可以称作源数据结构或简单地说源数据。
在一个实施例中,节点B 204包括缓存装置220和相应的缓存器B 222。缓存装置220实质上可类似于节点A 202的缓存装置210,并且可以设置在节点B 204上或者可以耦合到节点B 204。同样地,缓存器B 222可以设置在节点B 204上,或者可以从远程位置耦合到节点B 204。此外,缓存器B 222可以是耦合到节点B 204的唯一的缓存器,或者可以是耦合到节点B204的多个缓存器中的一个。缓存器B 222包括一个或多个数据结构224,其从耦合到节点A 202的源数据212中缓存。缓存器B 222还可以包括其它数据结构224,其不直接从源数据212中缓存。
在一个实施例中,节点C 206包括缓存装置230和相应的缓存器C 232。缓存装置230实质上可类似于节点A 202的缓存装置210和/或节点B 204的缓存装置220。此外,缓存装置230可以设置在节点C 206上,或者可以从远程位置耦合到节点C 206。同样地,缓存器C 232可以设置在节点C206上,或者可以从远程位置耦合到节点C 206。而且,缓存器C 232可以是耦合到节点C 206的唯一的缓存器,或者可以是耦合到节点C 206的多个缓存器中的一个。缓存器C 232包括一个或多个数据结构234,其可以从耦合到节点B 204的被缓存的数据224中缓存,被缓存的数据224至少部分地从耦合到节点A 202的源数据212中缓存。
从图2中可以看出,某些源数据结构212可以被缓存在多层系统200的多个层中。因此,为了正确地同步节点A 202处的源数据结构212,需要执行一个或多个级联同步操作。例如,需要将缓存器C 232处的被缓存的数据234与缓存器B 222处的被缓存的数据224同步,随后,需要将缓存器B 222处的被缓存的数据224与耦合到节点A 202的源数据212同步。
图3描述了缓存装置300的一个实施例,其实质上类似于图2的缓存装置210、220、230中的一个或多个。图示的缓存装置300包括同步模块302、同步前模块304和同步后模块306。图示的缓存装置300还包括缓存模块308、回调模块310和锁定模块312。
在一个实施例中,同步模块302同步来自客户机-服务器环境中的两个节点202-206的数据。同步模块302可以独立地或者协同耦合到同步操作所涉及的节点202-206中的一个的另一个同步模块302执行同步操作。在另一个实施例中,同步模块302还可以参与在参加节点202-206之间的管理通信以管理同步过程。例如,当同步模块302耦合到中间节点B 204时,同步模块302可以在中间节点B 204从上游节点A 202接收同步呼叫。在另一个例子中,同步模块302可以方便与两个不同的节点(诸如上游节点202和下游节点206)的级联缓存同步。
在一个实施例中,当同步前模块304耦合到作为服务器的上游节点时,可以发送同步前呼叫到作为客户机的下游节点。在另一个实施例中,当同步前模块304耦合到作为客户机的下游节点时,可以从作为服务器的上游节点接收同步前呼叫。在再一个实施例中,同步前模块304可分别向上游节点发送同步前确认或者从下游节点接收同步前确认。在一个实施例中,同步前确认表明下游节点准备从上游节点接收同步回调。
类似地,在某些实施例中,同步后模块306被配置成发送或接收同步后呼叫和/或相应的同步后确认。通过在上游节点和下游节点之间执行同步前和同步后通信,缓存装置300可以避免例如反转锁定模式,该模式在相应的同步请求正在处理时自动认为锁定被准许。另外,接收同步前呼叫的中间节点具有即将到来的同步呼叫的提前通知,不会导致中间缓存器的锁定或系统死锁。这样,中间缓存器有机会在接收或确认上游同步的同步请求之前执行下游同步。
在一个实施例中,缓存模块308将来自上游节点的数据缓存到本地或远程耦合的缓存器中。例如,缓存模块308在耦合到中间节点B 204时,可以将来自上游节点A 202的源数据212缓存到缓存器B 222上。
在一个实施例中,回调模块310从一个节点向另一个节点发送同步回调或请求。此外,回调模块310可以从一个节点向另一个节点发送同步前呼叫和/或同步后呼叫。在另一个实施例中,如下面所述,回调模块310协同锁定模块312发送同步、同步前和/或同步后回调。
在一个实施例中,锁定模块312锁定或解锁耦合到节点的缓存器。例如,锁定模块312可以锁定缓存器以响应来自上游节点的同步回调。锁定模块312还可以解锁缓存器以响应同步操作的完成。通过锁定缓存器,锁定模决312阻止缓存器耦合到的节点或节点上的应用程序修改缓存器内的部分或全部被缓存的数据。具体地,锁定模块312阻止应用程序或用户访问从上游节点中缓存的并与上游数据同步的数据。
在一个实施例中,锁定模块312仅锁定缓存器以响应来自上游节点的同步回调,并且在向上游节点发送同步完成通知之前解锁缓存器。在再一个实施例中,锁定模块312可在同步前或同步后通信期间阻止锁定缓存器。锁定模块312和回调模块310以及缓存装置300的其他模块302-308的相互关联的操作将参照下面的附图详细地描述。
图4描述了可结合图3的缓存装置300执行的同步方法400的一个实施例。具体地,同步方法400描述了在多层结构的两个节点之间的多个同步阶段的实现。在一个实施例中,这些阶段可以按照级联的方式对例如图2的多层系统200中的每一个客户机-服务器关系执行。
图示的同步方法400通过执行同步前阶段402开始,在该阶段中,同步前通信可以发生在上游(例如服务器)节点和下游(例如客户机)节点之间。一旦完成了同步前阶段,就执行同步阶段404,在该阶段中,耦合到下游节点的被缓存的数据与耦合到上游节点的数据同步。在同步阶段之后,执行同步后阶段406。如上所述,在同步阶段期间,锁定下游节点,而在同步前和同步后阶段期间,保持解锁。
图5描述了可以结合图2的多层系统200执行的级联同步方法500的一个实施例。在一个实施例中,下游缓存器的级联同步出现在上游缓存器的同步前期间。虽然这里特别参照两个节点组A-B和B-C(每一组都代表客户机-服务器关系)描述了级联同步方法500,但是级联同步方法500可以对任何数量的节点202-206和节点组执行。
当上游节点A202启动上游节点组A-B的同步前阶段502时,图示的级联同步方法500开始。节点B 204上的缓存装置220识别下游节点C 206的存在,然后启动下游节点组B-C的同步前阶段504。换句话说,节点B 204确定是否存在下游节点,即节点C 206,其已经缓存来自缓存器B 222的数据。接下来,分别执行下游节点组B-C的同步阶段和同步后阶段506、508。
在下游节点组B-C的同步后阶段完成之后,节点B 204通知上游节点A202节点B 204准备与上游节点A 202同步。接下来,分别执行上游节点组A-B的同步阶段和同步后阶段510、512。这样,在允许上游节点组A-B同步和锁定缓存器B 222之前,同步耦合到下游节点组B-C的下游缓存器。
图6到图8描述了可以在诸如图2的多层系统200的多层系统中执行的级联同步方法600的更详细的实施例。具体地,图6和图8描述了上游节点A 202与中间节点B 204之间的接口的一个实施例。同样地,图7描述了中间节点B 204与下游节点C 206之间的接口的一个实施例。
再一次强调,虽然级联同步方法600是特别针对节点A、B和C 202-206(代表两个多层客户机-服务器关系)描述的,但是级联同步方法600可以在具有超过三个节点202-206的和/或具有分布的或群集的层的多层系统200中执行。
图示的级联同步方法600开始于由上游节点A 202识别触发事件(步骤602)。在一个实施例中,触发事件可以是来自另一个客户机或节点的数据访问请求。随后,上游节点A 202不允许由中间节点B 204进一步缓存(步骤604)。换句话说,中间节点B 204不能缓存耦合到上游节点A 202的部分或全部源数据212,除非数据在上游节点A 202不允许由中间节点B204进一步缓存之前就已经被缓存。然后,上游节点A 202发送同步前呼叫到中间节点B 204(步骤606)。在一个实施例中,耦合到上游节点A 202的缓存装置210的同步前模块304发送同步前呼叫到中间节点B 204(步骤606)。在另一个实施例中,耦合到上游节点A 202的缓存装置210的回调模块310可发送同步前呼叫(步骤606)。
然后,中间节点B 204接收来自上游节点A 202的同步前呼叫(步骤608)。在一个实施例中,耦合到中间节点B 204的缓存装置220的同步前模块304接收来自上游节点A 202的同步前呼叫(步骤608)。响应同步前呼叫,随后,中间节点B 204不允许由下游节点C 206缓存存储在缓存器B 222中的被缓存的数据224(步骤610)。图示的级联同步方法600接下来继续在图7中描述。
在中间节点B 204不允许由下游节点C 206缓存(步骤610)之后,中间节点B 204向下游节点C 206发送同步前呼叫(步骤702)。在一个实施例中,同步前模块304或者耦合到中间节点B 204的缓存装置220的回调模块310向下游节点C 206发送同步前呼叫(步骤702)。
接下来,下游节点C 206接收来自中间节点B 204的同步前呼叫(步骤704),由于没有其他的下游节点,因此下游节点C 206发送同步前确认到中间节点B 204(步骤706)。在一个实施例中,耦合到下游节点C 206的缓存装置230的同步前模块304接收来自中间节点B 204的同步前呼叫(步骤704),并发送同步前确认到中间节点B 204(步骤706)。
接下来,中间节点B 204接收来自下游节点C 206的同步前确认(步骤708),并且随后向下游节点C 206发送同步呼叫(步骤710)。可选择地,中间节点B 204响应从下游节点C 206接收同步前呼叫,可确定缓存器C 232是否需要与缓存器B 222同步。在一个实施例中,耦合到中间节点B 204的缓存装置220的同步前模块304接收同步前确认(步骤708),并且,耦合到中间节点B 204的缓存装置220的同步模块302或者回调模块310发送同步呼叫(步骤710)。
响应从中间节点B 204接收同步呼叫(步骤712),下游节点C 206可锁定缓存器C 232,使得耦合到下游节点C 206的被缓存的数据234不能被修改(步骤714)。在一个实施例中,耦合到下游节点C 206的缓存装置230的同步模块302接收来自中间节点B 204的同步呼叫(步骤712)。当缓存器C 232被锁定时,缓存器C 232中的被缓存的数据234被清仓返回到耦合到中间节点B 204的缓存器B 222(步骤716)。
在数据234被清仓返回到缓存器B 222(步骤716)之后,下游节点C206可解锁缓存器C 232(步骤718)。在一个实施例中,耦合到下游节点C 206的缓存装置230的锁定模块312可以锁定和解锁缓存器C 232(步骤714和步骤718)。而且,耦合到下游节点C 206的缓存装置230的同步模块302可使数据清仓(步骤716)便利。
接下来,下游节点C 206发送同步完成通知到中间节点B 204(步骤720)以表明缓存器C 232的被缓存的数据234已经成功地被清仓返回到缓存器B 222(步骤716)。在一个实施例中,耦合到下游节点C 206的缓存装置230的同步模块302发送同步完成通知到中间节点B 204(步骤720)。
然后,中间节点B 204从下游节点C 206接收同步完成通知(步骤722),并发送同步后呼叫到下游节点C 206(步骤724)。在一个实施例中,耦合到中间节点B 204的缓存装置220的同步模块302和同步后模块306分别接收同步完成通知(步骤722)并发送同步后呼叫(步骤724)。在接收到同步后呼叫(步骤726)时,下游节点C 206发送同步后确认到中间节点B204(步骤728)。在一个实施例中,耦合到下游节点C 206的缓存装置230的同步后模块306接收同步后呼叫(步骤726),并发送同步后确认(步骤728)。
然后,中间节点B 204从下游节点C 206接收同步后确认(步骤730),中间节点B 204与下游节点C 206之间的接口结束。在一个实施例中,耦合到中间节点B 204的缓存装置220的同步后模块306从下游节点C 206接收同步后确认(步骤730)。图示的级联同步方法600接下来在图8中继续描述。
在中间节点B 204接收到来自下游节点C 206的同步后确认(步骤730)之后,中间节点B 204发送同步前确认到上游节点A 202(步骤802)。在一个实施例中,耦合到中间节点B 204的缓存装置220的同步前模块304发送同步前确认到上游节点A 202(步骤802)。
然后,上游节点A 202从中间节点B 204接收同步前确认(步骤804),随后,发送同步呼叫到中间节点B 204(步骤806)。在一个实施例中,耦合到上游节点A 202的缓存装置210的同步前模块304接收同步前确认(步骤804),并且,耦合到上游节点A 202的缓存装置210的同步模块302或者回调模块310向上游节点A 202发送同步呼叫(步骤806)。
响应接收来自上游节点A 202的同步呼叫(步骤808),中间节点B 204可锁定缓存器B 222(步骤810),使得耦合到中间节点B 204的被缓存的数据224不能被修改。在一个实施例中,耦合到中间节点B 204的缓存装置220的同步模块302接收来自上游节点A 202的同步呼叫(步骤808)。当缓存器B 222被锁定时,缓存器B 222中的被缓存的数据224被清仓返回到上游节点A 202(步骤812)。
在数据224被清仓返回到上游节点A 202(步骤812)之后,中间节点B 204可解锁缓存器B 222(步骤814)。在一个实施例中,耦合到中间节点B 204的缓存装置220的锁定模块312可锁定和解锁缓存器B 222(步骤810和步骤814)。而且,耦合到中间节点B 204的缓存装置220的同步模块302可使数据清仓(步骤812)便利。
随后,中间节点B204发送同步完成通知到上游节点A 202(步骤816),以表明缓存器B 222的被缓存的数据224已经成功地被清仓返回到上游节点A 202(步骤812)。在一个实施例中,耦合到中间节点B 204的缓存装置220的同步模块302发送同步完成通知到上游节点A 202(步骤816)。
然后,上游节点A202接收来自中间节点B 204的同步完成通知(步骤818),并发送同步后呼叫到上游节点A 202(步骤820)。在一个实施例中,耦合到上游节点A 202的缓存装置210的同步模块302和同步后模块306分别接收同步完成通知(步骤818)并发送同步后呼叫(步骤820)。在接收到同步后呼叫(步骤822)时,中间节点B 204重新启动由下游节点C 206缓存(步骤824),并向上游节点A 202发送同步后确认(步骤826)。可选择地,中间节点B 204可在发送同步完成通知(步骤816)之后重新启动由下游节点C 206缓存(步骤824)。在一个实施例中,耦合到中间节点B 204的缓存装置220的同步后模块306接收同步后呼叫(步骤822),并发送同步后确认(步骤826)。
然后,上游节点A 202从中间节点B 204接收同步后确认(步骤828),并重新启动由中间节点B 204缓存(步骤830)。然后,上游节点A 202与中间节点B 204之间的接口结束,图示的级联同步方法600结束。在一个实施例中,耦合到上游节点A 202的缓存装置210的同步后模块306接收来自中间节点B 204的同步后确认(步骤828)。
这里所包括的示意性流程图一般作为逻辑流程图。同样地,所描述的顺序和所标记的操作是说明本发明方法的一个实施例。可以设想其他的在功能、逻辑或效果上等效于图示方法的一个或多个操作或者一部分的操作和方法。此外,所使用的公式和符号是用于说明本方法的逻辑操作,而不应理解为对本方法范围的限制。虽然在流程图中使用了各种类型的箭头和线条,但这些箭头和线条也不应理解为对相应方法的范围的限制。实际上,某些箭头或连接器仅仅用于表明本方法的逻辑走向。例如,箭头可以表明在所描述方法所列举的操作之间的一段未指定时期的等待或监视期间。此外,具体方法的步骤顺序既可以严格按照所示的相应操作的顺序,也可以不遵循该顺序。
在整个说明书,提到“一个实施例”、“某个实施例”或类似的语言是指结合实施例描述的具体的特征、结构或特性至少包括在本发明的至少一个实施例中。因而,在整个说明书中出现的语句“在一个实施例中”、“在某个实施例中”和类似的语言,除非没有必要,都是指同一个实施例。
关于信号承载介质,可以采用能够生成信号、导致信号生成或导致数字处理装置上的机器可读指令的程序执行的任何形式。信号承载介质可以体现为传输线路、CD盘、DVD盘、磁带、伯努利(Bernoulli)驱动器、磁盘、穿孔卡、快闪存储器、集成电路或其他数字处理设备存储器件。
而且,本发明的特征、结构或特性可以采用适当的方式结合在一个或多个实施例中。在下面的描述中,提供了许多具体的细节,诸如编程、软件模块、用户选择、网络事务处理、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等例子,以提供本发明的实施例的完全理解。不过,相关领域的技术人员应认识到,本发明可以在不具备一个或多个特定细节、或者具有其他方法、组件、材料等情况下实施。在其他情况下,没有详细地显示或描述已知的结构、材料或操作,以避免掩盖本发明的某些方面。
在不偏离本发明的精神或本质特征的情况下,本发明可以以其他特定形式体现。所描述的实施例在所有方面都应被认为只是说明性的而非限制性的。因此,本发明的范围由所附的权利要求书指明,而不是先前的描述。在与权利要求等同的含义和范围内的所有变化都应包括在该范围内。
权利要求
1.一种同步缓存器数据的装置,所述装置包括同步前模块,被配置为接收来自耦合到第一下游节点的上游节点的同步前呼叫;锁定模块,被配置为锁定耦合到所述第一下游节点的第一缓存器,以响应来自所述上游节点的同步呼叫;以及同步模块,被配置为将所述上游节点上的源数据与所述第一缓存器上的被缓存的数据同步。
2.根据权利要求1所述的装置,还包括回调模块,被配置为发送来自耦合到第二下游节点的所述第一下游节点的同步回调,以将所述第一缓存器上的被缓存的数据与耦合到所述第二下游节点的第二缓存器上的被缓存的数据同步。
3.根据权利要求1所述的装置,其中,所述回调模块被配置为在所述第一缓存器被锁定之前发送同步回调。
4.根据权利要求2所述的装置,其中,所述锁定模块被配置为锁定所述第一缓存器,以响应所述第一缓存器与所述第二缓存器的同步的完成。
5.根据权利要求1所述的装置,还包括同步后模块,被配置为接收从所述上游节点到所述第一下游节点的同步后呼叫,以响应所述第一缓存器与所述上游节点的同步的完成。
6.根据权利要求1所述的装置,其中,所述同步模块还被配置为接收来自所述上游节点的同步呼叫。
7.根据权利要求1所述的装置,还包括缓存模块,被配置为将来自所述上游节点的源数据缓存到所述第一下游节点的第一缓存器上。
8.根据权利要求1所述的装置,其中,锁定所述第一缓存器包括阻止所述第一下游节点修改所述第一缓存器上的被缓存的数据。
9.根据权利要求1所述的装置,其中,所述锁定模块还被配置为阻止耦合到所述第一下游节点的第二下游节点将来自所述第一缓存器的数据缓存到耦合到所述第二下游节点的第二缓存器上。
10.一种在多层环境中方便级联同步的装置,所述装置包括同步模块,被配置为在将中间缓存器上的被缓存的数据与上游服务器同步之前,将下游缓存器上的被缓存的数据与中间缓存器上的被缓存的数据同步;以及锁定模块,被配置为锁定所述中间缓存器,以响应所述下游缓存器与所述中间缓存器的同步。
11.根据权利要求10所述的装置,还包括同步前模块,被配置为向所述上游服务器发送同步前确认,以响应所述下游缓存器与所述中间缓存器的同步。
12.根据权利要求10所述的装置,还包括同步后模块,被配置为接收来自所述上游服务器的同步后呼叫,以响应所述中间缓存器与所述上游服务器的同步。
13.根据权利要求10所述的装置,其中,所述锁定模块还被配置为解锁所述中间缓存器,以响应所述中间缓存器与所述上游服务器的同步。
14.一种同步缓存器数据的系统,所述系统包括具有源数据的服务器;耦合到所述服务器的第一下游节点,所述第一下游节点耦合到其上具有被缓存的来自服务器的源数据的第一缓存器;耦合到所述第一下游节点的第二下游节点,所述第二下游节点耦合到其上具有被缓存的来自所述第一缓存器的包括来自服务器的源数据的数据的第二缓存器;耦合到所述第一下游节点的缓存装置,所述缓存装置被配置为在将所述第一缓存器上的被缓存的数据与所述源数据同步之前,将所述第二缓存器上的被缓存的数据与所述第一缓存器上的被缓存的数据同步。
15.根据权利要求14所述的系统,还包括同步前模块,被配置为在同步操作之前接收从所述服务器到所述第一下游节点的同步前呼叫。
16.根据权利要求15所述的系统,还包括锁定模块,被配置为响应所述同步前呼叫并在来自所述服务器的同步之前维持所述第一缓存器解锁。
17.根据权利要求16所述的系统,其中,所述锁定模块还被配置为锁定所述第一缓存器,以响应来自所述服务器的同步呼叫。
18.一种信号承载介质,可有形地包含可由数字处理装置执行的机器可读指令的程序,以执行同步缓存器数据操作,所述操作包括接收来自耦合到第一下游节点的上游节点的同步前呼叫;锁定耦合到所述第一下游节点的第一缓存器,以响应来自所述上游节点的同步呼叫;以及将所述上游节点上的源数据与所述第一缓存器上的被缓存的数据同步。
19.根据权利要求18所述的信号承载介质,其中,所述指令还包括发送来自耦合到第二下游节点的所述第一下游节点的同步回调以将所述第一缓存器上的被缓存的数据与耦合到所述第二下游节点的第二缓存器上的被缓存的数据同步的操作。
20.根据权利要求19所述的信号承载介质,其中,所述指令还包括在所述第一缓存器被锁定之前发送同步回调的操作。
21.根据权利要求19所述的信号承载介质,其中,所述指令还包括锁定所述第一缓存器以响应所述第一缓存器与所述第二缓存器的同步的完成的操作。
22.根据权利要求18所述的信号承载介质,其中,所述指令还包括接收从所述上游节点到所述第一下游节点的同步后呼叫以响应所述第一缓存器与所述上游节点的同步的完成的操作。
23.根据权利要求18所述的信号承载介质,其中,所述指令还包括接收来自所述上游节点的同步呼叫的操作。
24.根据权利要求18所述的信号承载介质,其中,所述指令还包括将来自所述上游节点的源数据缓存到所述第一下游节点的第一缓存器上的操作。
25.根据权利要求18所述的信号承载介质,其中,所述指令还包括阻止所述第一下游节点修改所述第一缓存器上的被缓存的数据的操作。
26.根据权利要求18所述的信号承载介质,其中,所述指令还包括阻止耦合到所述第一下游节点的第二下游节点将来自所述第一缓存器的数据缓存到耦合到所述第二下游节点的第二缓存器上的操作。
27.一种用于同步缓存器数据的方法,所述方法包括接收来自耦合到第一下游节点的上游节点的同步前呼叫;锁定耦合到所述第一下游节点的第一缓存器,以响应来自所述上游节点的同步呼叫;以及将所述上游节点上的源数据与所述第一缓存器上的被缓存的数据同步。
28.根据权利要求27所述的方法,还包括发送来自耦合到第二下游节点的所述第一下游节点的同步回调,以将所述第一缓存器上的被缓存的数据与耦合到所述第二下游节点的第二缓存器上的被缓存的数据同步。
29.根据权利要求28所述的方法,还包括在所述第一缓存器被锁定之前发送同步回调。
30.根据权利要求28所述的方法,还包括锁定所述第一缓存器,以响应所述第一缓存器与所述第二缓存器的同步的完成。
31.一种用于同步缓存器数据的装置,所述装置包括用于接收来自于耦合到第一下游节点的上游节点的同步前呼叫的单元;用于锁定耦合到所述第一下游节点的第一缓存器以响应来自所述上游节点的同步呼叫的单元;以及用于将所述上游节点上的源数据与所述第一缓存器上的被缓存的数据同步的单元。
全文摘要
公开了一种用于在具有多个客户机-服务器关系的多层系统内缓存器同步的装置、系统和方法。所述装置包括同步前模块、锁定模块和同步模块。同步前模块接收来自耦合到第一下游节点的上游节点的同步前呼叫。锁定模块锁定耦合到第一下游节点的第一缓存器以响应来自上游节点的同步呼叫。同步模块将上游节点上的源数据与第一缓存器上的被缓存的数据同步。所述装置还可包括同步后模块以执行任何必要的清除动作。有利地,所述装置、系统和方法降低了由于第一下游缓存器过早的锁定而造成的系统死锁的可能性,这会阻止后续的下游缓存器与第一缓存器同步。
文档编号H04L29/06GK1777178SQ200510115200
公开日2006年5月24日 申请日期2005年11月14日 优先权日2004年11月16日
发明者V·保罗, S·A·皮佩, S·G·拉奥 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1