CN104715001B - 用于对数据处理***的集群中的共享资源执行写入操作的方法和*** - Google Patents

用于对数据处理***的集群中的共享资源执行写入操作的方法和*** Download PDF

Info

Publication number
CN104715001B
CN104715001B CN201410683394.5A CN201410683394A CN104715001B CN 104715001 B CN104715001 B CN 104715001B CN 201410683394 A CN201410683394 A CN 201410683394A CN 104715001 B CN104715001 B CN 104715001B
Authority
CN
China
Prior art keywords
shared resource
local cache
node
copy
cluster
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
CN201410683394.5A
Other languages
English (en)
Other versions
CN104715001A (zh
Inventor
E·P·弗里德
L·W·拉塞尔
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104715001A publication Critical patent/CN104715001A/zh
Application granted granted Critical
Publication of CN104715001B publication Critical patent/CN104715001B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供了用于对数据处理***的集群中的共享资源执行写入操作的机制。这些机制确定共享资源的本地缓存的副本是否存在于本地缓存存储器中。响应于确定本地缓存的副本存在,这些机制确定该本地缓存的副本是否是共享资源的最新版本。响应于确定该本地缓存的副本是最新版本:这些机制对该本地缓存的副本执行写入操作,以生成更新的本地缓存的副本;以及向集群的其他数据处理***传输集群事件通知,指示共享资源被写入以及哪个数据处理***执行了该写入操作。集群事件通知被记录在与其他数据处理***相关联的至少一个改变日志数据结构中。

Description

用于对数据处理***的集群中的共享资源执行写入操作的方 法和***
技术领域
本申请一般性地涉及改进的数据处理装置和方法,并且更具体地涉及用于提供高效分布的缓存一致性的机制。
背景技术
也称为集群多处理器***(CMP)或简称为“集群”的集群***是具有在那些数据处理***当中共享的硬件和软件的联网数据处理***(或“节点”)的集合,通常(但不必然)被配置为提供高度可用和高度可扩展的应用服务。集群***被频繁地实施以实现高可用性,作为对用于任务关键的应用(诸如数据中心、飞机控制等)的容错性的替代。容错性数据处理***依赖于专用硬件来检测硬件故障,并且切换到冗余硬件组件,不论该组件是否是处理器、存储器板、硬盘驱动器、适配器、电源等。尽管提供了无缝切换和不中断的性能,但是容错性***由于需要冗余硬件而是昂贵的,并且无法解决软件错误—数据处理***失效的更常见的源。
高可用性能够通过使用准许资源在全***被共享的软件来在利用标准硬件实施的集群中被实现。当节点、组件或应用失效时,该软件快速建立对期望资源的替代路径。重建期望资源的可用性所需要的短暂中断在许多情形中是可接受的。硬件成本显著小于容错性***,并且备用设施可以在正常操作期间被使用。
集群的节点共享该集群的资源,包括文件、数据结构、存储设备等。如此,集群的各种节点每个都可以尝试从/向这些共享资源读取和写入数据。因此,通常实施了用于控制读取和写入以确保共享资源的准确性的机制。
发明内容
在一个说明性实施例中,提供了一种在包括处理器和存储器的数据处理***中的方法,该方法用于对数据处理***的集群中的共享资源执行写入操作。该方法包括:由数据处理***来确定共享资源的本地缓存的副本是否存在于数据处理***的本地缓存存储器中。该方法进一步包括:响应于共享资源的本地缓存的副本存在于本地缓存存储器中的确定,确定共享资源的本地缓存的副本是否是共享资源的最新版本。此外,该方法包括,响应于确定共享资源的该本地缓存的副本是共享资源的最新版本:对共享资源的本地缓存的副本执行写入操作,以生成共享资源的更新的本地缓存的副本;以及向集群的其他数据处理***传输集群事件通知,该集群事件通知指示共享资源被写入并且标识集群中的哪个数据处理***执行了该写入操作。集群事件通知被记录在与其他数据处理***相关联的至少一个改变日志数据结构中。
在其他说明性实施例中,提供了一种计算机程序产品,包括具有计算机可读程序的计算机可用或可读介质。该计算机可读程序在计算设备上执行时,使得该计算设备执行上面关于方法说明性实施例所概述的操作中的各种操作和组合。
在又另一说明性实施例中,提供了一种***/装置。该***/装置可以包括一个或多个处理器以及耦合到该一个或多个处理器的存储器。该存储器可以包括指令,这些指令当由该一个或多个处理器执行时,使得该一个或多个处理器执行上面关于方法说明性实施例所概述的操作中的各种操作和组合。
本发明的这些和其他特征和优点在本发明的示例实施例的以下详细描述中被描述,或者鉴于本发明的示例实施例的以下详细描述而对于本领域的普通技术人员而言将变得明显。
附图说明
当结合附图阅读时,通过参考以下说明性实施例的详细描述,将最好地理解本发明及其使用的优选模式以及其他目标和优点,其中:
图1是根据一个实施例的可以配置为集群***的示例性数据处理环境的高层级框图;
图2描绘了根据一个实施例的存储集群配置数据库的可信数据存储设备;
图3图示了根据一个实施例的示例性集群配置数据库;
图4是图示了根据一个说明性实施例的用于执行共享资源和访问通知的全集群锁定的操作的示例框图;
图5是图示了根据一个说明性实施例的已经具有对共享资源的锁定的用于访问共享资源的操作的示例框图;
图6是根据一个说明性实施例的改变日志数据结构的示例图;
图7是概述了根据一个说明性实施例的由集群的节点对共享资源执行读取/写入操作的示例操作的流程图;以及
图8是概述了根据一个说明性实施例的用于对集群的节点执行冲刷操作的示例操作的流程图。
具体实施方式
说明性实施例提供了用于提供高效分布的缓存一致性的机制。特别地,说明性实施例的机制解决了当对共享资源的写入被缓存在诸如集群的节点组中的节点的本地缓存处时的缓存一致性。因为许多基于共享资源***,诸如集群计算***,允许个人计算设备、处理器等(即节点)在作为同步操作的一部分而将它们的写入冲刷至集中式共享资源之前,将这些写入缓存到本地缓存中的共享资源,对相同共享资源的读取可能变得陈旧,即可能指向共享资源的过期版本。例如,第一节点A可以执行对集群的共享资源R的多次写入,并且将这些写入缓存在与节点A相关联的本地缓存中。同时,在对共享资源R的写入在共享资源R的集中式副本处被提交之前,即在节点A处的写入的缓存与集中式共享资源R之间执行的同步操作之前,节点B可能希望读取共享资源R。结果,集群的节点可能具有共享资源R的非一致视图。
说明性实施例提供了用于确保在这样的分布式缓存架构中的一致性的机制。此外,说明性实施例提供了高效的机制,这些高效的机制用于通过提供利用小的大小的事件通知的通知机制来确保这样的一致性,当任何一个节点获得对共享资源的全集群锁定并且执行对该共享资源的写入时,这些小的大小的事件通知在集群的节点之间被传达。由获得锁定并且执行写入操作的节点传输的小的大小的事件通知包括:小的固定大小的有效载荷,该有效载荷指定改变的资源的标识;执行改变的节点的标识;以及陈旧指示符,例如时间戳、版本号等。该事件通知由源节点传输给集群中的其他节点中的每个节点,或者传输给集中式集群控制节点。
该事件通知被存储在用于识别哪些资源由集群中的节点访问以及哪些节点正访问这些资源的改变日志中。可以存在存储在集中式位置中的单个改变日志,该集中式位置维护用于所有共享资源的来自集群的各种节点的事件通知,或者可以存在在这些节点中的每个节点中维护的单独的改变日志数据结构。此外,可以存在在这些节点中的每个节点中或者在集中式位置中维护的多个改变日志数据结构,诸如一个用于每个用户、一个用于每个目录、一个用于每个共享资源等。
事件通知由节点响应于由节点对共享资源执行的每次写入操作而被发送,其中对共享资源的本地缓存副本本地执行写入操作。因此,多个条目可以被存储在用于对共享资源执行的一系列写入操作的(多个)改变日志数据结构中。改变日志数据结构中的事件通知条目中的陈旧指示符指示最近的事件通知条目。事件通知条目进一步指定哪个节点负责对在事件通知条目中标识的共享资源的最新写入。
当节点尝试打开诸如经由例如文件打开过程对用于读取或写入操作的共享资源的路径时,该节点首先尝试获得对该共享资源的全集群锁定。如果另一节点当前具有对该共享资源的全集群锁定,则本节点不能获得锁定,并且将仅围绕锁定打转(spin on thelock)以等待锁定被释放。假设全集群的锁定是可用的,并且不由另一节点持有,那么该节点取决于特定实施例来检查(多个)集中式改变日志数据结构或者(多个)其自己的本地改变日志数据结构,并且搜索改变日志数据结构,以寻找具有如下共享资源标识符的条目,该共享资源标识符与该节点正尝试通过打开该路径来访问的共享资源的共享资源标识符相匹配。如果共享资源标识符没有存在于改变日志数据结构中,或者条目被发布到改变日志数据结构,指示先前的改变日志数据结构由于对共享资源的缓存的写入的同步而应当被忽略,那么该节点可以获得对该共享资源的全集群锁定,获得并且存储来自其源位置的共享资源的缓存副本,并且执行其对共享资源的其本地缓存副本的读取/写入操作。
如果共享资源标识符存在于改变日志数据结构中,则可以执行各种操作以促进该节点对共享资源的访问,同时维持分布式缓存环境中的共享资源状态的一致性。在改变日志数据结构的最近的匹配条目中所标识的节点被识别为最后访问该共享资源的节点,并且因此,它在其本地缓存中具有最新的版本。在第一实施例中,希望访问共享资源的节点发送指令节点处理共享资源的最近版本以执行同步操作(即强制该同步操作)的控制消息。这样的同步操作可以包括执行卸载操作,例如,强制节点的本地缓存的冲刷,使得缓存的写入被提交到共享资源等。在另一说明性实施例中,节点希望对共享资源执行的访问操作可由处理共享资源的最新版本的节点来远程地执行。也就是说,I/O访问请求可以被发送到处理共享资源的最新版本的节点,并且该节点可以充当替代物并且对共享资源的其自己的本地缓存的副本执行操作。这可以通过将调用请求连接到套接字来实现,其中该套接字的另一侧修补该连接并且模拟原始调用。
在任何时间,处理共享资源的最新版本的节点可以将其缓存冲刷至共享资源的中心位置。在冲刷缓存中,共享资源的本地缓存的副本复制覆盖或者以其他方式替换如今过时的集中式共享资源。
说明性实施例具有相对于在刷新分布式缓存的领域中的已有技术的显著优点。当前的解决方案使本地缓存中的陈旧条目(例如,资源的本地副本)超时或者连续轮询对共享资源属性的改变。在陈旧条目超时的情况下,在某个预定时间量之后,缓存条目被自动宣告陈旧并丢弃。结果,下一次访问必须从源处取回资源的刷新副本。这种机制本身不能保证节点将总是对资源的当前副本进行操作。此外,这种解决方案可能生成无关的网络流量,因为当缓存条目过期时,不论资源是否已经改变,其都将盲目地重新取回资源。
关于轮询解决方案,取决于实施方式,将查询以常规间隔发送到资源的源,例如,每秒一次、每分钟一次等,询问资源是否已经被更新。这个查询能够采取许多形式,包括将当前资源状态与最后已知修改日期作比较、与最后已知校验和作比较等。如果查询确定了资源已经被修改,则该节点将取回资源的刷新副本用于其缓存。这是比超时解决方案更好的解决方案,因为仅重新取回已经修改的资源。然而,存在的缺点在于如果其被修改,则资源总是被重新取回,而不论该资源是否将被使用。这种解决方案还留下了轮询之间的窗口,在该窗口处,资源仍然能够变得陈旧,并且因此利用这种解决方案没有保证一致性。
说明性实施例消除了对检查资源是否已经被更新的需要,因为已经向集群的节点通知了(或者没有通知)资源已经被改变,并且因此不需要向例如中央存储库的源发送可能慢并且昂贵的查询。此外,说明性实施例消除了执行轮询的需要。也就是说,通过说明性实施例,如果节点希望以可能不必要的网络流量为代价来维持100%的一致性,即,即使资源将不被使用也总是复制最新版本,则该节点能够通过立即刷新该节点的本地缓存来对集群事件通知进行响应。这消除了在任何给定时间本地缓存中的资源的本地副本陈旧的概率。这与当前的轮询解决方案形成对照,在当前的轮询解决方案中,陈旧的缓存条目的概率与轮询间隔成比例。
通过说明性实施例的机制,当其他节点或在集中式集群控制设备中接收到集群事件通知时,向其他节点通知该条目(即每个节点的本地缓存的资源的副本)是陈旧的。如果节点不具有该资源的本地缓存的副本,即用于该资源的本地缓存中的条目,则该节点可以忽略这个事件通知。因此,对于识别该共享资源已经被修改,轮询不是必要的。此外,从在事件通知中传达的信息知道陈旧的特定共享资源,并且因此,通过对已经改变的共享资源的整个目录以及它们的属性的搜索不是必要的。此外,说明性实施例的机制可以独立于集群文件***而被实施。
此外,事件通知被非常快速地传输到其他节点或者集中式集群控制设备,并且因此,陈旧条目的寿命很短。也就是说,如果节点将总是保持其资源得缓存副本一致,则该节点能够在接收到事件通知时立即刷新。然而,这不是说明性实施例的要求。实际上,节点可以丢弃通知,直至当其需要重新使用该资源的这样的时刻。因此,在通知被丢弃直至该资源要被重新使用的这样的时刻的情况中,陈旧条目的寿命可以是无限长。
为了进一步说明轮询解决方案与说明性实施例的机制之间的区别,应当记住,轮询解决方案是盲目的并且仅仅以规则间隔发生。查询表示如下的网络流量:在查询指示该资源自从上次轮询发生以来还没有更新的任何时候,该网络流量能够被视作“浪费的”流量。相对照地,说明性实施例的机制仅在资源已经被更新时发送非常小的事件通知,并且这个事件通知向所有的节点通知:它们的资源的本地副本是陈旧的。
另外对于轮询解决方案,资源可能是陈旧的窗口有效地是整个轮询间隔。然而,通过说明性实施例的机制,取决于本地缓存被刷新的特定实施方式,该窗口是单个锁定实例的寿命周期,即非常小的窗口,或者然而是长窗口,其使另一节点在第一事件通知被处理的同时进行第二修改。这是在数学上能够实现的最小的可能的陈旧窗口。
此外,轮询解决方案总是需要应用(或用户)在以下各项之间进行折衷:具有更短的轮询间隔,以便减小可能的陈旧窗口;以及通过要求轮询以可能更高的“浪费的”网络流量的实例更经常地完成而具有增加网络噪声;或者更低的网络噪声但是更长的轮询间隔。说明性性实施例的机制消除了这个折衷问题,因为没有轮询被完成,并且仅在必要时(即当资源被实际修改时)发送小的事件通知。
下文中将参考附图来更具体地描述本发明的说明性实施例的上述方面和优点。应当理解,附图仅意在说明本发明的示例性实施例。本发明可以涵盖在附图中没有明确示出的所描绘的示例性实施例的修改、各方面、实施例,但是根据说明性实施例的描述,对于本领域技术人员来说将是容易明显的。
所属技术领域的技术人员知道,本发明的各个方面可以实现为***、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码/指令。
可以采用计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
在一些说明性实施例中,计算机可读介质是非瞬时计算机可读介质。非瞬时计算机可读介质是不是非实体信号或传播波,即纯信号或传播波本身的任何介质。非瞬时计算机可读介质可以利用信号和传播波,但是不是信号或传播波本身。因此,例如,以任何方式利用信号以保持其状态的各种形式的存储器设备以及其他类型的***、设备或装置在本说明书的范围内可以被视为非瞬时计算机可读介质。
另一方面,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如JavaTM、SmalltalkTM、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为单机软件包部分地在用户的计算机上并且部分地在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本公开。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其他可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其他可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
计算机程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程数据处理装置或其他设备上执行可操作步骤序列,以产生计算机实现的处理,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图的框中所规定的功能/动作的过程。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
为了提供用于说明性实施例的具体元素和功能的描述的上下文,下文中提供了图1-2作为可以实现说明性实施例的各方面的示例性环境。应当理解,图1-2仅是示例,并且不旨在断言或暗示对可以实现本发明的各方面和实施例的环境的任何限制。可以在不背离本发明的精神和范围的情况下进行对所述环境的很多修改。
现在参考图1,图示了根据一个实施例可以被配置为集群***的数据处理环境的高层级框图。在所描绘的实施例中,数据处理环境100包括同构或异构的联网数据处理设备/***的分布式集合,本文被称为节点102。例如,每个节点102能够通过服务器计算机***来实施,诸如从International Business Machines Corporation of Armonk,N.Y可得到的POWER服务器中的一个。替代地,节点102可以是客户端计算设备或者客户端的组合,并且服务器计算设备可以用作节点102。当然,可以在不脱离说明性实施例的精神和范围的情况下使用其他类型的数据处理***。
如所示出的,每个节点102包括硬件资源110和软件资源120二者。节点102的硬件资源110包括用于处理数据和程序指令的处理器112以及数据存储设备114,诸如用于存储软件和数据的存储器和光盘和/或磁盘。硬件资源110还包括附加硬件116,诸如网络、输入/输出(I/O)和***适配器、电源***、端口、管理控制台、附接的设备等。在各种实施例中,硬件资源110可以包括例如响应于高工作负载或硬件失效而可以选择性地放置到服务中的至少一些冗余或备份资源。
节点102的软件资源120能够包括(多个)操作***122、诸如web和/或应用服务器的中间件124、以及应用126的一个或多个可能地异构并发实例。在优选实施例中,操作***122中的至少一个操作***包括支持命令和编程API的内置集群能力以实现对多个节点102上的操作***实例的组中的集群的创建、维护和管理。如下面进一步描述的,操作***基础设施支持根据说明性实施例中的一个或多个说明性实施例的用于确保高效分布的缓存一致性的全集群资源锁定机制和通知机制。在一个说明性实施例中,这种集群能力由集群感知的高级交互执行(AIXTM)来提供,其是从International Business MachinesCorporation of Armonk,New York可得到的基于开放标准的UNIXTM操作***,其被增强以提供用于促进本文根据一个或多个说明性实施例描述的操作和功能的逻辑。
如图1中进一步图示的,节点102通过一个或多个有线或无线的公共或私有网络104耦合,以准许在配置为作为集群操作的不同节点102之间共享硬件资源110和软件资源120中的至少一些。(多个)网络104能够包括局域网或者诸如因特网的广域网以及在个体节点102之间的私有点对点连接。
集群架构的一个重要功能是使得共享的集群硬件和软件资源高度可用。作为一个示例,如果集群***100内的个体节点102失效,则失效的节点102上的一个或多个应用126将由操作***122自动地迁移到集群***100中的一个或多个其他节点102。因此,在短暂中断之后,由失效的节点102提供的服务将继续可用。为了应用126或其他资源将是高度可用的,集群内的多个节点102通常被配置为运行该应用126或资源,但是在时间上的任何单个瞬间,通常至多仅一个节点102管理该共享应用126。
本领域的普通技术人员将理解,诸如在图1中描绘的示例性数据处理环境的集群***中采用的硬件和软件可以变化。例如,集群***能够包括另外的或者更少的节点、一个或多个客户端***、和/或未明确示出的其他连接。图1中所示的一般化集群架构不旨在暗示对要求保护的本发明的任何架构性限制。
为了准许在数据处理环境100中的某些节点102之间共享资源,同时防止由其他节点102、客户端或其他设备对共享资源的未授权的接入,集群配置数据库优选地定义了什么样的节点102被授权以形成和/或加入集群,并且因此访问该集群的共享资源。在图2中描绘的一个优选实施例中,集群配置数据库200驻留在主机节点102的可信共享数据存储设备114上,如图2中由硬盘202表示。集群***100被构建和配置而使得可信共享数据存储设备114仅对被授权为集群的成员的节点102是可访问的(不论在访问时节点102是否实际上是该集群的成员)。
硬盘202包括引导区204,引导区204包含在操作***122中的一个操作***之下引导主机节点102所需要的信息。根据优选实施例,引导区204包括集群字段206,集群字段206包含对集群配置数据库200的指针,集群配置数据库200如所示出的优选地驻留在相同的可信共享数据存储设备114上。至少,集群配置数据库200识别哪些节点102被授权加入集群并且因此访问该集群的共享集群资源。
现在参考图3,图示了根据一个实施例的示例性集群配置数据库200。应当理解,图3中的描绘仅出于说明的目的,并且不意在声明或暗示对必须实施说明性实施例的方式的任何限制。可以在不脱离说明性实施例的精神和范围的情况下进行对集群配置数据库200的许多修改。
在所描绘的实施例中,集群配置数据库200包括多个数据记录302,每个数据记录302都包括有效载荷304和校验和字段306,校验和字段306存储数据记录的有效载荷304的校验和。每个数据记录302的有效载荷304包括用于存储节点102中的相应一个节点102的UUID(通用唯一标识符)的节点UUID字段310。UUID优选地是由节点102自己指配的,并且符合例如在ISO/IEC 11578中描述的格式。数据记录302另外包括记录节点102的临时标识符的节点临时ID字段312,诸如指配给节点102的主机名或因特网协议(IP)地址。数据记录302可以可选地包括通常用附图标号314示出的一个或多个附加节点元数据字段,其保持关于节点102的附加元数据。
如上面注意到的,由集群配置数据库200定义的集群内的节点102共享软件资源120和硬件资源110,包括数据存储设备114中的至少一些数据存储设备。将由集群的其他节点102共享的、节点102的(多个)数据存储设备114由记录在数据记录302的UDID字段316中的通用磁盘标识符(UDID)(或UUID)来标识。在将共享数据存储设备114驻留于其上的主机节点102添加至集群配置时,填充数据记录302的UDID字段316。
与UDID字段316相关联的是磁盘名称字段318,磁盘名称字段318存储用于在UDID字段316中引用的共享数据存储设备114中的每个共享数据存储设备的对应设备名称。如将理解的,诸如操作***114的软件传统上通过各种名称来引用数据存储设备,诸如由UNIXTM用来指代磁盘的主要号码和次要号码的组合。然而,在集群环境中,在节点102之间的软件资源和硬件资源的迁移受到由不同节点102使用不一致的资源标识符来标识同一资源的妨碍。因此,集群配置数据库200优选地包括对用于共享数据存储设备114的唯一名称的生成的支持。在所描绘的实施例中,这种支持包括预留前缀缓冲器330,预留前缀缓冲器330保持共享数据存储设备114的名称的预留前缀。此外,集群配置数据库200包括命名计数器340,命名计数器340单调地前进(即,递增或递减),以确保设备名称在集群配置数据库200的寿命期间从不重复。
当经由集群事件服务向集群中的其他节点或者向托管用于集群的共享资源的集中式服务器发送全集群的事件通知时,可以通过说明性实施例的机制来利用节点和共享资源的UUID和/或UDID。集群事件服务可以是用于全集群通信的任何机制,全集群通信提供可靠(即,保证消息递送)和同步(消息发布操作没有完成直至消息被递送)的消息收发能力,例如,自主健康顾问文件***(AHAFS)等。
如上面所提到的,当节点获得对共享资源的全集群锁定,并且对该共享资源的本地缓存副本上的共享资源的执行缓存的写入时,该节点向该集群中的其他节点或者向集中式服务器或者二者传输出事件通知,向集群的节点通知共享资源已经被改变,并且因此该共享资源的任何本地副本或者甚至源副本对这些其他节点都是陈旧的。这个事件通知可以指定,例如,已经修改了该共享资源的节点的标识符、该共享资源的标识符、以及陈旧指示符,诸如时间戳、用于每个资源的单调增加的版本号等。如果使用版本号,则将资源的缓存副本的版本号与事件通知中的版本号的比较能够被用来确定该资源的缓存的副本是否是陈旧的。如将在下文中详细描述的,这些事件通知被存储在一个或多个改变日志数据结构中,用于以后在节点希望通过打开通向共享资源的路径来访问共享资源时使用。
图4是图示了根据一个说明性实施例的用于执行对共享资源的改变并且生成事件通知的操作的示例框图。如图4中所示出的,提供了诸如服务器、客户端计算设备等的计算设备410-416(本文称为节点410-416)的集群400,其被配置为以如先前在上面描述的方式作为关于可靠性和共享资源的集群进行操作。根据一个说明性实施例,节点410-416中的每个节点包括存储在节点410-416的本地存储器中的改变日志数据结构440-446。节点410-416中的每个节点进一步包括本地缓存存储器450-456,本地缓存存储器450-456用于缓存共享资源,以用于对共享资源的本地访问。这些共享资源可以包括由集群400的各种节点410-416共享的文件、数据结构等,使得这些节点410-416中的任何节点可以执行从/向这些共享资源的读取/写入。共享资源可以被存储在网络附接的存贮器430中,可以驻留在节点410-416中的一个或多个节点中,提供在可以被配置为用于集群400的控制服务器的集中式服务器中等,例如,节点416可以是用于集群400的中央集群控制服务器。
当诸如节点410的节点希望写入到诸如存储在存储***430中的文件或数据结构的共享资源时,节点410通过执行对本地缓存450中的共享资源的本地副本的写入来将写入缓存在本地缓存中。也就是说,使用节点410作为示例,节点410使用本领域中一般已知的任何已知的集群资源锁定机制来获得对资源的读取锁定,读取共享资源并且将共享资源的副本存储在本地缓存450中。此后,节点410可以获得对共享资源的全集群写入锁定,并且对本地缓存450中的共享资源的本地缓存副本执行读取/写入输入/输出(I/O)操作,以由此将对共享资源的写入缓存在本地缓存450中。
根据说明性实施例的机制,当节点410执行对其本地缓存450中的共享资源的写入操作时,节点410向集群400中的其他节点412-416传输集群事件通知。这些集群事件通知是被传输到其他节点412-416的小的大小的数据报,包括指示以下各项的最小量的信息:(1)被写入的共享资源;(2)写入共享资源的节点,例如,这个示例中的节点410;以及(3)陈旧指示符,诸如时间戳或版本标识符,其可以用于识别哪些事件通知、以及共享资源的哪些版本是最近的。这些事件通知可以采取许多不同的形式,但是在一个说明性实施例中,事件通知可以包括陈旧指示符、共享资源UUID或UDID、以及执行了共享资源的写入的节点的UUID。用于这样的事件通知的一个示例格式可以具有类型{timestamp:FileUUID:SourceNodeUUID}。
当集群400的节点412-416接收到集群事件通知消息时,向节点412-416的本地改变日志数据结构442-446发布对应的改变日志数据结构条目。应当理解,虽然图4图示了单个本地改变日志数据结构440-446被提供在每个节点410-416中,但是说明性实施例不限于此。确切地说,对于对应节点的用户中的每个用户,可以存在单独的改变日志数据结构440-446,能够由节点410-416共享的每个共享资源,等等。因此,在一些情况下,当生成与接收到的集群事件通知相对应的改变日志数据结构条目时,节点410-416首先可以诸如基于与集群事件通知相关联的共享资源的UUID,来识别哪个改变日志数据结构来生成该事件。
改变日志数据结构以适用于特定实施方式的任何方式,例如,以基于与集群事件相关联的时间戳的时间顺序、以接收的顺序、根据共享资源或者发送集群事件通知的资源节点的UUID来组织、等等的方式,来存储用于集群事件通知的条目。如此后将关于图5所描述的,以允许用于找到改变日志数据结构中的匹配条目的对改变日志数据结构的快速搜索的方式来存储条目。
在某个时刻,在首先验证了其拥有共享资源的最新版本之后,节点410可以通过例如将共享资源的本地副本复制在共享存储***430上,来将其本地缓存450冲刷至集群400。在这种情况下,节点410传输指示共享资源的中心副本是最新的集群事件通知。其他节点412-416可以通过删除、废弃、或者以其他方式忽略对应于共享资源的先前改变日志条目,来对这个通知进行响应。在一些实施例中,这样的集群事件通知可以与其他集群事件通知一样作为条目被添加到节点412-416的本地改变日志数据结构442-446,并且可以结合由用于共享资源的这些节点412-416和源节点先前获得的其他集群事件通知一起来考虑。在其他说明性实施例中,指示共享资源的冲刷的集群事件通知的接收发起了在其他节点412-416中的一种过程,该过程用以移除或废弃它们的本地改变日志数据结构442-446中的对应于共享资源和源节点的条目。
图5是图示了根据一个说明性实施例的用于访问已经具有对共享资源的锁定的共享资源的操作的示例框图。对应于图4中的元件的图5中的元件利用类似的附图标号。
如图5中所示出的,当节点412上的过程510希望访问共享资源时,节点412首先针对与寻求访问的共享资源相对应的条目来检查其本地改变日志数据结构442。例如,使用共享资源的UUID,执行对本地改变日志数据结构442的搜索,以识别对应于共享资源的最近的改变日志数据结构442条目。可以基于匹配共享资源UUID的条目的陈旧指示符的比较来识别最近的改变日志数据结构442条目。最近改变日志数据结构442条目可以然后被分析以确定共享资源的本地缓存的副本目前是否处于陈旧状态。如果不是,则节点412可以进行对共享资源的其本地缓存的副本的操作。
如果最近的改变日志数据结构442条目指示共享资源的最新版本实际上由例如节点410的另一节点保持,则寻求访问共享资源的节点412可以向节点410发送控制消息,以强制对节点410的共享资源的本地缓存的写入的同步。对同步的强制可能涉及使得节点410将其本地缓存450冲刷至集群400,使得该共享资源的本地副本被复制到共享存储***430。作为强制的同步的结果,节点410传输集群事件通知,指示以先前在上面描述的方式对共享资源的冲刷。节点410可以在稍晚时间发起缓存和更新的过程,但是在此时,节点412可以以上面关于图4描述的方式使用本地缓存的副本来访问共享资源。
应当理解,尽管关于集群400的节点410-416中的每个节点保持它们自己的改变日志数据结构的实施例描述了图4和图5,但是说明性实施例不限于此。相反地,如上面注意到的,在一些说明性实施例中,一个或多个改变日志数据结构的集中式集合可以例如诸如经由集中式服务器计算设备416而与共享资源相关联。因此,在这样的实施例中,不是在由节点对共享资源的本地缓存的副本执行写入时广播集群事件通知,而是集群事件通知可以被传输到集中式服务器计算设备用于在更新对应于共享资源的改变日志数据结构中使用。
应当理解,对说明性实施例的上述描述假设需要将共享资源的最新副本冲刷至共享存储***430,以便用于另一节点获得对共享资源的最近版本的访问。然而,说明性实施例不限于此。相反地,如上面注意到的,在一些说明性实施例中,希望对共享资源进行操作的节点可以请求处理共享资源的最新版本的节点充当用于被执行的操作的代理或替代物。
如上面注意到的,说明性实施例填充和利用一个或多个改变日志数据结构。图6是根据一个说明性实施例的改变日志的数据结构的一个示例。改变日志数据结构600中的条目可以包括:标识被改变的资源的资源标识符610(例如,UUID)、标识执行由资源标识符610标识的资源的改变或更新的源节点的源节点标识符612、标识该条目与改变日志数据结构600中的相同资源的其他条目相比的相对陈旧的陈旧指示符614(例如,时间戳、单调增加的版本号等)、以及指示资源的官方源副本是否已经被更新为最新版本的更新指示符616(例如,布尔值)。可以响应于由节点在它们对它们的资源的本地缓存的副本执行写入或更新时发送的通知来生成改变日志数据结构600中的条目,并且可以在执行将资源的本地缓存副本冲刷回给集群时被更新(即,对更新指示符616进行更新)。
图7是概述了根据一个说明性实施例的由集群的节点对共享资源执行读取/写入操作的示例操作的流程图。如图7中所示出的,操作开始于节点发起用于访问共享资源的访问操作(步骤702)。基于所发起的对共享资源的访问的类型来做出确定,即读取或写入访问(步骤705)。如果访问是读取访问,则操作获取对共享资源的读取锁定(步骤710)。如果访问是写入访问,则操作获取对共享资源的全集群写入锁定(步骤715)。
无论访问是读取还是写入,都关于节点是否具有共享资源的本地缓存的副本而做出确定(步骤720)。如果节点具有共享资源的本地缓存的副本,则关于用于共享资源的最新改变日志条目是否指示共享资源的本地缓存的副本是陈旧的而做出确定(步骤725)。如果本地缓存的副本是陈旧的,或者如果不存在本地缓存的副本(步骤720),则(从日志条目)识别保持共享资源的最新版本的节点(步骤730)。从在步骤730中识别的节点将共享资源的最新版本下载到节点的本地缓存(步骤735)。
此后,或者响应于本地缓存具有共享资源的最新版本,关于访问操作是读取还是写入再次做出确定(步骤740)。应当注意,步骤740中的决定将匹配步骤705中的决定的结果,即,不可能对于步骤705确定访问操作是读取/写入,并且步骤740决定该访问操作是读取/写入中的另一个。如果访问是读取访问操作,则对共享资源的本地缓存的副本执行读取操作(步骤745),并且然后释放读取锁定(步骤750)。如果访问是写入访问操作,则对共享资源的本地缓存的副本执行写入操作(步骤755),根据先前描述的说明性实施例来向集群中的其他节点传输事件通知(步骤760),并且然后释放写入锁定(步骤770)。操作然后终止。
在图7的上述操作流程中,应当理解,步骤710、715、745和765是指锁定获取/释放的机制,这通常是公知的概念,并且因此,不需要关于如何准确地具体执行锁定获取和释放的进一步解释。在步骤720中,所确定的是共享资源的本地缓存的副本是否存在,并且如果不存在,则节点能够跳过确定缓存的副本是否是最新版本的尝试,因为其在本地缓存中不具有共享资源的任何版本。替代地,操作直接跳转到确定共享资源的最新版本当前位于何处(步骤730)并且将其下载到当前节点的本地缓存中(步骤735)。
另一方面,如果在步骤720中确定了节点已经具有本地缓存的副本,则该节点看向其本地改变日志以及改变日志中对应于共享资源的条目,以确定本地缓存的副本是否是陈旧的(步骤725)。如果共享资源的本地缓存的副本不是陈旧的(即,节点的本地副本是共享资源的最新副本),则该节点能够跳过获取最新版本,并且直接进行到开始于步骤740的序列,由此节点对例如文件的共享资源进行操作。如果节点的共享资源的本地副本是陈旧的,则该节点需要做同样的事情,就像它起初就不具有本地缓存的副本,即确定最新版本在何处并且将其下载到节点的本地缓存(步骤730和735)。
开始于步骤740的操作序列是其中节点知道其在其自己的本地缓存中具有共享资源的最新版本,并且因此,能够对共享资源的本地缓存的副本执行期望的访问操作。如果节点正在执行读取操作,则该节点能够执行这个操作(步骤745)并且释放读取锁定(步骤750)。在这种情况下事件通知不是必要的,因为共享资源没有由读取操作改变。另一方面,如果该节点正在执行写入操作,则对共享资源的节点的本地缓存的副本执行写入操作(步骤755),并且事件通知被传输到集群的其他节点,指示共享资源已经被改变(步骤760),并且写入锁定被释放(步骤765)。
如上面所描述的,事件通知包括同步的可靠的“事件”,由此保证集群中的每个参与节点在上述流程进行超过步骤760之前接收到数据报。在说明性实施例中,事件通知数据报包括:(a)被改变的资源的标识(例如UUID),(b)源节点的标识(该节点执行对共享资源的更新或改变)的标识,(c)陈旧指示符,例如时间戳,如果集群是时间同步的则或者是单调增加的版本号。在一个说明性实施例中,经由可靠的同步信道(诸如AHAFS等)来向每个参与节点传输该数据报,并且每个节点通过将其内容存储在本地改变日志数据结构中来对接收到这个数据报做出反应。在不同的实施例中,该数据报被附加到驻留在中央存储位置中改变日志,并且各个节点不需要采取动作直到/除非它们需要作用于相同的资源。
在步骤725和730中,希望对特定的共享资源进行操作的节点必须咨询改变日志,并且找到属于(如由改变日志条目中的标识(a)所识别的)该共享资源的最新(根据改变日志条目中的陈旧指示符(c),例如,时间戳或版本号)条目。简单地,在本地环境中或者在集中式存储位置处,公知的技术被用来过滤改变日志数据结构,使得仅考虑具有相关的(a)资源UUID的条目,并且对这些条目进行分类使得仅考虑根据(c)陈旧指示符的最新的条目。已经以这种方式分离出单个日志条目,源节点的标识(b)指示保持期望资源的最新版本的节点的标识。
除了上面所概述的操作之外,还存在两种特殊情况要考虑。第一种特殊情况是,如果在改变日志数据结构中没有找到匹配条目。这意味着,所考虑的共享资源还没有被本地缓存在集群的任何节点上,并且步骤735导致请求节点从共享资源的源存储位置取回共享资源。这实际上能够以两种方式来产生:i)该资源真的从未在任何节点上被本地缓存;或者ii)执行了冲刷操作(参见此后在图8中概述的冲刷操作)。也就是说,在一些实施例中,此后描述的对通知850的反应可以是删除其资源标识符(a)匹配事件通知的资源标识符的所有改变日志条目。应当理解,执行冲刷的节点将仍然具有本地缓存的共享资源的最新副本并且将会想要继续利用这一点。在改变日志位于节点的本地环境中的说明性实施例中,执行了冲刷操作的节点可以通过不删除所有匹配的改变日志条目来实现这一点。替代地,执行了冲刷的节点可以简单地将源副本的版本指示符(c)与它自己的本地缓存的副本作比较。
在第二种特殊情况下,匹配条目可以指示该共享资源的最新版本被冲刷至共享资源的源存储位置。在一个实施例中,这可以通过使用用于改变日志的条目中的(b)(即源节点的标识)的预定的特殊值来完成。在另一实施例中,数据报可以具有包括布尔指示符的第四字段,该布尔指示符指示资源的官方源副本已经被更新为最新版本。在这种特殊情况下,步骤735导致了请求节点从其源存储位置取回共享资源,再次除了其标识匹配(b)的节点能够跳过下载,因为该节点已经具有缓存的最新版本。
图8是概述了根据一个说明性实施例的用于对集群的节点执行冲刷操作的示例操作的流程图。如图8中所示出的,冲刷操作包括获得对共享资源的写入锁定(步骤810)以及确定改变日志的改变日志条目是否指示了节点在其本地缓存中具有共享资源的最新版本(步骤820)。如果不是,则该共享资源的本地缓存的副本不是最新的版本,并且能够从本地缓存中删除(步骤830)。如果共享资源的本地缓存的副本是最新版本,则本地缓存的版本被写入到用于共享资源的源存储位置(步骤840),并且向集群的其他节点发送事件通知,指示源位置存储了共享资源的最新版本(步骤850)。此后,或者如果本地缓存的副本因为其不是最新的版而被删除(步骤830),则写入锁定被释放(步骤860)并且终止操作。
可以出于几个原因来发起图8中概述的操作。最常见的原因简单地是,按照设置的计划表和/或当检测到低资源使用的时段时(所以该操作不与其他工作发生干扰),例行地执行这样的冲刷。然而,这样的冲刷还有可能按照如先前所描述地尝试访问共享资源的另一节点的需要来发起。在这样的实施例中,在步骤730与735之间***新的操作,诸如标题为“从识别的节点请求缓存冲刷”的步骤732(未示出),并且然后步骤735将再次导致共享资源从其源存储位置被下载。注意,在这样的情况下,冲刷节点将跳过锁定/解锁(步骤810和860),因为其本质上是在由请求冲刷的节点已经保持的锁定的支持下进行操作。
再次地,步骤810和860利用对共享资源的写入锁定的锁定/释放的已知机制。在这种情况下,操作是关于写入(排除)锁定的,因为在这个操作期间具有读取共享资源的其他节点是不合意的,因为不保证节点正在读取共享资源的最新版本或者先前(陈旧)版本。
在步骤820中,假定改变日志的处理找到属于所考虑的共享资源的最新条目。在这种情况下,简单地基于节点标识符(b)是否是节点自己的节点标识符,来确定本地副本是否是共享资源的最新版本。如果不是,则该节点知道其本地缓存的副本(如果存在一个)是陈旧的,并且因此,本地缓存的副本能够被安全地删除(步骤830)。此外,已知对于节点而言没有什么要冲刷,并且能够释放写入锁定(步骤860)。
经由步骤820,如果节点确定了它具有共享资源的最新版本,则该节点将共享资源的最新版本写回到源位置,并且一旦它已经被写回到源位置,就需要发送出事件通知,以指示源位置现在具有共享资源的最新版本。上文讨论了这个事件通知的结果(参见特殊情况的讨论)。
因此,说明性实施例提供了用于提供高效分布的缓存一致性的机制。这些机制通过向节点通知由节点进行的对共享资源的本地缓存的副本的写入访问,使得共享资源状态被确定为陈旧,来确保集群中的缓存一致性。因此,不需要对共享资源的状态的轮询,因为已经借助具有小的固定大小的有效载荷的集群事件通知向节点通知了共享资源的陈旧或非陈旧。因此,从由执行对共享资源的更新的节点发布的小的固定大小的事件通知,集群中的所有节点被提供具有共享资源的一致的全集群示图。
如上所述,应当理解,说明性实施例可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元件的实施例的形式。在一个示例性实施例中,说明性实施例的机制以软件或程序代码来实现,其包括但不限于固件、驻留软件、微代码等。
适用于存储和/或执行程序代码的数据处理***将包括通过***总线直接或间接耦合到存储器元件的至少一个处理器。存储器元件可以包括在程序代码的实际执行、大容量存储以及缓存存储器的实际执行期间采用的本地存储器,其提供至少一些程序代码的临时存储以减少在执行期间必须从大容量存储检索代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指示设备等)可以直接或通过中间I/O控制器耦合到***。网络适配器还可以耦合到***以使得数据处理***能够通过中间专用或公共网络而变得耦合到其他数据处理***或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅仅是几个当前可用类型的网络适配器。
本发明的描述是出于说明和描述的目的而呈现,而不意在以所公开的形式穷举或限制本发明。许多修改和变体对于本领域普通技术人员来说将是显而易见的。实施例被选择和描述为最好地解释本发明的原理、实际应用,并且使得本领域的普通技术人员能够理解适用于所预期的具体使用的具有各种修改的各种实施例的发明。

Claims (11)

1.一种在包括处理器和存储器的数据处理***中的方法,所述方法用于对数据处理***的集群中的共享资源执行写入操作,所述方法包括:
由所述数据处理***来确定所述共享资源的本地缓存的副本是否存在于所述数据处理***的本地缓存存储器中;
响应于所述共享资源的本地缓存的副本存在于所述本地缓存存储器中的确定,确定所述共享资源的所述本地缓存的副本是否是所述共享资源的最新版本;以及
响应于确定所述共享资源的该本地缓存的副本是所述共享资源的最新版本:
对所述共享资源的所述本地缓存的副本执行所述写入操作,以生成所述共享资源的更新的本地缓存的副本;以及
向所述集群的其他数据处理***传输集群事件通知,所述集群事件通知指示所述共享资源被写入并且标识所述集群中的哪个数据处理***执行了所述写入操作,其中所述集群事件通知被记录在与所述其他数据处理***相关联的至少一个改变日志数据结构中。
2.根据权利要求1所述的方法,其中确定所述共享资源的本地缓存的副本是否是所述共享资源的最新版本包括:
搜索与所述数据处理***相关联的改变日志数据结构以寻找与所述共享资源相对应的条目,其中所述改变日志数据结构响应于所述集群中的其他数据处理***访问所述集群的共享资源而存储与从所述其他数据处理***接收的集群事件通知相对应的条目;以及
基于所述改变日志数据结构的所述搜索的结果,来确定所述改变日志数据结构中的条目是否指示所述共享资源的所述本地缓存的副本是所述共享资源的最新版本。
3.根据权利要求2所述的方法,其中确定所述改变日志数据结构中的条目是否指示所述共享资源的所述本地缓存的副本是所述共享资源的最新版本包括:
基于所述改变日志数据结构中的所述条目的陈旧指示符,来识别与所述共享资源相对应的所述改变日志数据结构中的最新条目;以及
确定所述最新条目中的源标识符是否匹配所述数据处理***的标识符,其中所述源标识符标识执行了对所述共享资源的写入操作的数据处理***。
4.根据权利要求2所述的方法,其中确定所述改变日志数据结构中的条目是否指示所述共享资源的所述本地缓存的副本是所述共享资源的最新版本包括:
确定是否不存在与所述改变日志数据结构中的所述共享资源相对应的条目;以及
响应于确定不存在与所述改变日志数据结构中的所述共享资源相对应的条目,确定所述共享资源的所述本地缓存的副本不是所述共享资源的最新版本。
5.根据权利要求2所述的方法,进一步包括:
响应于基于所述改变日志数据结构中的所述条目而确定所述共享资源的所述本地缓存的副本不是所述共享资源的最新版本,基于所述改变日志数据结构中的所述条目来识别所述共享资源的最新版本的存储位置;
从所述共享资源的最新版本的所述存储位置读取所述共享资源的最新版本;以及
将所述共享资源的新的本地缓存的副本存储在所述数据处理***的所述本地缓存存储器中。
6.根据权利要求1所述的方法,其中所述集群事件通知包括以下各项中的至少一项:所述共享资源的所述更新的本地缓存的副本的版本号或者与对所述共享资源的所述本地缓存的副本执行所述写入操作的时间相对应的时间戳、所述数据处理***的唯一标识符、以及所述共享资源的唯一标识符。
7.根据权利要求1所述的方法,进一步包括响应于事件来执行所述数据处理***的所述本地缓存存储器的冲刷,其中执行所述本地缓存存储器的所述冲刷包括:
确定所述共享资源的所述本地缓存的版本是否是所述共享资源的最新版本;以及
基于确定所述共享资源的所述本地缓存的版本是否是所述共享资源的最新版本的结果,将所述本地缓存的版本写回到所述共享资源的源存储位置或者从所述本地缓存存储器中删除所述共享资源的所述本地缓存的副本。
8.根据权利要求7所述的方法,其中如果确定所述共享资源的所述本地缓存的版本是否是所述共享资源的最新版本的结果指示了所述共享资源的所述本地缓存的版本是所述共享资源的最新版本,则所述方法包括将所述本地缓存的版本写回到所述共享资源的所述源存储位置,并且向所述集群的所述其他数据处理***发送事件通知,所述事件通知指示所述共享资源的最新版本位于所述源存储位置处。
9.根据权利要求1所述的方法,其中所述至少一个改变日志数据结构包括多个改变日志数据结构,每个改变日志数据结构驻留在所述集群中的所述数据处理***中的对应的一个数据处理***上。
10.根据权利要求1所述的方法,其中所述至少一个改变日志数据结构包括与所述共享资源的源存储位置相关联的单个改变日志数据结构。
11.一种数据处理***,包括用于执行权利要求1至10中任一项所述的方法步骤的装置。
CN201410683394.5A 2013-12-12 2014-11-24 用于对数据处理***的集群中的共享资源执行写入操作的方法和*** Active CN104715001B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/104,008 2013-12-12
US14/104,008 US9183148B2 (en) 2013-12-12 2013-12-12 Efficient distributed cache consistency

Publications (2)

Publication Number Publication Date
CN104715001A CN104715001A (zh) 2015-06-17
CN104715001B true CN104715001B (zh) 2018-01-26

Family

ID=53368602

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410683394.5A Active CN104715001B (zh) 2013-12-12 2014-11-24 用于对数据处理***的集群中的共享资源执行写入操作的方法和***

Country Status (2)

Country Link
US (2) US9183148B2 (zh)
CN (1) CN104715001B (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10496538B2 (en) * 2015-06-30 2019-12-03 Veritas Technologies Llc System, method and mechanism to efficiently coordinate cache sharing between cluster nodes operating on the same regions of a file or the file system blocks shared among multiple files
US10019456B2 (en) * 2016-06-29 2018-07-10 Microsoft Technology Licensing, Llc Recovering free space in nonvolatile storage with a computer storage system supporting shared objects
CN106250212A (zh) * 2016-07-29 2016-12-21 努比亚技术有限公司 资源访问方法及装置
CN106649669B (zh) * 2016-12-14 2018-06-05 咪咕数字传媒有限公司 一种基于远程字典服务器的数据存储方法及***
US10725915B1 (en) 2017-03-31 2020-07-28 Veritas Technologies Llc Methods and systems for maintaining cache coherency between caches of nodes in a clustered environment
US10928880B2 (en) * 2017-06-23 2021-02-23 Dell Products L.P. Power storage adapter for communicating battery data with a portable information handling system
CN109213769B (zh) * 2017-06-30 2022-04-29 华为技术有限公司 一种数据对象的数据冲突识别方法
US10489310B2 (en) * 2017-10-20 2019-11-26 Hewlett Packard Enterprise Development Lp Determining cache value currency using persistent markers
US10592418B2 (en) 2017-10-27 2020-03-17 Dell Products, L.P. Cache sharing in virtual clusters
AU2018357856B2 (en) * 2017-10-31 2021-03-18 Ab Initio Technology Llc Managing a computing cluster using time interval counters
CN108153492B (zh) * 2017-12-22 2021-09-14 联想(北京)有限公司 数据处理方法、***和电子设备
US10760485B2 (en) * 2018-02-02 2020-09-01 General Electric Company Virtualizing data for a vehicle control system
CN108959405B (zh) * 2018-06-06 2021-08-17 深圳市远行科技股份有限公司 数据的强一致性读取方法及终端设备
CN109582730B (zh) * 2018-10-11 2023-04-25 创新先进技术有限公司 缓存同步方法、装置、电子设备及计算机可读存储介质
US11288194B2 (en) 2018-12-12 2022-03-29 International Business Machines Corporation Global virtual address space consistency model
US11561844B2 (en) 2018-12-12 2023-01-24 International Business Machines Corporation Disaggregated system domain
EP3881191A4 (en) 2018-12-28 2021-09-22 Huawei Technologies Co., Ltd. APPARATUS AND METHOD FOR LOCKING A NON-TRANSPARENT BRIDGE PCIE NETWORK
US11782880B2 (en) 2019-01-04 2023-10-10 International Business Machines Corporation Synchronizing log data within a cluster
US11042479B2 (en) * 2019-01-08 2021-06-22 Oracle International Corporation Fully active and non replicated block storage solution
CN109783107B (zh) * 2019-01-10 2022-05-24 深圳市小赢信息技术有限责任公司 一种可视化的规则生成方法、装置及电子设备
CN113168293A (zh) * 2019-01-31 2021-07-23 华为技术有限公司 用于访问集群存储***中的缓存的方法和装置
CN110227265B (zh) * 2019-06-18 2020-06-26 贵阳动视云科技有限公司 一种计算机图形资源共享方法及装置
US11442860B2 (en) * 2019-08-02 2022-09-13 EMC IP Holding Company LLC Host cache coherency when reading data
US10970219B2 (en) 2019-08-02 2021-04-06 EMC IP Holding Company LLC Host cache coherency when modifying data
CN110677462B (zh) * 2019-09-09 2022-07-12 上海共链信息科技有限公司 多区块链网络的访问处理方法、***、装置及存储介质
US11449488B2 (en) * 2019-12-30 2022-09-20 Shipbook Ltd. System and method for processing logs
CN111343258A (zh) * 2020-02-17 2020-06-26 中国建设银行股份有限公司 对等节点的管理方法、装置、存储介质及电子设备
CN112000618B (zh) * 2020-08-07 2022-06-07 北京浪潮数据技术有限公司 集群节点的文件变动管理方法、装置、设备及存储介质
CN112995301B (zh) * 2021-02-07 2023-03-10 中国工商银行股份有限公司 应用于分布式***的数据处理方法和装置
CN113448976B (zh) * 2021-06-30 2023-08-15 腾讯科技(上海)有限公司 数据处理方法、装置、计算机设备和存储介质
US11954353B2 (en) * 2021-09-24 2024-04-09 International Business Machines Corporation Tape-to-tape copying between nodes of magnetic tape file systems
CN114896344A (zh) * 2022-05-26 2022-08-12 上海聚水潭网络科技有限公司 一种分布式内存缓存的数据同步方法及***

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101005399A (zh) * 2006-01-16 2007-07-25 上海贝尔阿尔卡特股份有限公司 网络设备管理方法、网络设备和网络设备管理***
CN101448004A (zh) * 2008-12-23 2009-06-03 ***通信集团北京有限公司 基于即时通信的用户状态发布方法、服务器及***
CN102387204A (zh) * 2011-10-21 2012-03-21 中国科学院计算技术研究所 维护集群缓存一致性的方法及***
CN102436366A (zh) * 2011-08-22 2012-05-02 华为技术有限公司 数据同步方法和装置
WO2012170234A2 (en) * 2011-06-04 2012-12-13 Microsoft Corporation Clustered file service

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5490270A (en) 1994-06-16 1996-02-06 International Business Machines Corporation Simultaneous updates to the modification time attribute of a shared file in a cluster having a server and client nodes
US5553239A (en) 1994-11-10 1996-09-03 At&T Corporation Management facility for server entry and application utilization in a multi-node server configuration
US5612865A (en) 1995-06-01 1997-03-18 Ncr Corporation Dynamic hashing method for optimal distribution of locks within a clustered system
US5666486A (en) 1995-06-23 1997-09-09 Data General Corporation Multiprocessor cluster membership manager framework
US7774443B2 (en) 1996-07-23 2010-08-10 Server Technology, Inc. Power-manager configuration upload and download method and system for network managers
US5870759A (en) 1996-10-09 1999-02-09 Oracle Corporation System for synchronizing data between computers using a before-image of data
US5870765A (en) 1996-10-09 1999-02-09 Oracle Corporation Database synchronizer
US5884325A (en) 1996-10-09 1999-03-16 Oracle Corporation System for synchronizing shared data between computers
US5881316A (en) 1996-11-12 1999-03-09 Hewlett-Packard Company Dynamic allocation of queue space using counters
US5898836A (en) 1997-01-14 1999-04-27 Netmind Services, Inc. Change-detection tool indicating degree and location of change of internet documents by comparison of cyclic-redundancy-check(CRC) signatures
US6151688A (en) 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
US6108699A (en) 1997-06-27 2000-08-22 Sun Microsystems, Inc. System and method for modifying membership in a clustered distributed computer system and updating system configuration
US6163806A (en) 1997-06-30 2000-12-19 Sun Microsystems, Inc. System and method for transparent, global access to physical devices on a computer cluster
US6047332A (en) 1997-06-30 2000-04-04 Sun Microsystems, Inc. Global file system-based system and method for rendering devices on a cluster globally visible
US6014669A (en) 1997-10-01 2000-01-11 Sun Microsystems, Inc. Highly-available distributed cluster configuration database
US6247149B1 (en) * 1997-10-28 2001-06-12 Novell, Inc. Distributed diagnostic logging system
US6038625A (en) 1998-01-06 2000-03-14 Sony Corporation Of Japan Method and system for providing a device identification mechanism within a consumer audio/video network
US6256740B1 (en) 1998-02-06 2001-07-03 Ncr Corporation Name service for multinode system segmented into I/O and compute nodes, generating guid at I/O node and exporting guid to compute nodes via interconnect fabric
WO1999059064A1 (en) 1998-05-12 1999-11-18 Sun Microsystems, Inc. Highly available cluster virtual disk system
US6269374B1 (en) 1998-05-26 2001-07-31 International Business Machines Corporation Method and apparatus for updating checksums of data structures
US6119131A (en) 1998-06-12 2000-09-12 Microsoft Corporation Persistent volume mount points
US6467050B1 (en) 1998-09-14 2002-10-15 International Business Machines Corporation Method and apparatus for managing services within a cluster computer system
US6694459B1 (en) 1999-01-14 2004-02-17 Microsoft Corporation Method and apparatus for testing a data retrieval system
US6453426B1 (en) 1999-03-26 2002-09-17 Microsoft Corporation Separately storing core boot data and cluster configuration data in a server cluster
US6460133B1 (en) * 1999-05-20 2002-10-01 International Business Machines Corporation Queue resource tracking in a multiprocessor system
US6842789B1 (en) 1999-10-21 2005-01-11 Sun Microsystems, Inc. Method and apparatus for assigning unique device identifiers across a distributed computing system
US6662219B1 (en) 1999-12-15 2003-12-09 Microsoft Corporation System for determining at subgroup of nodes relative weight to represent cluster by obtaining exclusive possession of quorum resource
US6748429B1 (en) 2000-01-10 2004-06-08 Sun Microsystems, Inc. Method to dynamically change cluster or distributed system configuration
AU2001259402A1 (en) 2000-05-02 2001-11-12 Sun Microsystems, Inc. Cluster membership monitor
AU2001255795A1 (en) 2000-05-02 2001-11-12 Sun Microsystems, Inc. Cluster configuration repository
KR100425494B1 (ko) 2000-08-21 2004-03-30 엘지전자 주식회사 웹 기반 전송장비의 관리 데이터 동기 방법
US6751721B1 (en) 2000-08-31 2004-06-15 Hewlett-Packard Development Company, L.P. Broadcast invalidate scheme
US6499085B2 (en) * 2000-12-29 2002-12-24 Intel Corporation Method and system for servicing cache line in response to partial cache line request
WO2002087172A1 (en) 2001-04-20 2002-10-31 Motorola, Inc. Protocol and structure for self-organizing network
US7593968B2 (en) 2001-06-05 2009-09-22 Silicon Graphics, Inc. Recovery and relocation of a distributed name service in a cluster filesystem
US7640582B2 (en) 2003-04-16 2009-12-29 Silicon Graphics International Clustered filesystem for mix of trusted and untrusted nodes
JP4306152B2 (ja) * 2001-06-26 2009-07-29 株式会社日立製作所 クラスタ化したアプリケーションサーバおよびデータベース構造を持つWebシステム
US6918013B2 (en) 2001-07-16 2005-07-12 Bea Systems, Inc. System and method for flushing bean cache
US6892316B2 (en) 2001-11-02 2005-05-10 International Business Machines Corporation Switchable resource management in clustered computer system
US7107267B2 (en) 2002-01-31 2006-09-12 Sun Microsystems, Inc. Method, system, program, and data structure for implementing a locking mechanism for a shared resource
WO2003073206A2 (en) 2002-02-22 2003-09-04 Bea Systems, Inc. System and method for using a data replication service to manage a configuration repository
US7020798B2 (en) 2002-06-27 2006-03-28 Microsoft Corporation Detecting low-level data corruption
US20040088294A1 (en) 2002-11-01 2004-05-06 Lerhaupt Gary S. Method and system for deploying networked storage devices
US7103616B1 (en) 2003-02-19 2006-09-05 Veritas Operating Corporation Cookie-based directory name lookup cache for a cluster file system
US8001142B2 (en) 2003-04-02 2011-08-16 Oracle America, Inc. Distributed data system with incremental data updates
US7334089B2 (en) 2003-05-20 2008-02-19 Newisys, Inc. Methods and apparatus for providing cache state information
US20050015471A1 (en) 2003-07-18 2005-01-20 Zhang Pu Paul Secure cluster configuration data set transfer protocol
US7401093B1 (en) 2003-11-10 2008-07-15 Network Appliance, Inc. System and method for managing file data during consistency points
US7200626B1 (en) 2004-01-22 2007-04-03 Unisys Corporation System and method for verification of a quiesced database copy
US7379952B2 (en) 2004-01-30 2008-05-27 Oracle International Corporation Techniques for multiple window resource remastering among nodes of a cluster
US7289998B2 (en) 2004-06-24 2007-10-30 International Business Machines Corporation Method to update a data structure disposed in an embedded device
US20060100981A1 (en) 2004-11-04 2006-05-11 International Business Machines Corporation Apparatus and method for quorum-based power-down of unresponsive servers in a computer cluster
US20060167921A1 (en) 2004-11-29 2006-07-27 Grebus Gary L System and method using a distributed lock manager for notification of status changes in cluster processes
US7617257B2 (en) 2004-12-03 2009-11-10 Oracle International Corporation System for persistent caching of LDAP metadata in a cluster LDAP server topology
US7269706B2 (en) 2004-12-09 2007-09-11 International Business Machines Corporation Adaptive incremental checkpointing
US7660809B2 (en) 2005-01-31 2010-02-09 Microsoft Corporation Using a file server as a central shared database
KR101197556B1 (ko) 2006-01-09 2012-11-09 삼성전자주식회사 불 휘발성 메모리의 프로그램 동작을 검증하는 장치 및방법, 그리고 그 장치를 포함한 메모리 카드
US8301589B2 (en) 2006-05-10 2012-10-30 Sybase, Inc. System and method for assignment of unique identifiers in a distributed environment
US20080052455A1 (en) 2006-08-28 2008-02-28 Dell Products L.P. Method and System for Mapping Disk Drives in a Shared Disk Cluster
US7930370B2 (en) 2007-12-31 2011-04-19 Intel Corporation Method and system for remote configuration of managed nodes
US8095753B1 (en) 2008-06-18 2012-01-10 Netapp, Inc. System and method for adding a disk to a cluster as a shared resource
KR101688835B1 (ko) * 2010-06-25 2016-12-23 삼성전자주식회사 광대역 무선 접속 시스템에서 트래픽 오프로드를 위한 장치 및 방법
US9069571B2 (en) 2010-12-01 2015-06-30 International Business Machines Corporation Propagation of unique device names in a cluster system
US8943082B2 (en) 2010-12-01 2015-01-27 International Business Machines Corporation Self-assignment of node identifier in a cluster system
US8788465B2 (en) 2010-12-01 2014-07-22 International Business Machines Corporation Notification of configuration updates in a cluster system
US20120143836A1 (en) 2010-12-01 2012-06-07 International Business Machines Corporation Validation of access to a shared data record subject to read and write access by multiple requesters
US9436748B2 (en) * 2011-06-23 2016-09-06 Simplivity Corporation Method and apparatus for distributed configuration management

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101005399A (zh) * 2006-01-16 2007-07-25 上海贝尔阿尔卡特股份有限公司 网络设备管理方法、网络设备和网络设备管理***
CN101448004A (zh) * 2008-12-23 2009-06-03 ***通信集团北京有限公司 基于即时通信的用户状态发布方法、服务器及***
WO2012170234A2 (en) * 2011-06-04 2012-12-13 Microsoft Corporation Clustered file service
CN102436366A (zh) * 2011-08-22 2012-05-02 华为技术有限公司 数据同步方法和装置
CN102387204A (zh) * 2011-10-21 2012-03-21 中国科学院计算技术研究所 维护集群缓存一致性的方法及***

Also Published As

Publication number Publication date
US9183148B2 (en) 2015-11-10
US20150169497A1 (en) 2015-06-18
US20150169455A1 (en) 2015-06-18
US9262324B2 (en) 2016-02-16
CN104715001A (zh) 2015-06-17

Similar Documents

Publication Publication Date Title
CN104715001B (zh) 用于对数据处理***的集群中的共享资源执行写入操作的方法和***
US11120044B2 (en) System and method for maintaining a master replica for reads and writes in a data store
US11894972B2 (en) System and method for data replication using a single master failover protocol
CN104731691B (zh) 动态调整分布式文件***内文件副本数目的方法和***
ES2881606T3 (es) Sistema de ficheros geográficamente distribuido que usa replicación de espacio de nombres coordinada
US9965364B2 (en) Fault tolerant listener registration in the presence of node crashes in a data grid
US9411873B2 (en) System and method for splitting a replicated data partition
US9405606B2 (en) Clustered filesystems for mix of trusted and untrusted nodes
CN109639794A (zh) 一种有状态集群恢复方法、装置、设备及可读存储介质
RU2417416C2 (ru) Развертывание решений в ферме серверов
US7366742B1 (en) System and method for distributed discovery and management of frozen images in a storage environment
WO2011103537A1 (en) Data synchronization between a data center environment and a cloud computing environment
CN106936623A (zh) 分布式缓存***及缓存集群的管理方法
US9537951B2 (en) Management of network devices within a dispersed data storage network
US20120117131A1 (en) Information processing device, file management method, and recording medium for file management program
CN103973725A (zh) 一种分布式协同方法和协同器
CN112039970A (zh) 一种分布式业务锁服务方法、服务端、***及存储介质
US9871863B2 (en) Managing network attached storage
CN110019529A (zh) 数据节点的管理方法、***以及相关设备
JP2008159054A (ja) ソフトウェア自動配布システム
CA2619778C (en) Method and apparatus for sequencing transactions globally in a distributed database cluster with collision monitoring
CN109558205B (zh) 磁盘访问方法及装置
CN118193481A (zh) 数据库加密密钥撤销的处理
CN115617917A (zh) 一种数据库集群多活控制的方法、装置、***和设备

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