CN105580335A - 用于授予对共享资源的访问的增强机制 - Google Patents
用于授予对共享资源的访问的增强机制 Download PDFInfo
- Publication number
- CN105580335A CN105580335A CN201480053191.6A CN201480053191A CN105580335A CN 105580335 A CN105580335 A CN 105580335A CN 201480053191 A CN201480053191 A CN 201480053191A CN 105580335 A CN105580335 A CN 105580335A
- Authority
- CN
- China
- Prior art keywords
- node
- response
- access
- sender
- recipient
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0893—Assignment of logical groups to network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/28—Timers or timing mechanisms used in protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0817—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
Abstract
提供在包括多个节点的数据处理***中用于控制对代码的临界区的访问的机制,每个节点是一个计算设备。这些机制通过数据处理***的发送者节点发送用于请求对代码的临界区的访问的访问请求。代码的临界区是访问共享资源的一部分代码。这些机制在发送者节点中从数据处理***中的多个接收者节点接收对访问请求的响应。该响应中的每个响应包括由发送响应的对应接收者节点感知到的活动节点的数目。这些机制通过发送者节点基于在从接收者节点接收到的响应中的每个响应中识别出的活动节点的数目来控制对代码的临界区的访问。
Description
技术领域
本申请总体涉及改进的数据处理装置和方法,并且更具体地涉及用于授予对共享资源的访问的机制。
背景技术
Ricart-Agrawala算法是用于在分布式***上的互斥的算法。该算法由GlennRicart和AshokAgrawala开发,并且是移除了对释放消息的需要的Lamport的分布式互斥算法的扩展和优化。利用Ricart-Agrawala算法,当分布式环境中的节点(计算设备)需要进入临界区——即访问不能同时由其他节点访问的共享资源(例如,数据结构、设备、等等)的一部分代码——时,节点向它知道的所有其他节点发送指示进入临界区的需要的通知。
响应于接收到通知,如果接收节点不在临界区中,即不访问共享资源,或者将要进入临界区但是具有比发送者节点更低的优先级值,则接收节点将批准由发送者节点对临界区的访问的授予。如果接收节点已经在临界区中,即访问共享资源,则接收节点将不批准由发送者节点对临界区的访问的授予。
在等待时间经过之后,发送者节点确定它是否已经从所有接收节点接收到指示对临界区的访问的授予的批准的响应消息。如果是的话,发送者节点将进入临界区并且访问共享资源。如果发送者节点没有获得对临界区的访问的授予的批准,则发送者节点将再次发出通知并等待响应,基本上重复该尝试以获得对临界区的访问。
发明内容
在一个说明性实施例中,一种在包括多个节点的数据处理***中用于控制对代码的临界区的访问的方法,每个节点是一个计算设备。该方法包括由数据处理***的发送者节点发送用于请求对代码的临界区的访问的访问请求。代码的临界区是访问共享资源的一部分代码。该方法还包括由发送者节点从数据处理***中的多个接收者节点接收对访问请求的响应。响应中的每个响应包括由发送响应的对应接收者节点感知到的活动节点的数目。另外,该方法包括由发送者节点基于在从接收者节点接收到的响应中的每个响应中识别出的活动节点的数目来控制对代码的临界区的访问。
在其他说明性实施例中,提供一种计算机程序产品,其包括具有计算机可读程序的计算机可用或可读介质。计算机可读程序当在计算设备上运行时使计算设备执行以上关于方法说明性实施例概述的操作中的各个操作及其组合。
在又一说明性实施例中,提供一种***/装置。该***/装置可以包括一个或多个处理器和耦合到一个或多个处理器的存储器。存储器可以包括指令,当指令由一个或多个处理器运行时使一个或多个处理器执行以上关于方法说明性实施例概述的操作中的各个操作及其组合。
本发明的这些和其他特征和优点将在本发明的示例实施例的下面的具体实施方式中进行描述,或者鉴于在本发明的示例实施例的下面的具体实施方式对本领域普通技术人员将变得显而易见。
附图说明
本发明以及其优选使用模式和进一步的目标和优点将通过在结合附图阅读时参考说明性实施例的下面的具体实施方式得到更好地理解。
图1是说明性实施例的各方面可以被实施在其中的分布式数据处理***的示例图;
图2是说明性实施例的各方面可以被实施在其中的计算设备的示例方框图;
图3是根据一个说明性实施例的计算设备集群的示例图;
图4是根据一个说明性实施例的临界区访问控制引擎的主要可操作元件的示例方框图;
图5是根据一个说明性实施例的概述用于在节点到来之后抑制对访问请求的传输的示例操作的流程图;并且
图6是根据一个说明性实施例的概述用于临界区访问控制的示例操作的流程图。
具体实施方式
如以上所提到的,Ricart-Agrawala算法可以被用于控制对被用于访问共享资源(例如,数据结构、设备、等等)的代码的临界区的访问。Ricart-Agrawala算法在其中已知多少节点(计算设备)可操作、节点的该数目保持稳定并且每个节点具有到分布式网络中的每个其他节点的连接性的网络中效果很好。然而,在其中节点被散布在地理边界上的实际情形中,例如在云计算等的情况下,这并非总是如此。节点交换心跳消息以感测可能在节点获得增加的、移除的、丢失的网络连接、获得网络的排斥等时不断地或定期地变化的拓扑结构。心跳消息实质上向发送心跳消息的节点所连接到的所有节点通知特定节点可操作。接收节点必须基于这些心跳消息来更新列出可操作节点的它们自己的数据结构以指示接收节点“看到”的哪些节点为可操作的。如果没有在预定时间段内从节点接收到心跳消息,则节点可能不被检测作为拓扑结构的部分或者可以被认为是其他节点不可操作的。
感测分布式网络的拓扑结构花费大量时间,例如若干秒。因此,如其当前已知的,Ricart-Agrawala算法在分布式网络中的节点成员关系波动的情况下不能够被实施在分布式网络中,并且因此,需要对分布式网络拓扑结构的感测。存在引起已知的Ricart-Agrawala算法不能适当地被实施在拓扑结构感测网络中的多种考虑。
第一考虑是在使节点可操作之后多久对临界区的访问能够被请求。也就是说,节点能够随机地被启动、被重启并被关闭。在重启之后,如果节点发现没有其他可操作的节点,则可能存在两种可能性:节点是唯一可操作的节点,或者还没有经过足够的时间以交换心跳消息。因此,节点不应当在启动或重启之后立即请求对代码的临界区的访问。然而,关于已知的Ricart-Agrawala算法,不存在对在节点的启动或重启之后多久节点能够请求对代码的临界区的访问的控制。在本文中,访问代码的临界区在本文中与访问共享资源(例如数据结构、设备、等等)的概念可互换地来使用,因为代码的临界区是被运行以访问共享资源的一部分代码。
第二考虑是如何确保在剩余节点批准通过请求节点对临界区的访问时访问临界区是安全的。当节点需要通过访问临界区来获得对共享资源(数据结构、设备、等等)的独占权利时,可能不能够确定分布式环境中的节点的正确数目。因此,对共享资源的访问可能被错误地授予。例如,假设存在四个节点A、B、C和D。如果节点A仅仅知道节点B和C,则节点A将仅向如下节点B和C发送通知或请求,该节点B和C请求节点A关于对临界区的访问的批准。节点B和C可能不在临界区中,而节点D可能实际上处在代码的临界区中。因此,节点B和C将批准或授予节点A对临界区或共享资源的访问,并且因此节点A和D可能都同时在临界区中并且将具有对应当仅仅被顺序访问的对应的共享资源的同时访问。因此,访问通知或请求的发送者不应当盲目地接受来自接收节点的访问授予响应。
第三考虑是何时节点不应当请求对临界区或共享资源的访问。正常情况下,当节点或节点集具有节点的分布式网络的不对称视图时,它们将倾向于使它们不可用,即到不可操作的状态。然而,这不会即时地发生并且因此在节点使其本身不可用的该时间段期间,节点可能仍然对访问请求做出响应并且发出访问请求。这可能导致类似于以上提到的共享访问问题,因为具有不对称视图的节点提供不完整响应并将请求发出到不完整的节点集。
说明性实施例提供用于授予对共享资源的访问并且更具体地授予访问轮流访问共享资源的代码的临界区的机制。说明性实施例提供用于解决以上提到的三种主要考虑的机制。为了解决以上的针对在启动或重启之前多久访问请求应当被允许由节点发送的第一考虑,说明性实施例提供用于控制节点的机制,使得如果节点例如通过启动操作、重启操作、等等变得可操作,则节点确定在网络或节点的集群中是否存在可操作的法定数目的其他节点(即预定义数目的节点的至少一半或更多)(说明性实施例可以在多个节点的任何集合上操作并且可以被称为网络、集群、等等)。
当节点的集群被配置时,集群中的节点的数目已知并被通信给集群的节点。集群的节点交换心跳消息以指示节点在集群内仍然是可操作的。如果没有在预定时间段内从节点接收到心跳消息,则节点可以被确定为是不可操作的。因此,通过跟踪哪些节点已经发送心跳信号并将可操作节点的总数目与集群中的节点的预定数目进行比较,可以做出法定数目的节点是否是可获得的确定。
如果法定数目的节点在当前节点到来时不可获得,则节点必须在请求对代码的临界区以及因此共享资源的访问之前等待预定延迟超时时间段。延迟超时时间段是取决于特定实施的可调谐值。延迟超时时间段优选被设置为允许节点活跃并在集群的节点之间交换心跳消息的时间段。如果法定数目的节点不能够被获得,则在发送者节点本身处拒绝集群范围的访问,即在发送者节点处抑制对访问通知/请求的发送。
为了解决以上关于确保即使在集群的其他节点批准对临界区的访问时进入临界区是安全的第二考虑,在说明性实施例中提供用于在集群的节点之间交换指示多少节点在集群中被每个其他节点感知为可操作的信息的机制。也就是说,当节点启动或被添加到集群时,节点从“不可用(DOWN)”状态转变为“停滞(DOWNBEAT)”状态,即其中节点能够发出心跳消息但是尚未变成集群的可操作成员的状态。在DOWNBEAT状态之后,节点转变到“可用(UP)”状态,在该状态下节点是集群的完全合格的成员。当节点处于DOWNBEAT状态或UP状态中时,节点能够访问代码的临界区并且因此需要参与集群的访问授予/拒绝功能。注意,在DOWNBEAT状态或UP状态中的节点被称为“活动”节点,而在DOWN状态中的节点被称为“不活动”节点。
根据说明性实施例,为了确保发送者节点不仅仅依靠接收者节点的响应授予发送者节点对临界区或共享资源的访问,在节点对访问通知或请求做出响应时,除了发送指示请求的访问是否被授予或被拒绝的响应之外,节点还发送它们感知到的在集群中为活动节点的节点的数目。发送者节点在从集群中的接收节点接收到这样的响应时将由接收节点感知到的活动节点的数目与由发送者节点感知到的活动节点数目进行比较。如果发送者节点确定在活动节点的这些数目之间存在差别,则发送者节点将拒绝其本身对临界区或共享资源的访问,即使接收者节点已经利用对所请求的访问的授予来响应。
例如,使用以上关于节点A、B、C和D的先前示例,假设节点B能够检测到节点D处于可用状态(例如由于从节点D接收到心跳消息)。还假设节点C和A不具有节点D的可见性,无论是因为到节点D的连接是不可用的,节点D实际上处于不可用状态中,还是已经发生了使节点D对节点C和A不可见的一些其他错误。假设节点B和C感知到节点A处于停滞状态中。
在这种情形下,当节点A发出访问通知或请求时,节点B发送响应<3,1,OK>,其中响应格式具有类型<UP节点的#,DOWNBEAT节点的#,访问授予/拒绝>。类似地,节点C发送响应<2,1,OK>。活动节点处于UP状态还是DOWNBEAT状态中被指示在由特定节点发出的心跳消息中。也就是说,心跳信号包含指示UP状态或DOWNBEAT状态的状态指示符值。该信息由接收到心跳信号的每个其他接收节点存储,使得每个节点具有它们自己的哪些节点UP以及哪些节点处于DOWNBEAT状态中的相应视图。因此,每个节点能够计算它在集群拓扑结构中感知到的UP节点的数目和DOWNBEAT节点的数目。
当然,响应的以上格式仅仅是示例并且可以使用其他格式。例如,响应可以代替地将可用节点的数目和停滞节点的数目分离开,并且可以代替地发送活动节点数目,该数目是可用节点和停滞节点之和。主要考虑在于由响应节点感知到的处于活动状态中的节点的数目连同指示响应节点是否授予/拒绝所请求的访问的响应一起返回。
返回到以上示例,节点A将针对每个响应节点的活动的(即处于UP状态和DOWNBEAT状态中的)节点的数目求和以确定针对该响应节点的对应的活动节点数,除非实施例利用如以上提到的其中该相加已经完成的响应。在以上示例中,由节点B感知到的活动节点的数目为4并且对于节点C为3。将由对访问通知/请求做出响应的接收者节点中的每个感知到的活动节点的这些数目与发送者节点的自己的感知到的活动节点的数目(例如在这种情况下为(2+1)=3)进行比较。在该示例中,发送者节点(即节点A)的活动节点数与节点C的活动节点数相匹配但是不与节点B的活动节点数相匹配。因此,由于不存在由所有节点的集群的一致视图,所以存在如下可能性:节点A不将其访问通知/请求发送到集群中可能在临界区中或访问共享资源的节点。因此,节点A拒绝其本身对临界区或共享资源的访问,即使节点B和C两者都指示对访问的批准。
应当认识到,如果发送者节点感知到比所有响应的接收者节点更大数量的活动节点,则发送者节点可以授予其本身访问(假设响应中的每个指示对访问的批准)。这是因为发送者节点比响应的接收者节点具有更大的集群的可见性。例如,节点A的活动数为4并且节点B和C中的每个利用活动数为3和对访问请求的批准来响应,则节点A可以授予其本身访问,即使在它的活动数与响应的节点的活动数之间存在差别。
关于以上提到的第三个考虑,即评价在处于UP状态中之后何时节点不应当请求对临界区的访问,根据说明性实施例,如果节点确定它具有集群的不对称视图,例如它感知为集群的部分的活动节点的数目与由集群中的其他节点感知到的活动节点的数目不一致,则节点可以启动计时器。节点可以定期地检查它的集群的视图以确定该不对称视图是否持续存在。在由计时器测量的时间间隔期间,节点处于脆弱状态中并且应当避免访问临界区和共享资源。因此,在该时间间隔期间可以抑制对访问通知/请求的发送,直到当节点确定其不再具有不对称视图的这样的时间为止。因此,在发出访问通知/请求之前,发送者节点可以检查以查看计时器是否已经开始。如果计时器已经开始,则发送者节点可以拒绝其本身对临界区/共享资源的访问并抑制对访问通知/请求的发送。另外,节点可以不批准其他节点的请求并且相反将自动地利用来自集群的其他节点的任何接收到的访问通知/请求的拒绝来响应。如果不对称视图中止,则可以取消计时器并且可以重新开始节点的正常操作。
因此,说明性实施例提供用于基于来自集群的各个节点的节点的集群的各种感知到的视图来控制对代码的临界区和共享资源的访问的机制。此外,提供用于控制节点从而避免关于集群的不对称视图的问题的机制。这些机制包括等待预定延迟时间段以确保心跳消息能够在集群的节点之间进行交换。该机制还允许对与每个节点的集群中的活动节点的数目的感知到的视图有关的信息的交换。机制被提供用于允许发送者在合适时执行对临界区/共享资源的访问的自我拒绝。
本发明的说明性实施例的以上方面和优点将在下文参考附图更详细地进行描述。应当认识到,附图仅仅旨在说明本发明的说明性实施例。本发明可以包含未明确示出在附图中但是鉴于说明性实施例的当前描述对本领域普通技术人员将显而易见的各方面、各实施例和对所描绘的示范性实施例的修改。
所属技术领域的技术人员知道,本发明的各个方面可以实现为***、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质是具有电子性质、磁性性质、光学性质、电磁性质、或半导体性质的***、装置或设备、前面的任何适当的组合、或者其等价物。计算机可读存储介质的更具体示例(非穷举列表)将包括以下:具有存储能力的电气设备、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪速存储器)、基于光纤的设备、便携式紧凑盘只读存储器(CDROM)、光学存储设备、磁性存储设备或前面的任何适当的组合。在该文档的上下文中,计算机可读存储介质是能够包含或存储用于由指令运行***、装置或设备使用或与指令运行***、装置或设备相连的任何有形介质。
在一些说明性实施例中,计算机可读介质是非暂态计算机可读介质。非暂态计算机可读介质是不为无实体信号或传播波(即纯信号或传播波本身)的任何介质。非暂态计算机可读介质可以利用信号和传播波,但是本身不是信号或传播波。因此,例如,各种形式的存储器设备和以例如用于维持其状态的任何方式利用信号的其他类型的***、设备或装置可以被认为是在本说明书内的非暂态计算机可读介质。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。类似地,计算机可读存储介质是不为计算机可读信号介质的任何计算机可读介质。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(articleofmanufacture)。
计算机程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上以使一系列操作步骤被执行在计算机、其他可编程数据处理装置或其他设备上以产生计算机实施的过程使得运行在计算机或其他可编程装置上的指令提供用于实施流程图和/或一个或多个方框图方框中指定的功能/动作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
因此,说明性实施例可以被利用在许多不同类型的数据处理环境中。为了提供针对说明性实施例的具体元件和功能的描述的上下文,下文提供图1和图2作为说明性实施例的各方面可以被实施在其中的示例环境。应当认识到,图1和图2仅仅是示例并且不旨在断言或暗示关于本发明的各方面或各实施例可以被实施在其中的环境的任何限制。可以在不脱离本发明的精神和范围的情况下进行对所描绘的环境的许多修改。
图1描绘说明性实施例的各方面可以被实施在其中的示例分布式数据处理***的图形表示。分布式数据处理***100可以包括说明性实施例的各方面可以被实施在其中的计算机的网络。分布式数据处理***100包含至少一个网络102,其是被用于提供在一起连接在分布式数据处理***100内的各个设备与计算机之间的通信链路的媒介。网络102可以包括连接,例如电线、无线通信链路或光纤线缆。
在所描绘的示例中,服务器104和服务器106连同存储单元108一起连接到网络102。另外,客户端110、112和114还连接到网络102。这些客户端110、112和114可以例如为个人计算机、网络计算机、等等。在所描绘的示例中,服务器104将诸如启动文件、操作***图像和应用的数据提供到客户端110、112和114。在所描绘的示例中,客户端110、112和114是服务器104的客户端。分布式数据处理***100可以包括额外的服务器、客户端以及未示出的其他设备。
在所描绘的示例中,分布式数据处理***100是具有表示使用传输控制协议/互联网协议(TCP/IP)协议组来彼此通信的全球范围内的网络和网关的汇集的网络102的互联网。互联网的核心是在包括路由数据和消息的数千的商用计算机***、政府计算机***、教育计算机***和其他计算机***的主节点或主机计算机之间的高速数据通信线路的骨干网。当然,分布式数据处理***100还可以被实施以包括许多不同类型的网络,例如内联网、局域网(LAN)、广域网(WAN)等等。如以上所陈述的,图1旨在为示例,而非旨在为针对本发明的不同实施例的体系结构限制,并且因此,图1中示出的特定元件不应当被认为是关于本发明的说明性实施例可以被实施在其中的环境的限制。
图2是说明性实施例的各方面可以被实施在其中的示例数据处理***的方框图。数据处理***200是诸如图1的客户端110的计算机的示例,实施针对本发明的说明性实施例的过程的计算机可用代码或指令可以被定位在该计算机中。
在所描绘的示例中,数据处理***200采用包括北桥和存储器控制器中心(NB/MCH)202以及南桥和输入/输出(I/O)控制器中心(SB/ICH)204的中心体系结构。处理单元206、主存储器208和图形处理器210连接到NB/MCH202。图形处理器210可以通过加速图形端口(AGP)连接到NB/MCH202。
在所描绘的示例中,局域网(LAN)适配器212连接到SB/ICH204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、硬盘驱动器(HDD)226、CD-ROM驱动器230、通用串行总线(USB)端口和其他通信端口232以及PCI/PCIe设备234通过总线238和总线240连接到SB/ICH204。PCI/PCIe设备可以包括例如以太网适配器、扩展卡和针对笔记本电脑的PC卡。PCI使用卡总线控制器,而PCIe不使用卡总线控制器。ROM224可以例如是闪速基本输入/输出***(BIOS)。
HDD226和CD-ROM驱动器230通过总线240连接到SB/ICH204。HDD226和CD-ROM驱动器230可以使用例如集成驱动电子设备(IDE)或串行高级技术附件(SATA)接口。超级I/O(SIO)设备236可以连接到SB/ICH204。
操作***运行在处理单元206上。操作***协调并提供对图2中的数据处理***200内的各种部件的控制。作为客户端,操作***可以是诸如的商用操作***。诸如JavaTM编程***的面向对象编程***可以结合操作***运行并提供来自运行在数据处理***200上的JavaTM程序或应用的对操作***的调用。
作为服务器,数据处理***200可以例如是eServerTM***计算机***、运行高级交互式执行体的操作***或操作***。数据处理***200可以是包括处理单元206中的多个处理器的对称微处理器(SMP)***。备选地,可以采用单个处理器***。
针对操作***的指令、面向对象编程***和应用或程序位于诸如HDD226的存储设备上,并且可以被加载到主存储器208中以用于由处理单元206运行。针对本发明的说明性实施例的过程可以由处理单元206使用计算机可用程序代码来执行,计算机可用程序代码可以例如位于诸如主存储器208、ROM224的存储器中或一个或多个***设备226和230中。
如图2中示出的总线238和总线240的总线***可以包括一个或多个总线。当然,总线***可以使用提供在附接到结构或体系结构的不同部件或设备之间的数据的传输的任何类型的通信结构或体系结构来实施。诸如图2的调制解调器222或网络适配器212的通信单元可以包括用于发送和接收数据的一个或多个设备。存储器可以例如是主存储器208、ROM224或诸如图2中的NB/MCH202中找到的缓冲。
本领域普通技术人员将认识到图1和2中的硬件可以取决于实施方式而变化。除了或代替图1和2中描绘的硬件,可以使用诸如闪速存储器、等价的非易失性存储器或光盘驱动器、等等的其他内部硬件或***设备。而且,在不脱离本发明的精神和范围的情况下,除了先前提到的SMP***,说明性实施例的过程可以被应用到多处理器数据处理***。
此外,数据处理***200可以采取包括客户端计算设备、服务器计算设备、平板电脑计算机、膝上型计算机、电话或其他通信设备、个人数字助理(PDA)等等的许多不同的数据处理***中的任何的形式。在一些说明性示例中,数据处理***200可以例如是被配置具有闪速存储器以提供用于存储操作***文件和/或用户生成的数据的非易失性存储器的便携式计算设备。实质上,数据处理***200可以是没有体系结构限制的任何已知的或稍后开发的数据处理***。
再次参考图1,服务器104、106、客户端计算设备110-114等等可以是通过运行代码的临界区访问共享资源的多个计算设备的集合的部分。该多个计算设备的集合可以被称为计算设备的网络、计算设备的集群等等,并且优选地具有在彼此之间的通信连接使得它们可以交换控制和数据消息。出于当前描述的目的,将假设服务器104、106和其他服务器(未示出)被配置为用于服务经由网络102来自客户端计算设备110-114的请求的服务器的集群。因此,服务器104、106以及集群的其他服务器被配置为实施说明性实施例的机制和功能。服务器104、106可以例如是例如在图2中描述的数据处理***。
图3是根据一个说明性实施例的计算设备的集群的示例图。图3中的集群300是包括仅仅四个节点A-D310-316的节点的简化集群,但是应当认识到集群300实际上可以包括比本文描绘的多得多的节点,成百上千个节点可以是服务器计算设备、客户端计算设备或其他类型的计算设备的节点优选地具有用于在它们之间通信控制和数据消息的通信连接。节点310-316还利用本文描述的并且例如图4中描绘的说明性实施例的临界区访问控制机制来配置。
在所描绘的示例中,节点A310知道仅仅节点B312和C314并且不能够感知到节点D316为集群300的成员。因此,节点A310将请求对节点A对临界区或共享资源的访问的批准的访问通知或请求仅仅发送到节点B312和节点C314。节点B312和节点C314可能不在临界区中而节点D316可能实际上处在代码的临界区中。因此,节点B312和节点C314将批准或授予节点A对临界区或共享资源的访问,并且因此节点A310和节点D316可能都同时在临界区中并且将具有对对应的共享资源的同时访问。这可能在共享资源被预期为要通过集群的节点以顺序的方式(例如节点必须获得关于共享资源的锁并且具有在执行关于共享资源的操作时的独占访问)来访问时导致数据损坏问题。
为了实施说明性实施例的机制,集群的节点(例如出于说明性目的节点A310)在UP状态之后实施法定数目抑制器,法定数目抑制器在确定在集群300中不存在法定数目的节点时使节点抑制对访问通知/请求的发送。也就是说,响应于在集群300中节点被转变到UP状态,例如在启动节点、重启节点、将节点添加到集群、等等之后,节点确定其是否已经从集群300中的其他节点接收到心跳消息,使得其知道在集群300中存在法定数目的节点并且法定数目的节点处于活动状态中,例如处于UP或DOWNBEAT状态中。节点310-316先验地被配置具有指示集群300中的节点的总数目的信息,使得能够确定法定数目。法定数目可以被认为是集群300的节点的至少一半、集群300中的节点的四分之三、或者集群300中的节点的任何其他期望的预定数目。在一个示例中,节点A310在启动之后可以检查以确定在图3中示出的集群300中是否有至少三个节点处于活动状态中。
如果法定数目的节点是不活动的,则节点可以启动计时器以测量在集群300中使节点进入UP状态之后的预定延迟时间段。预定延迟时间必须在节点再次被允许请求对代码的临界区以及因此对共享资源的访问之前到期。延迟时间段是如以上先前提到的可调谐值。在该预定延迟时间段期间,在发送者节点本身处拒绝集群范围访问,即在发送者节点处抑制对访问通知/请求的发送。在该预定延迟时间段已经到期之后,节点可以假设其是在集群中UP的唯一节点并且以对临界区的访问前进。备选地,该过程可以在法定数目不再能够被实现时被重复。如果法定数目在预定数量的尝试(例如对延迟计时器的重置)内没有被实现,则错误通知可以被发送到***管理员工作者或其他类型的通知可以被生成以联系合适的人员来矫正该错误,或者节点可以假设其是集群中处于UP状态中的唯一节点并且以对临界区的访问前进。
除了在UP状态引擎之后的法定数目抑制器,说明性实施例还实施集群视图交换机制和访问的自我拒绝机制。集群视图交换机制辅助确保即使在集群的其他节点批准对临界区的访问时,对于节点而言进入代码的临界区并且因此访问要求顺序访问的访问共享资源是安全的。集群视图交换机制被提供在集群的每个节点中并且用于在节点与集群中的其他节点之间交换指示节点将集群中的多少其他节点感知为可操作(即,处于活动状态中(无论是UP还是DOWNBEAT状态中)的信息。
根据说明性实施例,为了确保发送者节点不仅仅依靠接收者节点的响应授予发送者节点对临界区或共享资源的访问,在节点对访问通知或请求做出响应时,除了发送指示请求的访问是否被授予或被拒绝的响应之外,集群视图交换机制维持当前节点能够感知为处于活动状态中的什么其他节点的注册表。该信息被***到由集群视图交换机制对访问通知/请求的响应中并且得到的响应被发送回到发送者节点。因此,在图3的示例中,如以上所讨论的,响应于来自节点A的访问通知/请求,节点B发送响应<3,1,OK>,该响应指示UP节点的数目为3(例如,节点B、C和D)、DOWNBEAT节点的数目为1(例如,节点A)、以及访问被授予或“OK”。类似地,节点C发送响应<2,1,OK>,该响应指示2个UP节点(例如,节点B和节点C)、1个DOWNBEAT节点(例如,节点A)、以及访问被授予或“OK”。
当从集群中的接收节点接收到这样的响应时,发送者节点将由接收节点感知到的活动节点的数目与由发送者节点感知到的活动节点的数目进行比较。如果发送者节点确定在活动节点的这些数目之间存在差别,则发送者节点将拒绝其本身对临界区或共享资源的访问,即使接收者节点已经利用对所请求的访问的授予来响应。因此,例如,节点A将对于每个响应的节点活动的节点的数目求和,来确定针对该响应的节点的对应活动节点数,其中结果是由节点B感知到的活动节点的数目为4并且对于节点C为3。将活动节点的这些数目与发送者节点的自己的感知到的活动节点数目(例如,在这种情况下为3)进行比较。在该示例中,发送者节点(即节点A)的活动节点数与节点C的活动节点数相匹配,但是不与节点B的活动节点数相匹配。因此,由于不存在由所有节点的集群的一致视图,所以存在如下可能性:节点A不将其访问通知/请求发送到集群中可能在临界区中或访问共享资源的节点。因此,节点A的访问的自我拒绝机制拒绝其本身对临界区或共享资源的访问,即使节点B和C两者都指示对访问的批准。如先前提到的,应当认识到,如果发送者节点感知到比所有响应的接收者节点更大数量的活动节点,则发送者节点的访问的自我拒绝机制可以授予其本身访问而非执行访问的自我拒绝,因为发送者节点比响应的接收者节点具有更大的集群的可见性。
除了以上机制之外,说明性实施例还在集群的节点中提供用于启动计时器以抑制对访问通知/请求的传输和对其他节点的访问通知/请求的肯定响应的不对称视图计时器机制。也就是说,如果节点确定它具有集群的不对称视图,例如它感知为集群的部分的活动节点的数目与由集群中的其他节点感知到的活动节点的数目不一致,则节点可以经由节点的不对称视图计时器机制启动不对称视图计时器。节点的不对称视图计时器机制定期地检查它的集群的视图以确定该不对称视图是否持续存在。在由计时器测量的时间间隔期间,节点处于脆弱状态中并且应当避免访问临界区和共享资源。因此,在该时间间隔期间抑制对访问通知/请求的发送,直到当节点确定其不再具有不对称视图的这样的时间或直到计时器过期。因此,在发出访问通知/请求之前,发送者节点可以检查以查看计时器是否已经开始。如果计时器已经开始,则发送者节点可以拒绝其本身对临界区/共享资源的访问并抑制对访问通知/请求的发送。另外,节点可以不批准其他节点的请求并且相反将自动地利用来自集群的其他节点的任何接收到的访问通知/请求的拒绝来响应。如果不对称视图中止,则可以取消计时器并且可以重新开始节点的正常操作。
图4是根据一个说明性实施例的临界区访问控制引擎的主要操作元件的示例方框图。元件可以被实施在节点的网络(例如,集群、互联网、等等)的一个或多个节点(例如,计算设备、处理器、数据处理***、等等)中。在一个说明性实施例中,网络是节点的集群,其中集群中的每个节点实施它自己的临界区访问控制引擎的本地版本。临界区访问控制引擎的元件可以以由计算设备的一个或多个处理器运行的软件、硬件或软件和硬件的任何组合来实施。在一个说明性实施例中,图4中的元件被实施为运行在网络的节点的一个或多个处理器上的软件指令。
如图4所示,临界区访问控制引擎400包括控制器410、接口420、法定数目抑制器430、集群视图交换引擎440、集群视图数据结构450、访问的自我拒绝引擎460和不对称视图计时器引擎470。控制器410控制临界区访问控制引擎400的总体操作并安排临界区访问控制引擎400的其他元件的操作。接口420提供通信通道,通过其数据和控制消息可以在节点与(集群)网络的其他节点之间传递。
法定数目抑制器430执行以上描述的关于确定法定数目的其他节点是否是活动的操作。法定数目抑制器430还操作以在预定延迟时间段期间抑制对访问通知/请求的发送。
集群视图交换引擎440执行以上先前描述的用于将活动节点信息***到对来自集群中的另外的节点对访问通知/请求的响应中的操作。被用于将活动节点信息***到响应中的信息可以从将节点的当前视图存储在集群视图数据结构450中来获得。存储在集群视图数据结构450中的信息根据从集群中的其他节点接收到的心跳消息来生成。心跳消息指示在集群中哪些节点是活动的以及这些节点是否处于UP状态或DOWNBEAT状态中。节点从当前节点能够在集群中感知到的其他节点接收心跳消息。
访问的自我拒绝引擎460执行以上描述的自我拒绝操作,该自我拒绝操作用于响应于其他节点对与当前节点自身对于集群中的活动节点的视图不同的活动节点信息做出响应,而自我拒绝节点的自己的访问通知/请求。然而,如果当前节点的集群的视图包括比其他节点能够感知到的更多的活动节点,则访问的自我拒绝引擎460可以准许访问而非自我拒绝访问。
不对称视图计时器引擎470执行以上描述的操作,该操作用于在其确定节点具有集群的不对称视图时,启动计时器以抑制对访问通知/请求的传输和对其他节点的访问通知/请求的肯定响应。对访问通知/请求的传输和肯定响应的抑制在由计时器测量的时间段上继续。不对称视图计时器引擎470定期地检查其集群的视图以确定该不对称视图是否持续存在,并且在不对称视图不再持续存在的情况下取消计时器。
图5是根据一个说明性实施例的概述用于在节点到来之后抑制对访问请求的传输的示例操作的流程图。如图5所示,操作通过节点进入UP状态,例如在启动操作、重启操作或用于将节点添加到集群的其他操作之后开始(步骤510)。节点确定在集群中是否存在处于操作的活动状态中的法定数目的其他节点(步骤520)。如果存在处于活动状态中的法定数目的节点,则准许访问请求传输(步骤530)。如果不存在处于活动状态中的法定数目的节点,则启动延迟计时器(步骤540)并且在计时器计数预定时间间隔时抑制对访问请求的传输(步骤550)。做出关于计时器是否已经超时(例如达到最小值或最大值)的确定(步骤560)。如果计时器已经超时,则准许对访问请求的传输(步骤530)。继而操作结束。
图6是根据一个说明性实施例的概述用于临界区访问控制的示例操作的流程图。操作通过确定由当前节点可视的集群的节点而开始(步骤610)。由当前节点可视的节点根据集群视图数据结构来确定,集群视图数据结构被填充有来自从集群中的其他节点接收到的心跳消息的信息。
当前节点将访问请求发出到由当前节点可视的集群的节点(步骤620)并且当前节点等待来自其他节点的响应(步骤630)。编译来自接收到的响应的活动节点信息(步骤635)并且将每个其他节点的在集群中看到的活动节点的指示与由当前节点可视的活动节点数目进行比较(步骤640)。做出关于在由当前节点可视的活动节点数目与由其他节点可视的活动节点的数目之间是否存在差别的确定(步骤650)。如果否,则做出关于其他节点中的任何节点是否已经响应访问被拒绝的确定(步骤660)。如果是,则拒绝访问请求并且抑制对临界区的访问(步骤670)。如果其他节点中的节点已经响应访问被拒绝,则准许对临界区的访问并且当前节点访问临界区(步骤680)。
如果在步骤650中存在差别,则做出关于区别是否指示当前节点是否比集群中的一个或多个其他节点具有更小数目的可视节点的确定(步骤690)。如果否,则操作前进到步骤660。如果当前节点比集群中的一个或多个其他节点具有更小数目的可视节点,则启动不对称视图计时器(步骤700)。做出关于不对称视图是否已经终止或不对称视图计时器是否已经到期的确定(步骤710)。如果任一情况已经发生,则操作返回到步骤690。
应当认识到,尽管图6图示了关于步骤710的循环操作和到步骤690的返回,但是在其他说明性实施例中,不必循环回并重复地检查节点的集群的视图以确定是否存在不对称视图,相反,节点可以简单地关闭其操作并定期地检查其集群的视图以确定不对称视图是否持续存在。如果不对称视图中止,则节点可以再次开始其发出对共享资源访问的请求的正常操作。
因此,说明性实施例提供用于授予对共享资源的访问的机制并且更具体地提供用于访问轮流访问共享资源的代码的临界区的机制。说明性实施例提供用于解决以上提到的关于以下三个主要考虑的机制:在节点到来之后多久访问请求应当被允许被发送、确定对于节点而言即使在其他节点指示对临界区的这样的访问的批准时进入临界区是否是安全的、以及确定何时节点不应当请求对临界区的访问。说明性实施例在这三个方面扩展Ricart-Agarwala算法。
如以上所指出的,应当认识到说明性实施例可以采取完全硬件实施例、完全软件实施例或包含硬件元件和软件元件两者的实施例的形式。在一个示例实施例中,以软件或程序代码来实施说明性实施例的机制,软件或程序代码包括但不限于固件、驻留软件、微代码、等等。
适合于存储和/或运行程序代码的数据处理***将包括直接地或通过***总线间接地耦合到存储器元件的至少一个处理器。存储器元件能够包括在程序代码的实际运行期间采用的本地存储器、大容量存储装置、以及提供至少一些程序代码的临时存储以便减少在运行期间必须从大容量存储装置检索代码的次数的缓存存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备、等等)能够直接地或通过中介I/O控制器耦合到***。网络适配器还可以耦合到***以使得数据处理***能够变成通过中介私有或公共网络耦合到其他数据处理***或远程打印机或存储设备。调制调解器、线缆调制解调器和以太网卡仅仅是几个当前可用类型的网络适配器。
对本发明的描述已经出于说明和描述的目的被呈现,并且不旨在为穷举的或将本发明限于所公开的形式。许多修改和变型对于本领域普通技术人员而言将是显而易见的。实施例被选择并被描述以便最好地解释本发明的原理、实际应用,并且以便使得本领域其他技术人员理解本发明用于具有如适于预见到的特定用途的各种修改的各种实施例。
Claims (20)
1.一种在包括多个节点的数据处理***中用于控制对代码的临界区的访问的方法,每个节点是一个计算设备,所述方法包括:
由所述数据处理***的发送者节点发送用于请求对代码的所述临界区的访问的访问请求,其中代码的所述临界区是访问共享资源的一部分代码;
由所述发送者节点从所述数据处理***中的多个接收者节点接收对所述访问请求的响应,其中所述响应中的每个响应包括由发送所述响应的对应接收者节点感知到的活动节点的数目;以及
由所述发送者节点基于在从所述接收者节点接收到的所述响应中的每个响应中识别出的活动节点的所述数目来控制对代码的所述临界区的访问。
2.根据权利要求1所述的方法,其中所述访问请求由所述发送者节点发送到所述多个节点中的、由所述发送者节点可视的、为节点集群的成员的接收者节点。
3.根据权利要求2所述的方法,还包括:
响应于所述发送者节点进入可用状态,确定由所述发送者节点可视的、为所述节点集群的成员的节点的数目是否表示所述多个节点中的节点的法定数目;以及
响应于由所述发送者节点可视的节点的所述数目不为节点的法定数目,抑制所述访问请求的所述发送。
4.根据权利要求3所述的方法,其中抑制所述访问请求的所述发送包括:
启动测量可调谐延迟超时时间段的可调谐延迟计时器,在所述可调谐延迟超时时间段期间所述访问请求的所述发送被抑制;以及
响应于所述可调谐延迟超时时间段到期而发送所述访问请求。
5.根据权利要求1所述的方法,其中基于在从所述接收者节点接收到的所述响应中的每个响应中识别出的活动节点的所述数目来控制对代码的所述临界区的访问包括,针对从接收者节点接收到的每个响应:
由所述发送者节点将在所述响应中指示的活动节点的第一数目与由所述发送者节点可视的活动节点的第二数目进行比较;以及
由所述发送者节点响应于在活动节点的所述第一数目与活动节点的所述第二数目之间的差别而自我拒绝对代码的所述临界区的访问。
6.根据权利要求5所述的方法,还包括:
由所述发送者节点响应于在从接收者节点接收到的每个响应中的活动节点的每个第一数目等于或小于活动节点的所述第二数目,而准许对代码的所述临界区的访问。
7.根据权利要求5所述的方法,还包括:
响应于活动节点的所述第二数目小于在从所述接收者节点接收到的所述响应中的任何响应中的活动节点的所述第一数目中的任何第一数目:
启动不对称视图计时器;以及
在由所述不对称视图计时器测量的时间段期间抑制由所述发送者节点对访问请求的发送。
8.根据权利要求7所述的方法,还包括:
在由所述不对称视图计时器测量的所述时间段期间,由所述发送者节点抑制指示对于来自所述多个节点中的其他节点的访问请求授予访问的响应。
9.根据权利要求1所述的方法,其中所述对应的接收者节点的所述响应包括:由所述对应的接收者节点感知到的处于可用状态中的节点的数目、由所述对应的接收者节点感知到的处于停滞状态中的节点的数目、以及所述对应的接收者节点是否同意由所述发送者节点对所述共享资源的访问的指示符。
10.根据权利要求9所述的方法,其中针对所述对应的接收者节点的所述响应,由所述对应的接收者节点感知到的活动节点的所述数目由所述发送者节点计算为处于可用状态中的节点的数目与处于停滞状态中的节点的数目之和。
11.一种计算机程序产品,包括具有计算机可读程序存储在其中的计算机可读存储介质,其中所述计算机可读程序当运行在数据处理***的发送者节点中时使得所述发送者节点:
发送用于请求对代码的临界区的访问的访问请求,其中代码的所述临界区是访问共享资源的一部分代码;
从所述数据处理***中的多个接收者节点接收对所述访问请求的响应,其中所述响应中的每个响应包括由发送所述响应的对应接收者节点感知到的活动节点的数目;以及
基于在从所述接收者节点接收到的所述响应中的每个响应中识别出的活动节点的所述数目来控制对代码的所述临界区的访问。
12.根据权利要求11所述的计算机程序产品,其中所述访问请求由所述发送者节点发送到所述多个节点中的、由所述发送者节点可视的、为节点的集群的成员的接收者节点。
13.根据权利要求12所述的计算机程序产品,还包括:
响应于所述发送者节点进入可用状态,确定由所述发送者节点可视的、为节点的所述集群的成员的节点的数目是否表示所述多个节点中的节点的法定数目;以及
响应于由所述发送者节点可视的节点的所述数目不为节点的法定数目,抑制所述访问请求的所述发送。
14.根据权利要求13所述的计算机程序产品,其中抑制所述访问请求的所述发送包括:
启动测量可调谐延迟超时时间段的可调谐延迟计时器,在所述可调谐延迟超时时间段期间所述访问请求的所述发送被抑制;以及
响应于所述可调谐延迟超时时间段到期而发送所述访问请求。
15.根据权利要求11所述的计算机程序产品,其中基于在从所述接收者节点接收到的所述响应中的每个响应中识别出的活动节点的所述数目来控制对代码的所述临界区的访问包括,针对从接收者节点接收到的每个响应:
由所述发送者节点将在所述响应中指示的活动节点的第一数目与由所述发送者节点可视的活动节点的第二数目进行比较;以及
由所述发送者节点响应于在活动节点的所述第一数目与活动节点的所述第二数目之间的差别而自我拒绝对代码的所述临界区的访问。
16.根据权利要求15所述的计算机程序产品,还包括:
由所述发送者节点响应于在从接收者节点接收到的每个响应中的活动节点的每个第一数目等于或小于活动节点的所述第二数目,而准许对代码的所述临界区的访问。
17.根据权利要求15所述的计算机程序产品,还包括:
响应于活动节点的所述第二数目小于在从所述接收者节点接收到的所述响应中的任何响应中的活动节点的所述第一数目中的任何第一数目:
启动不对称视图计时器;以及
在由所述不对称视图计时器测量的时间段期间抑制由所述发送者节点对访问请求的发送。
18.根据权利要求17所述的计算机程序产品,还包括:
在由所述不对称视图计时器测量的所述时间段期间,由所述发送者节点抑制指示对于来自所述多个节点中的其他节点的访问请求授予访问的响应。
19.根据权利要求11所述的计算机程序产品,其中所述对应的接收者节点的所述响应包括:由所述对应的接收者节点感知到的处于可用状态中的节点的数目、由所述对应的接收者节点感知到的处于停滞状态中的节点的数目、以及所述对应的接收者节点是否同意由所述发送者节点对所述共享资源的访问的指示符。
20.一种装置,包括:
处理器;以及
存储器,所述存储器耦合到所述处理器,其中所述存储器包括指令,所述指令当由所述处理器运行时使得所述处理器:
发送用于请求对代码的临界区的访问的访问请求,其中代码的所述临界区是访问共享资源的一部分代码;
从数据处理***中的多个接收者节点接收对所述访问请求的响应,其中所述响应中的每个响应包括由发送所述响应的对应接收者节点感知到的活动节点的数目;以及
基于在从所述接收者节点接收到的所述响应中的每个响应中识别出的活动节点的所述数目来控制对代码的所述临界区的访问。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/037,765 | 2013-09-26 | ||
US14/037,765 US9742685B2 (en) | 2013-09-26 | 2013-09-26 | Enhanced mechanisms for granting access to shared resources |
PCT/CN2014/086385 WO2015043380A1 (en) | 2013-09-26 | 2014-09-12 | Enhanced mechanisms for granting access to shared resources |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105580335A true CN105580335A (zh) | 2016-05-11 |
CN105580335B CN105580335B (zh) | 2019-04-12 |
Family
ID=52692016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480053191.6A Active CN105580335B (zh) | 2013-09-26 | 2014-09-12 | 用于授予对共享资源的访问的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9742685B2 (zh) |
CN (1) | CN105580335B (zh) |
WO (1) | WO2015043380A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109302445A (zh) * | 2018-08-14 | 2019-02-01 | 新华三云计算技术有限公司 | 主机节点状态确定方法、装置、主机节点及存储介质 |
CN112019383A (zh) * | 2020-08-21 | 2020-12-01 | 苏州浪潮智能科技有限公司 | 共享文件访问问题定位方法、装置、设备及可读存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10129090B2 (en) * | 2016-04-12 | 2018-11-13 | International Business Machines Corporation | Site asymmetric topology reconciliation in a computer cluster |
KR102279347B1 (ko) | 2016-12-15 | 2021-07-21 | 한국생명공학연구원 | 피리딘계 화합물을 유효성분으로 함유하는 dyrk 관련 질환의 예방 또는 치료용 약학적 조성물 |
FR3089316B1 (fr) * | 2018-11-30 | 2020-10-30 | Thales Sa | Procédé et dispositif de surveillance d’application(s) logicielle(s) avec période temporelle tampon précédant une section réservée pour un ensemble de ressource(s) partagée(s), programme d’ordinateur et système avionique associés |
US11556395B2 (en) * | 2020-01-24 | 2023-01-17 | Microsoft Technology Licensing, Llc | Data race detection with per-thread memory protection |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5774731A (en) * | 1995-03-22 | 1998-06-30 | Hitachi, Ltd. | Exclusive control method with each node controlling issue of an exclusive use request to a shared resource, a computer system therefor and a computer system with a circuit for detecting writing of an event flag into a shared main storage |
CN1717658A (zh) * | 2002-11-27 | 2006-01-04 | 甲骨文国际公司 | 集群***的心跳机构 |
CN1945539A (zh) * | 2006-10-19 | 2007-04-11 | 华为技术有限公司 | 计算机集群***中共享资源锁分配方法与计算机及集群*** |
US20100083268A1 (en) * | 2008-09-29 | 2010-04-01 | Morris Robert P | Method And System For Managing Access To A Resource By A Process Processing A Media Stream |
CN103297456A (zh) * | 2012-02-24 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 一种分布式***下共享资源的访问方法及分布式*** |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6105099A (en) * | 1998-11-30 | 2000-08-15 | International Business Machines Corporation | Method for synchronizing use of dual and solo locking for two competing processors responsive to membership changes |
US6950853B2 (en) | 2000-06-27 | 2005-09-27 | The Regents Of The University Of California | Multisite coordination in shared multicast trees |
US6965936B1 (en) | 2000-12-06 | 2005-11-15 | Novell, Inc. | Method for detecting and resolving a partition condition in a cluster |
US7173929B1 (en) | 2001-12-10 | 2007-02-06 | Incipient, Inc. | Fast path for performing data operations |
US8671151B2 (en) | 2007-01-24 | 2014-03-11 | Oracle International Corporation | Maintaining item-to-node mapping information in a distributed system |
US9203900B2 (en) * | 2011-09-23 | 2015-12-01 | Netapp, Inc. | Storage area network attached clustered storage system |
CN103197456B (zh) | 2013-04-24 | 2016-03-30 | 深圳市华星光电技术有限公司 | 液晶显示器及改善液晶显示器水平黑带的方法、驱动电路 |
-
2013
- 2013-09-26 US US14/037,765 patent/US9742685B2/en active Active
- 2013-11-19 US US14/083,622 patent/US9742686B2/en active Active
-
2014
- 2014-09-12 CN CN201480053191.6A patent/CN105580335B/zh active Active
- 2014-09-12 WO PCT/CN2014/086385 patent/WO2015043380A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5774731A (en) * | 1995-03-22 | 1998-06-30 | Hitachi, Ltd. | Exclusive control method with each node controlling issue of an exclusive use request to a shared resource, a computer system therefor and a computer system with a circuit for detecting writing of an event flag into a shared main storage |
CN1717658A (zh) * | 2002-11-27 | 2006-01-04 | 甲骨文国际公司 | 集群***的心跳机构 |
CN1945539A (zh) * | 2006-10-19 | 2007-04-11 | 华为技术有限公司 | 计算机集群***中共享资源锁分配方法与计算机及集群*** |
US20100083268A1 (en) * | 2008-09-29 | 2010-04-01 | Morris Robert P | Method And System For Managing Access To A Resource By A Process Processing A Media Stream |
CN103297456A (zh) * | 2012-02-24 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 一种分布式***下共享资源的访问方法及分布式*** |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109302445A (zh) * | 2018-08-14 | 2019-02-01 | 新华三云计算技术有限公司 | 主机节点状态确定方法、装置、主机节点及存储介质 |
CN109302445B (zh) * | 2018-08-14 | 2021-10-12 | 新华三云计算技术有限公司 | 主机节点状态确定方法、装置、主机节点及存储介质 |
CN112019383A (zh) * | 2020-08-21 | 2020-12-01 | 苏州浪潮智能科技有限公司 | 共享文件访问问题定位方法、装置、设备及可读存储介质 |
CN112019383B (zh) * | 2020-08-21 | 2022-07-08 | 苏州浪潮智能科技有限公司 | 共享文件访问问题定位方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20150089059A1 (en) | 2015-03-26 |
US9742686B2 (en) | 2017-08-22 |
US20150089060A1 (en) | 2015-03-26 |
WO2015043380A1 (en) | 2015-04-02 |
US9742685B2 (en) | 2017-08-22 |
CN105580335B (zh) | 2019-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105580335A (zh) | 用于授予对共享资源的访问的增强机制 | |
CN114787781B (zh) | 用于启用高可用性受管理故障转移服务的***和方法 | |
CA2758810C (en) | Collaborative rules based security | |
CN104426740B (zh) | 用于管理隧道化端点的***和方法 | |
US9979734B2 (en) | Management of transactions in a distributed transaction system | |
US10826762B2 (en) | Configuring resource-constrained devices in a network | |
CN108027828A (zh) | 与无状态同步节点的托管文件同步 | |
US9146794B2 (en) | Enhanced arbitration protocol for nodes in a cluster | |
US20150278488A1 (en) | Mobile device management broker | |
JP2012146083A (ja) | セッション管理システム、セッション管理装置、サーバ装置およびセッション管理方法 | |
US20110320743A1 (en) | Memory ordered store system in a multiprocessor computer system | |
CN110912990B (zh) | 一种共识周期的更新方法及相关设备 | |
EP2568379A1 (en) | Method for preventing node controller deadlock and node controller | |
Ghosh et al. | Designing a decentralized fault-tolerant software framework for smart grids and its applications | |
WO2016197982A1 (zh) | 一种群智感知方法及装置 | |
KR20230124099A (ko) | 클라우드 저하 모드에서 지속적인 디바이스 동작 안정성을보장하기 위한 방법 및 장치 | |
US10257262B2 (en) | Mobile itinerant software agent carrying itinerary and data within | |
JP2015036205A (ja) | 情報処理装置、情報処理方法及びプログラム | |
JP6459785B2 (ja) | 情報処理システム | |
JP2019153063A (ja) | 情報処理システム、中継装置およびプログラム | |
JP7464148B2 (ja) | アドレス管理装置、アドレス管理システム、アドレス管理方法及びプログラム | |
JP2011154631A (ja) | 確定クロック判定プログラム及び方法、並びにノード装置 | |
JP5404975B1 (ja) | 通信装置及び通信方法及びプログラム | |
US20130283031A1 (en) | Dynamic redundancy management | |
JP2017126191A (ja) | 権限委譲システム、情報処理装置、及び制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |