CN107771321A - 数据中心中的恢复 - Google Patents
数据中心中的恢复 Download PDFInfo
- Publication number
- CN107771321A CN107771321A CN201680033822.7A CN201680033822A CN107771321A CN 107771321 A CN107771321 A CN 107771321A CN 201680033822 A CN201680033822 A CN 201680033822A CN 107771321 A CN107771321 A CN 107771321A
- Authority
- CN
- China
- Prior art keywords
- server
- affairs
- recovery process
- configuration
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/142—Reconfiguring to eliminate the error
- G06F11/1425—Reconfiguring to eliminate the error by reconfiguration of node membership
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2025—Failover techniques using centralised failover control functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
-
- 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/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/825—Indexing scheme relating to error detection, to error correction, and to monitoring the problem or solution involving locking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
描述了数据中心中的服务器集群处的服务器。服务器包括作为集群的分布式存储器的部分的存储器。服务器具有对存储在分布式存储器的区域中的软件对象执行事务和无锁定读取的至少一个处理器,软件对象和事务的细节在分布式存储器中被复制。服务器具有被布置为接收指示集群的新配置的消息的网络接口卡,新配置包括其他服务器中的至少一个的添加、去除或潜在故障。处理器被配置为使用恢复过程,该恢复过程使得无锁定读取和事务中的提交的事务能够跨配置变化保持原子性、一致性、隔离性和持久性的属性。
Description
背景技术
包括经由网络连接的大量服务器的数据中心越来越多地用于云计算服务,并且需求量很大。随着需求的增加,其中数据中心中的一个或多个服务器出现故障的情况也增加,并且这导致云计算服务中断和其他错误。数据中心运营商通常需要向数据中心添加更多的服务器,以便扩展以满足需求,或者去除服务器以进行维护或升级。
发明内容
为了向读者提供基本的理解,下面给出了本公开的简化的概述。本发明内容不旨在标识要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。其唯一目的是以简化的形式呈现本文中公开的概念的选择,作为稍后呈现的更详细的描述的序言。
描述了数据中心中的服务器集群处的服务器。服务器包括作为集群的分布式存储器的部分的存储器。服务器具有对存储在分布式存储器的区域中的软件对象执行事务和无锁定读取的至少一个处理器,软件对象和事务的细节在分布式存储器中被复制。处理器可以接收指示包括其他服务器中的至少一个的添加、去除或潜在故障的集群的新配置的消息。处理器被配置为使用恢复过程,该恢复过程使得无锁定读取和提交的事务能够跨配置保持原子性、一致性、隔离性和持久性的属性。参考以下结合附图考虑的具体实施方式,将更容易理解很多附属特征。
附图说明
根据附图阅读下面的具体实施方式将更好地理解本说明书,在附图中:
图1是具有拥有新的恢复过程的服务器集群的数据中心的示意图,并且示出了数据中心被用于向终端用户设备和web服务器提供云服务;
图2是诸如图1的服务器之一等数据中心服务器的示意图;
图3是数据中心服务器集群处的服务器和配置管理器的配置的示意图;
图4是事务协议的示意图;
图5是数据中心服务器集群中的恢复过程的流程图;
图6是作为恢复过程的部分的数据中心的服务器处的方法的流程图;
图7是数据中心中的事务状态恢复过程的流程图;
图8是作为恢复过程的部分的数据中心的服务器处的流程图;
图9是数据中心的作为事务A的协调器的服务器处的过程和数据中心的作为参与事务A的区域的主要者的服务器处的过程的流程图;
图10是其中可以实现数据中心的服务器(诸如图2的服务器)的实施例的示例性的基于计算的设备。
相同的附图标记在附图中用于表示相同的部分。
具体实施方式
以下结合附图提供的具体实施方式旨在作为对本示例的描述,而不是旨在表示可以构建或利用本示例的唯一形式。该描述阐述了示例的功能以及用于构建和操作示例的步骤的顺序。但是,相同或等同的功能和顺序可以通过不同的示例来实现。
在数据中心中运行的应用越来越需要提供旨在可靠的云计算服务。例如,目的可以是提供具有原子性、一致性、隔离性和持久性的数据库事务(被称为ACID事务)。事务可以是对数据库(诸如数据中心处的服务器集群的分布式存储器)的单个逻辑操作。例如,事务可以是从一个数据记录到另一数据记录的数据传输,可能涉及多个变化。在下面描述的示例中,数据库可以是在数据中心的多个服务器的主存储器上在逻辑上定义的分布式存储器。
现有的数据中心部署通常不提供ACID分布式事务,因为先前的这样做的尝试已经导致性能差和/或可用性差。数据中心设计人员倾向于完全避免事务,削弱一致性保证,或提供需要程序员分割他们的数据的单机事务。
在数据中心中发生故障(诸如一个或多个服务器崩溃)的情况下,以数据中心中的事务能够保持ACID的方式从故障情况自动恢复是非常困难的。这也适用于数据中心试图从其他配置变化(诸如添加更多服务器或删除一个或多个服务器以进行维护或升级)恢复的情况。配置变化是数据中心基础架构的任何变化,诸如服务器布局的变化或可运行的服务器数目的变化。
下面描述的实施例不限于解决已知数据中心技术的任何或全部缺点的实现。
图1是包括经由网络104连接的多个服务器102的数据中心100的示意图。数据中心实现新的恢复过程124,新的恢复过程124存储在服务器102处并且使得数据中心处的服务器集群能够以支持在数据中心中实现的任何提交的事务(包括无锁定读取)是ACID而不管恢复如何的方式从配置变化自动恢复。新的恢复过程也可以支持恢复,使得在数据中心服务器集群中实现的任何提交的事务都保持可串行性,并且在某些情况下,保持严格的可串行性。一组事务的可串行性是本领域中众所周知的术语。总而言之,一组事务的可串行性表示执行事务的外部可观察的效果与事务以某种连续顺序执行而没有时间交叠的情况相同,其中每个事务在单个时间点立即执行。严格的可串行性表示事务似乎执行的时间点始终在事务执行的开始与事务完成被报告的点之间。
恢复过程工作以支持在数据中心中实现的任何提交的事务(包括无锁定读取)都是ACID,而不管以各种方式恢复如何。其提交阶段跨配置变化的一些事务等待恢复协议来决定它们提交还是中止。这些是受配置变化影响的事务。不受配置变化影响的事务能够执行正常的提交协议,而其他事务等待恢复过程来决定其结果。
原子性是事务为“全有或全无”的特性。也就是说,如果事务的一部分失败,则整个事务失败,并且数据库状态保持不变。一致性规定事务将数据库从一个有效状态转移到另一有效状态。隔离性规定事务不相互干扰。持久性规定一旦事务已经被提交,它将保持如此。即使在从电源故障、崩溃和其他配置变化恢复的情况下,恢复协议也用于支持原子性。恢复协议至少部分通过标识其提交阶段跨配置变化的事务并且使用恢复协议来决定它们提交还是中止以实现原子性、一致性、隔离性和持久性来实现这一点。在一些示例中,恢复协议至少部分通过配置数据中心中的服务器,使得至少在与请求相关联的配置标识符的基础上拒绝对在服务器处接收的单侧读取请求的应答,来提供ACID事务的属性。在一些示例中,恢复协议至少部分通过在数据中心的分布式存储器中使用复制并且使用事务细节来提供持久性的属性。在一些示例中,恢复协议至少部分通过配置数据中心中的服务器来恢复在新配置时已经提交的事务的写入锁定来提供ACID事务的属性,锁定恢复过程操作以从复制的事务日志恢复写入锁定,这些事务日志可以使用单侧写入被写入。
配置变化可以从一个或多个服务器的故障,从为了维护而添加或去除服务器,或其他原因导致。无锁定读取是从请求服务器到存储返回对象值的对象的另一服务器处的区域的往返请求。它使用单个单侧读取来执行,这表示具有数据的服务器上的处理器不参与处理请求。无锁定读取与读取单个对象并且不写入对象的事务给出相同的结果。
数据中心100处的集群的服务器102执行一个或多个应用,以便经由任何合适类型的网络108(诸如互联网或内联网)向终端用户设备122、web服务器120或其他计算实体提供云服务。终端用户设备可以包括平板计算机110、个人台式计算机112、智能电话114、可穿戴计算机116、膝上型计算机118等。
在图1中示出了六个服务器(也称为机器)102,尽管实际上可以存在数千台服务器。提供一个或多个协商节点106以使得服务器的配置能够被部署,如下面更详细地描述的。诸如负载平衡器等其他部件可以存在于数据中心100中,尽管这些为清楚起见而在图1中未示出。
数据中心100包括多个协商节点106,协商节点106一起提供用于协商服务器102的新配置的协商服务,如下面更详细地描述的。协商服务使用在多个协商节点120上复制的数据,使得协商服务是容错的。
集群的服务器每个具有本地存储器,它们在下面提到的示例中一起被视为分布式存储器。存储器可以被划分成如下面更详细地描述的区域,并且区域在服务器集群上被复制。以这种方式使用复制支持恢复,因为来自发生故障的服务器处的区域的数据可以从集群中其他位置的这些区域的副本来恢复。
图2是诸如图1的服务器之一等数据中心服务器120的示意图。它包括一个或多个中央处理单元200、202、非易失性存储器204和网络接口卡206、或者用于经由网络104与数据中心中的其他实体通信的其他装置。非易失性存储器204存储数据使得其在服务器崩溃或断电的情况下被保持。当服务器重新启动时,存储在非易失性存储器204中的数据再次变得可用。这可以帮助使得在数据中心中实现的事务具有ACID事务的属性,即使所有服务器断电。例如,恢复过程一旦再次变得可用就可以使用来自非易失性存储器的数据,尽管该数据可能需要更新。
在下面描述的示例中,使用非易失性存储器,其可以使用动态随机存取存储器(DRAM)、电池和持久储存器来实现。但是,使用非易失性存储器并不重要。在一些示例中,数据中心服务器可以仅使用诸如DRAM等易失性存储器。这是因为分布式存储器区域的复制使得能够在仅使用易失性存储器的情况下恢复数据。通过与分布式存储器区域的复制结合使用非易失性存储器,支持在数据中心处的服务器集群中存在多个故障的情况下(例如,当软件对象的所有副本同时崩溃的情况下)恢复。
数据中心的服务器中的一些服务器可能仅具有易失性存储器,而数据中心服务器中的其他服务器可能具有非易失性存储器。
在一些示例中,非易失性存储器使用本地能量存储装置来实现,诸如在每个服务器处将电池与商品固态驱动器(SSD)或类似的永久性存储装置一起使用的情况下。当发生电源故障时,服务器使用来自电池的能量将服务器处的非永久性存储器(诸如动态随机存取存储器,DRAM)的内容保存到SSD。以这种方式,数据中心服务器中的大量便宜的DRAM可以以试图持久地存储数据并且从而支持使得事务具有ACID属性的方式来使用。
在其他示例中,使用包含它们自己的专用闪速存储器、控制器和超级电容器的非易失性双列直插式存储器模块(NVDIMM)。可以使用其他类型的非易失性存储器,诸如相变存储器和忆阻器。
网络接口卡206可以被配置为启用不涉及服务器102的CPU的单侧操作。例如,网络接口卡206可以通过网络104接收来自数据中心服务器中的另一服务器的单侧读取请求。网络接口卡使用DMA 208(直接存储器存取)从非易失性存储器204读取所请求的数据。来自远程服务器的请求被称为远程直接存储器存取(RDMA),因为它是从一个计算机的存储器到另一计算机中的请求,其涉及启动RDMA请求的计算机的CPU而不是响应于RDMA请求的计算机的CPU。
以这种方式使用单侧操作给出减少CPU上的负载的益处。通过实证调查,发明人已经标识出,在可能的情况下使用单侧RDMA读取和写入来在数据中心处的一个或多个服务器集群中实现事务协议提高了性能。话虽如此,但是使用单侧操作并不重要。也可以使用涉及CPU的双侧操作。
图3是在数据中心处具有配置管理器的服务器配置的示意图。配置包括在数据中心处的多个服务器102,并且其中服务器之一是配置管理器314。配置管理器被布置为分配多个服务器的分布式存储器的新区域。它保持分布式存储器的区域映射310。分布式存储器在图3中以虚线示出作为共享的全局地址空间308来指示它不是共享的物理存储器,而是指代在服务器102处本地的存储器区域的存储器地址空间。在图3中的示例中,在本地服务器处的存储器区域304、306在非易失性存储器204中,但是在一些示例中它们可以在易失性存储器中,如上所述。
(分布式存储器的)存储器区域可以是主区域304或备份区域306。主区域是存储数据的主副本的区域,并且备份区域是其配对的主区域的副本。备份区域通常位于与配对的主区域不同的服务器上。每个主区域可以使用一个或多个备份区域。区域存储诸如应用的软件对象等数据。以这种方式,对象可以在两个或更多个机器上被复制。
配置管理器使用计数器312来分配新的主存储器区域,如下面更详细地描述的。
包括作为某种类型的服务器102的配置管理器314的数据中心的服务器102具有一个或多个日志302,一个或多个日志302是诸如缓冲器、环形缓冲器等储存器、或者被保持在非易失性存储器中的其他储存器,其中服务器具有可用的非易失性存储器。日志302存储用于实现恢复过程的控制数据。例如,版本号、配置标识符、事务标识符和其他数据,如下面更详细地描述的。
数据中心包括用于自动检测配置变化的机制。在一些示例中,这种机制是用于检测潜在的服务器故障的租赁方案。在这种情况下,服务器102存储租赁300,并且配置管理器314存储当前活动配置中的每个服务器的租赁信息300(在任何时间点存在单个活动配置)。消息在配置管理器314与配置的服务器之间被发送,以请求和更新租赁。当租赁到期时,在租赁期限内没有收到来自对应机器的消息,并且因此怀疑机器出现故障。
在一些示例中,数据中心包括用于例如在一个或多个服务器发生故障的情况下或者在一个或多个服务器被添加/去除的情况下协商新配置的机制。协商节点106可以管理这个过程。在一些示例中,协商新配置的过程使用服务器和协商节点已知的配置协议。配置协议可以实现精确的成员资格,如下面更详细地解释的。通过实现精确的成员资格,恢复过程即使在涉及单侧读取的情况下也能够工作。通过使用实现精确的配置成员资格的配置协议,即使在集群处执行应用期间使用单侧操作的情况下,也可以支持集群恢复。
在一些示例中,网络接口卡被配置为支持具有计时器的租赁,并且拒绝在NIC的租赁计时器已经到期而没有被更新之后到达的请求。在这种情况下,精确的成员资格是不必要的,并且恢复过程仍然能够工作,即使涉及单侧读取。
配置的服务器和配置管理器314具有关于图1所述的恢复过程的知识。服务器102和配置管理器314也知道事务协议并且实现这个事务协议以便向分布式存储器写入数据和从分布式存储器读取数据。一个或多个应用在服务器上执行以提供一个或多个云服务。应用之一的线程执行事务以读取和/或写入数据到分布式存储器,并且事务协议用于实现这个过程。事务协议可以是支持事务的ACID属性并且支持事务和无锁定读取的可串行性的事务协议。
在数据中心的操作期间,多个事务在不同的线程和不同的服务器上执行,并且当发生配置变化时,这些事务可以处于任何执行阶段。这使得从故障或其他配置变化恢复非常困难。
事务协议具有执行阶段和提交阶段。单独的事务在事务的寿命期间由协调器线程在服务器之一处执行,除非从配置恢复产生事务的新的协调器线程。整个系统没有必要具有单个协调器线程。多个事务可以在执行阶段或提交阶段并行运行。不同的事务可以在相同协调器线程中运行,也可以在相同服务器上的不同协调器线程上运行,也可以在不同的服务器上运行。事务协议可以获取事务的读取集合,产生用于事务的暂时写入集合,并且一旦准备好就提交事务。读取集合是由事务读取的一组软件对象,并且写入集合是由事务暂时写入的一组软件对象。在一些示例中,提交阶段执行具有两个往返RPC(锁定和验证)和一个单向RPC(更新和解锁)的两阶段协议。“RPC”表示远程过程调用。
在示例中,事务协议被设计为用于与单侧操作一起使用。合适的事务协议的示例在图4中给出,但是这仅仅是一个示例,并且其他的也是可能的。在图4的示例中,事务能够使用单侧读取来读取对象,并且在提交阶段使用单侧写入。事务能够使用对使用单侧读取来读取对象的验证,以避免锁定读取对象。事务协议可以向使得能够检测并发读取的数据对象添加位。除了在存在配置变化的情况下之外,该机制能够实现可串行性。通过使用新的恢复过程,即使发生配置变化,也可以实现可串行性。
事务使用乐观并发控制与对象中的版本号。它们由协调器执行,协调器是执行应用的事务代码的任何服务器上的线程。协调器不被复制,并且直接与主要者和备份通信,从而进一步减少时延和消息计数。
图4示出了示例事务协议的时间线。在执行阶段期间,协调器为本地或远程对象发出读取,并且记录它们的版本。它缓存写入,直到事务尝试提交。远程对象通过向对象的主要者发出单侧RDMA读取来读取。在提交阶段期间,它使用Pw(f+3)单侧RDMA写入(其中Pw是具有由事务写入的对象的主要者的数目)和Pr单侧RDMA读取(其中Pr是读取但是没有写入的对象的数目)。也可以使用两个单侧RDMA写入和主要者处的CPU参与,经由到主要者的远程过程调用来验证对象。这在仅由事务读取并且具有由事务读取的大量对象的主要者的情况下提供了潜在的效率。
提交协议使用到存储在主要者和备份处的非易失性DRAM中的环形缓冲器中的RDMA写入。在概念上,每个环形缓冲器仅由运行事务的协调器线程写入,并且由在主要者或备份处的对等线程异步读取(实现跨线程透明地多路复用环形缓冲器)。每个环形缓冲器既作为消息通道,也作为事务日志。不需要其他日志。当事务尝试提交时,协调器将锁定记录写入由事务修改的对象的主要者处的日志。这些记录包含存储在机器上的写入对象的对象版本和新状态、以及包含由事务写入的对象的所有区域的列表。主要者使用对象版本的比较和交换来自动检查由协调器读取的对象版本是否仍然是当前版本,并且如果是,则锁定版本。它们通过向协调器处的环形缓冲器写入确认来应答协调器,确认指示事务应当中止还是继续。
与传统的两阶段提交协议不同,只读参与者(其为存储由事务读取的对象但是不存储任何修改的对象的主要者)不参与协议的这个阶段。相反,图4的协议使用附加的读取验证阶段。协调器发出RDMA以读取由事务读取的对象的当前版本(这些是上面提到的Pr单侧读取,每个对象一个)。如果它们与由事务最初读取的版本相匹配,则保证它们在事务的序列化点处是当前的,序列化点是获取所有锁定的点。如果它们不匹配,则协调器中止事务。这是重要的优化,因为它确保事务不会在只读参与者处消耗任何CPU时间并且消除了需要阻止读取锁定以及发送消息来锁定和解锁它们。时延由于其而增加两个消息延迟,但是这是很好的折衷:RDMA读取在未加载的系统中需要少于3微秒,并且CPU时间的减少抵消了加载的系统中增加的延迟。
由于复制而引起的开销是最小的。协调器向备份处的非易失性日志发出COMMIT-BACKUP(提交-备份)记录的单个RDMA写入,并且然后等待来自NIC硬件的确认而不中断备份的CPU。COMMITBACKUP提交-备份日志记录与LOCK(锁定)记录具有相同的内容。
在从所有备份接收到确认(确认)之后,协调器向主要者处的非易失性日志写入COMMIT-PRIMARY(提交-主要者)记录。主要者通过更新对象的位置,递增它们的版本,并且解锁它们从而暴露由事务提交的写入,来处理COMMIT-PRIMARY记录。在发送COMMIT-PRIMARY之前等待来自备份的确认是必要的,以确保跨故障的严格的可串行性。否则,在某个事务读取修改之后,主要者和协调器失败,导致稍后的事务错过修改。
如果协调器不是主要者,则在向客户端确认之前,它还等待来自至少一个主要者的NIC的硬件确认。否则,如果所有的备份失败,则事务可能仍然中止,导致系统丢失关于读取验证成功的信息。
备份和主要者将记录保持在其日志中,直到它们被截断。协调器在从所有主要者接收到确认之后,徐缓地在主要者和备份处截断日志。它通过在其他协议消息中捎带被截断的事务的标识符来完成这个操作。备份在截断时间处将更新应用于它们的对象的副本。在传统的两阶段提交协议中,参与者在准备阶段期间预留资源来提交事务,并且如果参与者没有足够的资源,则拒绝准备事务。在图4的方法中使用不同的技术,因为备份的CPU不参与提交协议。相反,协调器在启动提交协议之前为所有提交协议记录预留空间,提交协议记录包括主日志和备份日志中的截断记录。由于协调器是远程机器上日志的所有者,因此预留是协调器上的本地操作。当对应的记录被写入时,预留被释放。如果截断在另一消息上被捎带,则截断记录预留也被释放。如果日志变满,则协调器使用预留发送明确的截断消息来释放日志中的空间。这很少发生,但是需要以确保活跃性。
图5是在数据中心处的服务器集群中的恢复过程的流程图。自动检测500潜在故障或其他类型的配置变化。例如,使用上述的租赁方案或其他方法通过节点之间的对等通信来监测服务器的行为。由于无法可靠地检测服务器故障,因此配置变化检测过程的结果并不总是可靠的。因此,即使大多数服务器已经声明服务器s崩溃,被错误地怀疑为有故障的服务器s也可能保持服务于读取请求。一旦s被声明崩溃,为了进展,恢复过程工作以向其他服务器重新分配其对象。如果s没有真正崩溃,则恢复过程工作以防止其服务于具有与系统状态不一致的对象值的读取请求。下面给出关于如何实现的更多细节。
一旦检测到潜在的配置变化,就如上所述调用配置协议。这导致协商502新配置。在一些示例中,配置协议实现精确的成员资格。精确的成员资格表示所有服务器都知道哪些服务器在配置中,并且它们也知道其他服务器知道这一点。在这种情况下,图5的步骤504被执行以同步新配置的服务器,使得它们都知道哪些服务器在新配置中。这防止尚不知道新配置的服务器通过使用单侧请求来观察到不一致的状态。例如,它可能会访问另一服务器sa上的存储器,其包含先前配置中的对象ol,但是包含新配置中的o2。由于sa上的处理器不处理RDMA请求,因此它无法检测到请求来自旧配置。如果发起请求的服务器不知道新配置,则它也不能拒绝结果,所以它最终观察到不一致的状态。通过确保配置中的所有服务器都知道这,服务器可以被布置为不向先前配置中的服务器发出无锁定读取请求,并且拒绝来自不再在配置中的服务器的应答。现在参考图6更详细地描述这一点。
数据中心集群中的服务器接收新配置600,例如,作为恢复过程的部分,其接收消息,该消息包括在新配置中的服务器的标识符列表。服务器接收602无锁定读取应答消息(例如,在网络接口卡206处)。无锁定读取应答消息包括发送服务器的ID的细节。服务器的CPU 200之一处的恢复过程检查604发送服务器的ID是否存在于新配置中的服务器的标识符列表中。如果是,则接受608读取应答。如果不是,则在一些示例中,CPU进行更多检查606。例如,它检查自读取被发出以来正在读取的区域的主要者是否发生变化。在一些情况下,进一步的检查606成功,并且CPU允许接受608读取应答。如果附加检查606失败,则拒绝610读取应答。
回到图5,恢复过程可以在步骤502使用替代过程来协商新配置。例如,不使用单侧操作。当发生配置变化时,如上所述使用租赁来检测配置变化。服务器不需要立即协商新配置,并且能够在应答读取请求之前检查它们是否保持新配置的租赁。
恢复过程继续提交事务的初始状态506(这些事务是由于新配置而被强制重新启动的事务,或者已经被允许继续而不管新配置如何的事务)。这涉及操作恢复过程,使得配置的参与者能够以一致的状态启动新配置并且最终复制所有区域。这些区域的数据不需要被复制以进行事务。数据恢复可以在事务状态被恢复之后发生,并且可以与系统的继续执行同时进行,如下面更详细地描述的。在事务恢复期间,关于影响每个区域的事务日志记录的信息被复制。在这个阶段,服务器获取新区域并且释放旧区域。取决于服务器崩溃和数据复制的顺序,如果处理不当,则可能会丢失数据。关于步骤506的处理的更多细节在下面参考图7给出。
一旦新配置的参与者具有一致的状态,则使用事务协议来服务于508事务,并且在区域状态被恢复的同时,无锁定读取可以继续。
图7是在数据中心处的服务器集群中的事务状态恢复过程的流程图。该过程包括在已经提升为主要者的备份处恢复700锁定,在备份处恢复日志702,恢复协调器状态704并且决定706恢复的事务提交还是中止。图7的过程可以与以新配置开始的事务并行操作。
图8是作为恢复过程的部分的数据中心处的集群的服务器处的过程的流程图。从数据中心集群的单个服务器的角度来看,图8的流程图包括图7的步骤700和702的过程的部分。
服务器尝试将新配置写入到在协商节点106处的协商服务。获胜的那个成为CM,并且向该配置中的所有其他服务器发送NEW-CONFIG(新-配置)消息,并且在概念上将其发送给自己。服务器接收新配置800。当机器接收到具有比它自己的更大的配置标识符i的NEW-CONFIG时,它更新它的当前配置标识符和它的区域映射的高速缓存副本,并且分配空间来保持分配给它的任何新的区域副本。从这一点来说,它不会向不在配置中的机器发出新的请求,并且拒绝从这些机器读取响应并且写入数据。它也使用关于无锁定读取请求的图6的过程。
服务器使用NEW-CONFIG-ACK(新-配置-确认)消息(图8中未示出)来应答CM。一旦CM接收到来自配置i中所有机器的NEW-CONFIG-ACK消息,就会使用NEW-CONFIG-COMMIT(新-配置-提交)消息应答所有这些机器。这实现了上述精确的成员资格过程。
然后,服务器排出它们的日志802,即它们处理当前在日志中的所有完整的日志记录。
消息使用当前配置被标记,并且接收器拒绝来自先前配置的任何消息。这个检查不足以用于到事务日志的单侧RDMA写入,因为协调器作用于由网络硬件发送的确认,而主要者和备份异步地处理COMMIT-BACKUP和COMMIT-PRIMARY记录。为了解决这个问题,事务具有在提交开始处分配的唯一标识符<c,m,t,l>,其对线程本地唯一ID l、协调器的线程IDt、协调器的机器ID m和提交开始的配置c编码。主要者和备份不能简单地拒绝使用旧配置标记的事务的日志记录,因为其他主要者可能已经提交了这些事务并且暴露了其更新。因此,主要者和备份通过在它们接收到NEW-CONFIG-COMMIT消息时处理所有日志记录来排出它们的日志,并且在它们完成时在变量LastDrained中记录配置标识符。排出日志在图8的步骤802中示出。正确性通过拒绝具有小于或等于LastDrained的配置标识符的事务的日志记录来确保。
如果协调器在启动提交协议时接收到配置中的网络硬件确认,则日志记录被保证在排出之前或期间被处理,并且协调器在稍后的配置中接收到确认情况下拒绝确认。
其提交阶段跨配置变化的一些事务等待恢复协议来决定它们提交还是中止。这些是受配置变化影响的事务,即它们的协调器故障、它们的读取集合中的对象的主要者变化、或者它们的写入集合中的对象的任何副本变化。不受配置变化影响的事务能够执行正常的提交协议,而其他事务等待恢复协议来决定其结果。所有的机器都协商是否允许事务执行而不用等待恢复过程。CM通过读取每个机器处的LastDrained变量的值作为探测读取的部分来保证协商,尝试成为CM的机器向配置中的每个机器发出的单侧读取。对于自LastDrained以来映射已经改变的每个区域r,CM在NEW-CONFIG消息中向该机器发送两个配置ID。这些是LastPrimaryChange[r](当r的主要者变化时的最后一个配置ID)和LastReplicaChange[r](当r的任何副本变化时的最后一个配置ID)。在以下情况下,开始在配置i-1中提交的事务可以在配置i中继续:对于包含由事务LastReplicaChange[r]<i修改的对象的所有区域r以及对于包含由事务LastReplicaChange[r0]<i读取的对象的所有区域r0,并且协调器没有被从配置i被去除。协调器使用该信息来决定是否接受对事务日志的RDMA写入的确认,并且副本用它来决定是否处理日志记录。
服务器标识受配置变化影响的事务以及由那些事务修改的区域804。对于其中服务器是备份的受影响区域,其向这些区域的主要者发送NEED-RECOVERY(需要-恢复)消息806。
对于其中服务器是主要者的每个受影响区域808,服务器防止810读取或修改区域中的对象,直到它完成恢复该区域的锁定。它等待来自区域的备份的NEED-RECOVERY消息812,并且恢复告知它需要锁定哪些对象的事务状态814。服务器锁定816区域中受事务影响的对象。
然后,服务器激活区域818,使得读取或修改区域中的对象可以继续(除了这些对象被锁定的情况)。
图7的日志恢复过程702包括:对于其中服务器是主要者的每个受影响区域820,将日志记录复制到备份(如果它们还没有具有它们)。
当服务器处的所有主区域都是活动的时,服务器向配置管理器(CM)发送822REGIONS-ACTIVE(区域-活动)消息。当服务器从CM接收到ALL-REGIONS-ACTIVE(所有-区域-活动)消息824时,它被触发以执行可能并行发生的步骤826和828。步骤826包括开始分配器恢复。步骤828包括用于新备份的数据恢复,其涉及在新备份处从其主配对方复制区域。新备份的数据恢复可以与事务执行的前台操作并行进行。
现在给出关于新备份的数据恢复的更多细节:
区域的新备份最初具有新分配和归零的本地区域副本。它划分跨并行恢复它的工作线程的区域。每个线程都会发出单侧操作,以便从主要者一次读取部分数据。该部分大小足够大以可以有效地使用网络,但是又足够小以不会影响正常情况操作。为了减少对前台性能的影响,通过调度下一次读取在上一次读取开始之后的间隔内的随机点处开始来进行恢复。在复制到备份之前,将检查每个恢复的对象。如果对象未在主要者处锁定并且其具有大于本地版本的版本,则备份使用比较和交换来锁定本地版本,更新对象状态并且将其解锁。否则,对象已经或正在被创建大于或等于已恢复版本的版本的事务更新,并且恢复的状态不被应用。
现在描述分配器恢复826。
分配器是每个机器上的部件。它跟踪每个区域内的哪些存储器区域正在使用(分配)并且哪些是空闲的并且可以由事务内的对象分配请求返回。这个状态被恢复,以避免重复分配相同的存储器并且避免通过将空闲对象错误地标记为分配来泄漏空闲对象。分配器被布置为将区域分割成用作用于分配小对象的SLAB的块。它保持了两个元数据:包含对象大小的块头部和SLAB空闲列表。在分配新块时,块头部将被复制到备份,这表示它们在故障之后在新的主要者上可用。在接收到NEW-CONFIG-COMMIT之后,正在恢复区域的块头部立即从新的主要者重新复制到备份,因为它们包含在数据恢复中使用的对象大小信息。主要者将块头部发送到所有备份,以避免在复制块头部时旧主要者发生故障时可能出现的不一致。
SLAB空闲列表仅被保存在主要者的存储器中以减少对象分配的开销。每个对象的头部中都具有由分配设置并且在事务提交时由空闲清除以便使得能够恢复SLAB空闲列表的位。列表通过扫描区域中的对象来恢复,这由机器上的所有线程并行完成。为了减少对事务锁定恢复的影响,在接收到ALL-REGION-ACTIVE之后开始分配恢复。
图9是数据中心集群的作为事务A的协调器的服务器处的过程以及数据中心集群的作为参与事务A的区域的主要者的服务器处的过程的流程。这些流程图解释协调器状态如何恢复以及提交或中止事务如何作为恢复过程的部分而发生。
由于协调器(即,线程协调事务A)不被复制,所以恢复过程从被事务修改的区域的主要者的日志中恢复事务的协调器状态。一致性散列用于确定事务的协调器,确保协调器当其在新配置中时保持不变。
作为事务A的协调器的服务器接收来自参与事务A的主要者的投票902。其也可以向那些主要者发送对于投票的请求904。根据主要者处的日志数据和/或在主要者处接收到的消息类型,来自主要者的投票具有不同的类型。
取决于其接收到的投票,服务器决定提交还是中止事务906。它通过向这些主要者发送COMMIT-RECOVERY(提交-恢复)或ABORT-RECOVERY(中止-恢复)消息908来向主要者通知其决定。它等待910来自主要者的确认,并且向那些主要者912发送TRUNCATE-RECOVERY(截断-恢复)消息。
参与事务A的主要者914执行图9下部的方法。对于受事务影响的主要者具有的每个区域,它向协调器发送恢复投票消息916。如果接收到对于投票的请求,则它在重新复制事务的日志记录之后发送投票918。
现在给出关于投票消息的更多细节。主要者中的线程将RECOVERY-VOTE(恢复-投票)消息发送到协调器中的对等线程,以用于修改区域的每个恢复事务。如果任何副本在日志中具有COMMIT-PRIMARY记录或接收到COMMIT-RECOVERY消息,则投票为commit-primary;如果任何副本在日志中具有ABORT记录或接收到ABORT-RECOVERY消息,则投票为abort;如果任何副本在日志中具有COMMIT-BACKUP记录并且没有接收到ABORT-RECOVERY消息,则投票为commit-backup;或者如果任何副本在日志中具有LOCK记录并且没有接收到ABORT-RECOVERY消息,则投票为lock。投票消息还包括配置标识符、区域标识符、事务标识符以及由事务修改的区域标识符列表。
协调器等待来自被事务修改的区域的每个主要者的RECOVERY-VOTE消息。由于某些主要者可能从未接收到事务的日志记录,或者可能已经截断了事务的日志记录,因此如果协调器在超时之后未接收到投票,则协调器向被事务修改的区域的主要者发送针对事务的显式投票请求。REQUEST-VOTE(请求-投票)消息包括配置标识符、区域标识符和事务标识符。如果具有事务的日志记录的机器接收到这个消息,则它在重新复制日志记录之后发送投票。以这种方式,恢复过程避免了将从未接收到事务的日志记录的机器与已经截断日志记录的机器区分开。在第一种情况下,事务应当中止,并且在第二种情况下,事务可以已经被提交。为此,每个线程维持截断数据结构(被称为truncated_id(截断_ID)),以鉴于其标识符来确定事务是否已经被截断。事务数据结构可以通过使用在协调器消息上捎带的非截断事务标识符的下限来保持紧凑。如果事务已经被截断,则线程使用截断的投票进行应答。否则,它使用未知的投票进行应答。
现在给出关于提交/中止过程的更多细节。
一旦协调器从被事务修改的区域的每个主要者接收到RECOVERY-VOTE消息,在它接收到任何commit-primary投票的情况下或者在它接收到一个区域的commit-backup投票并且接收到所有其他区域的lock、commit-backup或truncate投票的情况下,它决定提交。否则它决定中止。然后取决于决定,它向所有参与者副本发送COMMIT-RECOVERY或ABORT-RECOVERY。这两个消息都包括配置标识符和事务标识符。接收这些消息的线程将COMMIT-RECOVERY与COMMIT-PRIMARY日志记录类似地对待(如果它们是主要者),并且与COMMIT-BACKUP日志记录类似地对待(如果它们是备份)。它们把接收ABORT-RECOVERY视为处理ABORT记录。协调器等待来自决定消息的所有参与者副本的确认,并且然后发送TRUNCATE-RECOVERY消息以截断事务的状态。
仅在主要者处理了COMMIT-PRIMARY日志记录或接收到COMMIT-RECOVERY消息之后,主要者提交和解锁由事务修改的对象。这确保了写入被暴露于其他事务的事务被保证最终提交给所有参与者。当事务提交时,所有参与者副本都具有LOCK、COMMIT-BACKUP或COMMIT-PRIMARY日志记录,或者它们已经截断了事务的记录。因此,如果事务被恢复,则决定将被提交。协调器发送给客户端的事务也是如此,因为这是在接收到来自NIC的指示COMMIT-PRIMARY记录写入日志的确认或者是接收到COMMIT-RECOVERY消息的确认消息之后完成的。
现在给出关于示例配置管理器314的更多细节。
分布式存储器被组织为通常为2GB的可配置大小的区域。区域是集群分配和故障恢复的单位。
区域到副本的分配和映射由在节点之一上运行的配置管理器(CM)处理。对于2GB的区域,预计在典型的服务器上最多可以有250个区域,因此单个CM可以处理数千个机器的分配。与使用一致的散列相比,这有几个优点。它使我们能够满足容错约束,诸如始终将副本放置在不同的故障域(例如,机架)中。它可以更轻松地跨服务器平衡负载并且接近容量地操作。
也更容易满足分配相同位置组中的对象的请求以及在故障之后重新映射区域时将它们保持在相同的位置组中。最后,在故障时重新映射可以使数据移动最小化地完成。
为了分配新的区域,节点联系CM,CM从单调增加的计数器分配区域标识符,并且然后为区域选择副本,以试图平衡分配给遭遇容量和(任何)位置组约束的每个机器的区域的数目。CM使用两阶段提交协议来分配区域,以确保映射在其使用之前在该区域的所有副本上被复制。它开始于向具有区域标识符的所选择的副本发送准备消息。如果它们都成功地分配了区域,则它发送区域的提交消息。节点在需要时从CM中获取丢失的区域映射。线程高速缓存映射以及访问主要者所需要的RDMA引用,并且因此能够在常见情况下使用单个单侧RDMA读取请求来读取对象。
CM还经由租赁管理和故障后的重新配置来处理故障检测。在节点上共同定位CM允许CM使用基于RDMA的协议。协商服务仅用于存储当前配置<I,S,CM>,其中i是唯一的,单调递增的64位配置标识符,S是配置中的节点集合,并且CM是配置管理器。协商节点提供仅在配置变化时被调用的服务,以便以原子方式更新配置的成员资格。
现在给出关于示例租赁方案的更多细节。
租赁可以用于检测故障。每个非CM节点在CM处保持租赁,并且CM在每个其他节点处保持租赁。任何租赁到期触发故障恢复。租赁经由三方握手被授予。每个机器向CM发送租赁请求,并且使用消息进行响应,该消息充当租赁许可和自己的租赁请求。
最后,机器使用租赁许可应答。在默认情况下,由于租赁极短,每四分之一的租赁到期期限尝试租赁更新,这是高可用性的关键。在负载较重的情况下,数据中心集群可以为60个机器的集群维持低于10毫秒的租赁,而不会产生误报。明显较大的集群可能需要两级分层结构,在最糟糕的情况下,这会使故障检测时间加倍。
在负载下实现短租赁需要若干优化。租赁消息使用RDMA,但是由于RDMA队列是共享的,因此它们可能由于锁定竞争和在NIC上的其他消息之后的深度排队而被延迟。对租赁管理的专用队列对是次优的,因为它大大增加了在CM处的队列对的数目,降低了NIC的性能。相反,协议使用RDMA的无连接不可靠数据报模式发送租赁消息,其中接收侧轮询的时延较低。
还必须及时地在CPU上调度租赁更新。恢复过程使用可以以最高用户空间优先级运行的专用租赁管理器线程。
现在给出关于示例配置变化协议的更多细节。
当由于租赁到期而怀疑机器发生故障时,重新配置由将称为CMnew的机器之一发起,其可以与当前CM相同。CMnew首先向系统中的所有机器发出RDMA读取,但是被怀疑的机器除外。
这些读取探测(之前提到过)检测影响若干机器的相关故障,例如电源和开关故障,这些故障全部由单个重新配置处理。CMnew在其获得大多数探测的响应的情况下将继续进行重新配置。这确保了如果网络被划分,则CM将不在较小的划分中。
在接收到对读取探测的应答之后,CMnew尝试将存储在协商服务(包括节点106)中的配置数据从<I,S,CMold>更新为<i+1,S0,CMnew>,其中S0是应答了探测的机器集合。如果当前配置标识符仍然是i,则协商服务实现成功的原子比较和交换。例如,协商服务可以使用znode序列号来实现以实现原子比较和交换。这确保了只有一个节点可以成为配置i+1的CM,因为可能有多个并行配置变化尝试。
只有在非CM节点怀疑CM故障的情况下,非CM节点才发起重新配置。它首先要求少量的“备份CM”之一进行变化(使用一致的散列的CM的k个继承者)。如果配置在超时时段之后没有改变,则它尝试重新配置自己。这种设计避免了在CM故障时对协商节点的大量的同时请求。然后,新CM重新分配先前映射到故障的机器的区域,以将副本的数目恢复到f+1(以便能够容忍每个副本组中的f个故障)。它试图平衡负载,并且保持遭遇空间约束的位置。对于故障的主要者,它总是将幸存的备份提升为新的主要者,以减少恢复时间。如果它检测到丢失它们的所有副本的区域或者没有空间来重新复制区域,则表示发生错误。在重新映射区域之后,CM向配置中的所有机器发送NEW-CONFIG消息,NEW-CONFIG消息具有配置标识符、它自己的标识符、配置中的其他机器的标识符、以及区域到机器的所有新映射。如果CM已经改变,则NEW-CONFIG也重置租赁协议:它向所有节点授予租赁,这些节点向新CM授予租赁,并且然后所有节点放弃来自先前配置的租赁。如果CM不变,则租赁交换在重新配置期间继续。对CM的外部客户端请求在怀疑故障与NEW-CONFIG-COMMIT之间以及在NEW-CONFIG与NEW-CONFIG-COMMIT之间的其他节点处被阻止。
图10示出了示例性的基于计算的设备1000的各种部件,基于计算的设备1000可以实现为任何形式的计算和/或电子设备并且其中可以实现数据中心集群的服务器的实施例。服务器可以经由互连1024连接到其他服务器集群1026。
基于计算的设备1000包括一个或多个处理器1002,其可以是微处理器、控制器、或者用于处理计算机可执行指令以控制设备的操作以从数据中心处的服务器集群的配置变化恢复使得在数据中心集群中执行的事务保持ACID属性并且还可以保持可串行性的任何其他合适类型的处理器。在一些示例中,例如,在使用片上系统架构的情况下,处理器1002可以包括一个或多个固定功能块(也称为加速器),其以硬件(而不是软件或固件)实现图4到9中的任何一个的方法的部分。图4到9中的任何一个的方法的部分也可以在网络接口1014中以硬件或软件来实现。包括操作系统1004的平台软件或任何其他合适的平台软件可以在基于计算的设备处提供,以使得协议1008(诸如恢复过程、配置协议和事务协议)能够在设备上执行。
计算机可执行指令可以使用由基于计算的设备1000可访问的任何计算机可读介质来提供。计算机可读介质可以包括例如计算机存储介质,诸如存储器1012和通信介质。诸如存储器1012等计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EPROM、DRAM、EEPROM、闪速存储器或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储装置、磁带盒、磁带、磁盘存储装置或其他磁性存储设备、或者可以用于存储用于由计算设备访问的信息的任何其他非传输介质。相反,通信介质可以在诸如载波等调制数据信号或其他传输机制中实施计算机可读指令、数据结构、程序模块或其他数据。如本文中定义的,计算机存储介质不包括通信介质。因此,计算机存储介质不应当被解释为传播信号本身。传播信号可以存在于计算机存储介质中,但是传播信号本身不是计算机存储介质的示例。尽管在基于计算的设备1000内示出了计算机存储介质(存储器1012),但是应当理解,存储装置可以是远程分布的或者定位的,并且可以经由网络或者其他通信链路(例如,使用网络接口1014)来访问。在一些情况下,基于计算的设备1000包括电池和固态驱动器(SSD)和DRAM,如参考图2所描述的。
基于计算的设备1000还包括输入/输出控制器1016,输入/输出控制器1016被布置为将显示信息输出到显示设备1018,显示设备1018可以与基于计算的设备1000分离或者集成到基于计算的设备1000。显示信息可以提供图形用户接口。输入/输出控制器1016还被布置为接收和处理来自诸如用户输入设备1020(例如,鼠标、键盘、相机、麦克风或其他传感器)等一个或多个设备的输入。在一些示例中,用户输入设备1020可以检测语音输入、用户姿势或其他用户动作,并且可以提供自然用户界面(NUI)。这个用户输入可以用于查看事务日志,控制恢复过程的参数,或者用于其他目的。在实施例中,如果显示设备1018是触敏显示设备,则显示设备1018还可以充当用户输入设备1020。输入/输出控制器1016还可以将数据输出到除了显示设备之外的设备,例如,本地连接的打印设备。
在示例中,在数据中心中的服务器集群处存在服务器,服务器包括:
存储器,作为集群的分布式存储器的部分;
至少一个处理器,对存储在分布式存储器的区域中的软件对象执行事务和无锁定读取,软件对象和事务的细节在分布式存储器中被复制,
处理器被布置为接收指示集群的新配置的消息,新配置包括其他服务器中的至少一个服务器的添加、去除或潜在故障;
处理器被配置为使用恢复过程,恢复过程使得无锁定读取和事务中的提交的事务能够跨配置变化保持原子性、一致性、隔离性和持久性的属性。
例如,处理器被配置为使用恢复过程,恢复过程跨配置变化支持提交的事务的可串行性。
例如,处理器被配置为使得对在服务器处接收的单侧读取请求的应答至少基于通过发送服务器与读取应答一起发送的配置标识符被拒绝。
例如,处理器被布置为接收包括新配置中的所有其他服务器的身份的细节的消息以及新配置中的所有服务器知道新配置中的所有服务器的身份的知识,使得对服务器的网络接口卡的单侧操作能够被执行同时保持无锁定读取和事务中的提交的事务的一致性属性。
在一些示例中,存储器包括使用以下中的任一项实现的非易失性存储器:动态随机存取存储器连同电池以及持久性储存器(如果服务器崩溃,则使用电池电力向其中写入DRAM的内容)、非易失性双列直插存储器模块、物理存储器。
在示例中,网络接口卡被配置为使用计时器来支持租赁,并且拒绝在租赁计时器到期而没有被更新之后到达的请求。
在示例中,存在一种在数据中心中的服务器集群中的服务器处执行的方法,该方法包括:
在处理器处执行对存储在服务器集群的分布式存储器的区域中的软件对象的事务和无锁定读取,软件对象和事务的日志在分布式存储器中被复制,
接收指示集群的新配置的消息,新配置包括服务器中的至少一个服务器的添加、去除或潜在故障;
使用恢复过程,恢复过程使得无锁定读取和事务中的提交的事务能够跨配置变化保持原子性、一致性、隔离性和持久性的属性。
例如,恢复过程包括用于恢复已经在新配置时提交的事务的写入锁定的锁定恢复过程,锁定恢复过程操作以从能够已经使用单侧写入被写入的复制的事务日志恢复写入锁定。
例如,恢复过程包括阻止受新配置影响的事务,直到锁定恢复过程完成。
例如,指示新配置的消息从集群中的服务器中的作为配置管理器的服务器来接收,配置管理器已经使用与集群通信的至少一个协商节点计算要在新配置中的服务器集合,协商节点被配置为决定集群中的服务器中的哪个服务器是配置管理器,配置管理器已经向新配置中的服务器发送计算的服务器集合。
例如,恢复过程包括投票过程,参与受新配置影响的事务的服务器通过投票过程向用作事务的协调器的服务器提交投票,投票用于决定提交还是中止事务。
例如,投票根据服务器处的日志的特性和在服务器处接收的消息来确定。
例如,恢复过程包括用于恢复要存储在作为由于新配置而形成的新的备份区域的区域中的数据的过程,该过程包括从保持要在新的备份区域中被复制的数据的主区域的单侧读取。
例如,恢复过程包括用于恢复用于分配对象的分配器的空闲列表的分配恢复过程,该分配恢复过程在锁定恢复过程之后发生。
例如,分配恢复过程包括扫描存储在服务器处的区域中的对象的对象头部。
在示例中,恢复过程被配置为使得事务能够继续读取对象并且在锁定恢复过程之后提交。
在示例中,恢复过程包括为日志记录预留空间以确保足够的资源可用于提交事务。
在示例中,恢复过程允许不受配置变化影响的事务与恢复过程同时读取对象并且提交。
在示例中,恢复过程跨配置变化支持提交的事务的严格的可串行性。
在示例中,事务具有唯一的标识符。
在示例中,数据中心集群包括:
经由网络连接的多个服务器;
分布式存储器,包括在服务器中的个体服务器处的本地存储器;
服务器被配置为对存储在分布式存储器的区域中的软件对象执行事务和无锁定读取,软件对象和事务的细节在分布式存储器中被复制,
服务器被配置为使用恢复过程,恢复过程使得无锁定读取和事务中的提交的事务能够跨配置变化保持原子性、一致性、隔离性和持久性的属性,配置变化包括其他服务器中的至少一个服务器的添加、去除或潜在故障。
本文中使用术语“计算机”或“基于计算的设备”指代具有处理能力使得其可以执行指令的任何设备。本领域技术人员将认识到,这样的处理能力被并入到很多不同的设备中,并且因此术语“计算机”和“基于计算的设备”每个包括PC、服务器、移动电话(包括智能手机)、平板计算机、机顶盒、媒体播放器、游戏机、个人数字助理和很多其他设备。
本文中描述的方法可以通过软件以在有形存储介质上的机器可读形式执行,例如,以包括计算机程序代码装置的计算机程序的形式,计算机程序代码装置适于当程序在计算机上运行时以及在计算机程序可以在计算机可读介质上实施的情况下执行本文中描述的任何方法的所有步骤。有形存储介质的示例包括计算机存储设备,其包括诸如磁盘、拇指驱动器、存储器等计算机可读介质,并且不包括传播信号。传播信号可以存在于有形存储介质中,但是传播信号本身不是有形存储介质的示例。软件可以适合在并行处理器或串行处理器上执行,使得方法步骤可以以任何合适的顺序或同时执行。
这承认软件可以是有价值的单独可交易的商品。它旨在涵盖在“非智能(dumb)”或标准硬件上运行或控制“非智能”或标准硬件以执行期望功能的软件。还旨在涵盖“描述”或定义如用于设计硅芯片或用于配置通用可编程芯片以执行期望功能的硬件配置的软件(诸如HDL(硬件描述语言)软件)。
本领域技术人员将认识到,用于存储程序指令的存储设备可以跨网络分布。例如,远程计算机可以存储被描述为软件的过程的示例。本地或终端计算机可以访问远程计算机并且下载部分或全部软件来运行程序。或者,本地计算机可以根据需要下载软件片段,或者在本地终端处执行一些软件指令,而在远程计算机(或计算机网络)处执行一些软件指令。本领域技术人员还将认识到,通过利用本领域技术人员已知的常规技术,可以通过诸如DSP、可编程逻辑阵列等专用电路来执行全部或部分软件指令。
如本领域技术人员将会明白的,本文中给出的任何范围或设备值可以被扩展或改变而不失去所寻求的效果。
虽然已经用对结构特征和/或方法动作特定的语言描述了主题,但是应当理解,在所附权利要求中限定的主题不一定限于上面描述的具体特征或动作。相反,上面描述的具体特征和行为被公开作为实现权利要求的示例形式。
应当理解,上述的益处和优点可以涉及一个实施例,或者可以涉及若干实施例。实施例不限于解决任何或全部所述问题的那些实施例或具有任何或所有所述益处和优点的那些实施例。将进一步理解,对“一个(an)”项目的引用是指这些项目中的一个或多个。
本文中描述的方法的步骤可以以任何合适的顺序执行,或者在适当的情况下同时执行。另外,个体块可以从任何方法中删除,而不脱离本文中描述的主题的精神和范围。上面描述的任何示例的各方面可以与所描述的任何其他示例的各方面组合以形成另外的示例而不失去所寻求的效果。
术语“包括(comprising)”在本文中用于表示包括所标识的方法框或元素,但是这样的框或元素不包括排他性列表,并且方法或装置可以包含附加的框或元素。
本文中使用术语“子集”来指代真子集,使得集合的子集并非包括集合的所有元素(即,集合中的至少一个元素从子集中丢失)。
应当理解,以上描述仅以示例的方式给出,并且本领域技术人员可以进行各种修改。以上说明、示例和数据提供了示例性实施例的结构和使用的完整描述。尽管以上已经以一定程度的特定性或者参考一个或多个个体实施例描述了各种实施例,但是本领域技术人员可以在不脱离本说明书的精神或范围的情况下对所公开的实施例进行多种改变。
Claims (15)
1.一种数据中心中的服务器集群处的服务器,所述服务器包括:
存储器,作为所述集群的分布式存储器的部分;
至少一个处理器,对存储在所述分布式存储器的区域中的软件对象执行事务和无锁定读取,所述软件对象和所述事务的细节在所述分布式存储器中被复制,
所述处理器被布置为接收指示所述集群的新配置的消息,所述新配置包括其他服务器中的至少一个服务器的添加、去除或潜在故障;
所述处理器被配置为使用恢复过程,所述恢复过程使得所述无锁定读取和所述事务中的提交的事务能够跨配置变化保持原子性、一致性、隔离性和持久性的属性。
2.根据权利要求1所述的服务器,其中所述处理器被配置为使得对在所述服务器处接收的单侧读取请求的应答至少基于与所述请求相关联的配置标识符被拒绝。
3.根据权利要求1或权利要求2所述的服务器,其中所述处理器被布置为接收包括所述新配置中的所有其他服务器的身份的细节以及所述新配置中的所有服务器知道所述新配置中的所有服务器的身份的知识的所述消息,使得对所述服务器的网络接口卡的单侧操作能够被执行同时保持所述无锁定读取和所述事务中的提交的事务的一致性的所述属性。
4.根据权利要求1所述的服务器,具有被配置为使用计时器来支持租赁并且拒绝在租赁计时器到期而没有被更新之后到达的请求的网络接口卡。
5.一种在数据中心中的服务器集群中的服务器处执行的方法,所述方法包括:
在处理器处对存储在所述服务器集群的分布式存储器的区域中的软件对象执行事务和无锁定读取,所述软件对象和所述事务的日志在所述分布式存储器中被复制,
接收指示所述集群的新配置的消息,所述新配置包括所述服务器中的至少一个服务器的添加、去除或潜在故障;
使用恢复过程,所述恢复过程使得所述无锁定读取和所述事务中的提交的事务能够跨配置变化保持原子性、一致性、隔离性和持久性的属性。
6.根据权利要求5所述的方法,其中所述恢复过程包括用于恢复已经在所述新配置的时间被提交的事务的写入锁定的锁定恢复过程,所述锁定恢复过程操作以从能够已经使用单侧写入被写入的复制的所述事务日志恢复所述写入锁定。
7.根据权利要求6所述的方法,其中所述恢复过程包括阻止受所述新配置影响的事务直到所述锁定恢复过程完成。
8.根据权利要求5到7中任一项所述的方法,其中指示所述新配置的所述消息从所述集群中的所述服务器中的作为配置管理器的服务器被接收,所述配置管理器已经使用与所述集群通信的至少一个协商节点计算要在所述新配置中的所述服务器的集合,所述协商节点被配置为决定所述集群中的所述服务器中的哪个服务器是所述配置管理器,所述配置管理器已经向所述新配置中的所述服务器发送计算的所述服务器的所述集合。
9.根据权利要求5到8中任一项所述的方法,其中所述恢复过程包括投票过程,参与受所述新配置影响的事务的服务器通过所述投票过程向用作所述事务的协调器的服务器提交投票,所述投票被用于决定提交还是中止所述事务。
10.根据权利要求9所述的方法,其中所述投票根据所述服务器处的日志的特性和在所述服务器处接收的消息被确定。
11.根据权利要求5到10中任一项所述的方法,其中所述恢复过程包括用于恢复要被存储在作为由于所述新配置而形成的新的备份区域的区域中的数据的过程,所述过程包括从保持要在所述新的备份区域中被复制的数据的主区域的单侧读取。
12.根据权利要求5所述的方法,其中所述恢复过程包括用于恢复用于分配对象的分配器的空闲列表的分配恢复过程,所述分配恢复过程在所述锁定恢复过程之后发生。
13.根据权利要求12所述的方法,其中所述分配恢复过程包括扫描存储在服务器处的区域中的对象的对象头部。
14.根据权利要求5到13中任一项所述的方法,其中所述恢复过程包括为日志记录预留空间以确保足够的资源可用于提交事务。
15.根据权利要求5到14中任一项所述的方法,其中所述恢复过程允许不受所述配置变化影响的事务与恢复过程同时地读取对象和提交。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562173670P | 2015-06-10 | 2015-06-10 | |
US62/173,670 | 2015-06-10 | ||
US14/804,000 | 2015-07-20 | ||
US14/804,000 US10678445B2 (en) | 2015-06-10 | 2015-07-20 | Recovery in data centers |
PCT/US2016/035949 WO2016200712A1 (en) | 2015-06-10 | 2016-06-06 | Recovery in data centers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107771321A true CN107771321A (zh) | 2018-03-06 |
CN107771321B CN107771321B (zh) | 2021-02-23 |
Family
ID=56194573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680033822.7A Active CN107771321B (zh) | 2015-06-10 | 2016-06-06 | 数据中心中的恢复 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10678445B2 (zh) |
EP (1) | EP3308275B1 (zh) |
CN (1) | CN107771321B (zh) |
WO (1) | WO2016200712A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111241011A (zh) * | 2019-12-31 | 2020-06-05 | 清华大学 | 一种分布式持久性内存的全局地址空间管理方法 |
CN112771501A (zh) * | 2018-08-17 | 2021-05-07 | 甲骨文国际公司 | 事务性处理系统的远程直接存储器操作(rdmo) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190495B (zh) | 2014-12-08 | 2024-07-26 | 安博科技有限公司 | 从远程网络区域进行内容检索的系统及方法 |
CN107251518B (zh) | 2015-01-06 | 2021-03-02 | 安博科技有限公司 | 用于中立应用程序编程接口的系统和方法 |
JP2018507639A (ja) | 2015-01-28 | 2018-03-15 | アンブラ テクノロジーズ リミテッドUmbra Technologies Ltd. | グローバル仮想ネットワークについてのシステム及び方法 |
WO2016162749A1 (en) | 2015-04-07 | 2016-10-13 | Umbra Technologies Ltd. | System and method for virtual interfaces and advanced smart routing in a global virtual network |
CN116366334A (zh) | 2015-06-11 | 2023-06-30 | 安博科技有限公司 | 用于网络挂毯多协议集成的系统和方法 |
ES2931177T3 (es) | 2015-12-11 | 2022-12-27 | Umbra Tech Ltd | Sistema y método para lanzamiento de información a través de un tapiz de red y granularidad de una marca |
WO2017100978A1 (zh) * | 2015-12-14 | 2017-06-22 | 华为技术有限公司 | 一种集群中锁管理的方法、锁服务器及客户端 |
CN109479068B (zh) | 2016-04-26 | 2021-09-28 | 安博科技有限公司 | 经由挂毯弹弓的网络弹射 |
US10769029B2 (en) * | 2016-11-18 | 2020-09-08 | International Business Machines Corporation | Accessing records of a backup file in a network storage |
US10432724B2 (en) | 2016-11-18 | 2019-10-01 | International Business Machines Corporation | Serializing access to data objects in a logical entity group in a network storage |
US10929174B2 (en) * | 2016-12-15 | 2021-02-23 | Ecole Polytechnique Federale De Lausanne (Epfl) | Atomic object reads for in-memory rack-scale computing |
CN106874118A (zh) * | 2017-02-17 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种资源锁的自动恢复系统及方法 |
JP6859755B2 (ja) * | 2017-03-02 | 2021-04-14 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム |
US10936576B2 (en) | 2017-03-08 | 2021-03-02 | Microsoft Technology Licensing, Llc | Replicating storage tables used to manage cloud-based resources to withstand storage account outage |
JP2020514935A (ja) * | 2017-03-15 | 2020-05-21 | ファウナ, インク.Fauna, Inc. | データベース用の方法及びシステム |
US10581968B2 (en) * | 2017-04-01 | 2020-03-03 | Intel Corporation | Multi-node storage operation |
US10931450B1 (en) * | 2018-04-27 | 2021-02-23 | Pure Storage, Inc. | Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers |
US10802972B2 (en) * | 2018-08-02 | 2020-10-13 | MemVerge, Inc | Distributed memory object apparatus and method enabling memory-speed data access for memory and storage semantics |
US11061609B2 (en) | 2018-08-02 | 2021-07-13 | MemVerge, Inc | Distributed memory object method and system enabling memory-speed data access in a distributed environment |
US11134055B2 (en) | 2018-08-02 | 2021-09-28 | Memverge, Inc. | Naming service in a distributed memory object architecture |
CN109388481B (zh) * | 2018-09-21 | 2021-08-17 | 网易(杭州)网络有限公司 | 一种事务信息的传输方法、系统、装置、计算设备和介质 |
TWI737189B (zh) * | 2019-02-23 | 2021-08-21 | 國立清華大學 | 易於從固態儲存裝置之故障中還原的方法、電腦系統,及固態儲存裝置 |
US11372818B2 (en) * | 2020-01-07 | 2022-06-28 | Samsung Electronics Co., Ltd. | Scaling performance for large scale replica sets for a strongly consistent distributed system |
US11271992B2 (en) * | 2020-01-22 | 2022-03-08 | EMC IP Holding Company LLC | Lazy lock queue reduction for cluster group changes |
CN111858629B (zh) * | 2020-07-02 | 2023-08-22 | 北京奥星贝斯科技有限公司 | 二阶段提交分布式事务更新数据库的实现方法和装置 |
US11733874B2 (en) * | 2021-05-03 | 2023-08-22 | EMC IP Holding Company LLC | Managing replication journal in a distributed replication system |
WO2024165160A1 (en) * | 2023-02-09 | 2024-08-15 | Huawei Technologies Co., Ltd. | Devices and methods for distributed memory transactions |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6014669A (en) * | 1997-10-01 | 2000-01-11 | Sun Microsystems, Inc. | Highly-available distributed cluster configuration database |
CN1426006A (zh) * | 2001-12-21 | 2003-06-25 | 鸿富锦精密工业(深圳)有限公司 | 分布式案件管理系统及其方法 |
US7203863B2 (en) * | 2003-05-09 | 2007-04-10 | Oracle International Corporation | Distributed transaction state management through application server clustering |
CN101273333A (zh) * | 2005-04-13 | 2008-09-24 | 普罗格雷斯软件公司 | 容错分布式锁定管理 |
US20110041006A1 (en) * | 2009-08-12 | 2011-02-17 | New Technology/Enterprise Limited | Distributed transaction processing |
CN102197389A (zh) * | 2008-10-24 | 2011-09-21 | 微软公司 | 分布式数据系统中的配置管理 |
US8676851B1 (en) * | 2012-08-30 | 2014-03-18 | Google Inc. | Executing transactions in distributed storage systems |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7415466B2 (en) | 1996-03-19 | 2008-08-19 | Oracle International Corporation | Parallel transaction recovery |
US6247023B1 (en) * | 1998-07-21 | 2001-06-12 | Internationl Business Machines Corp. | Method for providing database recovery across multiple nodes |
US6243715B1 (en) * | 1998-11-09 | 2001-06-05 | Lucent Technologies Inc. | Replicated database synchronization method whereby primary database is selected queries to secondary databases are referred to primary database, primary database is updated, then secondary databases are updated |
US6952741B1 (en) * | 1999-06-30 | 2005-10-04 | Computer Sciences Corporation | System and method for synchronizing copies of data in a computer system |
US7188344B1 (en) * | 1999-12-21 | 2007-03-06 | Unisys Corporation | Architecture for a read/write thread lock |
US7752130B2 (en) * | 2001-05-31 | 2010-07-06 | Oracle America, Inc. | Methods and systems for delivery of information upon enrollment in an internet bill presentment and payment environment |
US8688780B2 (en) * | 2005-09-30 | 2014-04-01 | Rockwell Automation Technologies, Inc. | Peer-to-peer exchange of data resources in a control system |
US7647296B2 (en) * | 2006-03-15 | 2010-01-12 | International Business Machines Corporation | Method for estimating a first access time of transactions accessing a database object |
WO2009104657A1 (ja) * | 2008-02-21 | 2009-08-27 | 株式会社 日立メディコ | 超音波診断装置、超音波画像処理方法及び超音波画像処理プログラム |
US8650155B2 (en) | 2008-02-26 | 2014-02-11 | Oracle International Corporation | Apparatus and method for log based replication of distributed transactions using globally acknowledged commits |
US7962458B2 (en) * | 2008-06-12 | 2011-06-14 | Gravic, Inc. | Method for replicating explicit locks in a data replication engine |
US20100057740A1 (en) * | 2008-08-26 | 2010-03-04 | Yang Ni | Accelerating a quiescence process of transactional memory |
US9582222B2 (en) | 2009-04-30 | 2017-02-28 | Western Digital Technologies, Inc. | Pre-cache similarity-based delta compression for use in a data storage system |
ES2584102T3 (es) | 2011-11-18 | 2016-09-23 | Universidad Politécnica de Madrid | Sistema y método para procesamiento transaccional de baja contención y descentralizado altamente escalable |
US9471622B2 (en) * | 2012-04-30 | 2016-10-18 | International Business Machines Corporation | SCM-conscious transactional key-value store |
KR20140047230A (ko) | 2012-10-10 | 2014-04-22 | (주)티베로 | 분산 시스템에서 분산 트랜잭션의 최적화를 위한 방법 및 트랜잭션을 최적화한 분산 시스템 |
US9071644B2 (en) * | 2012-12-06 | 2015-06-30 | International Business Machines Corporation | Automated security policy enforcement and auditing |
US8977594B2 (en) * | 2012-12-21 | 2015-03-10 | Zetta Inc. | Systems and methods for state consistent replication |
US9298788B1 (en) * | 2013-03-11 | 2016-03-29 | DataTorrent, Inc. | Checkpointing in distributed streaming platform for real-time applications |
US9674249B1 (en) * | 2013-03-11 | 2017-06-06 | DataTorrent, Inc. | Distributed streaming platform for real-time applications |
US9519551B2 (en) * | 2013-03-28 | 2016-12-13 | Microsoft Technology Licensing, Llc | Recovery processing for database in persistent system |
-
2015
- 2015-07-20 US US14/804,000 patent/US10678445B2/en active Active
-
2016
- 2016-06-06 WO PCT/US2016/035949 patent/WO2016200712A1/en active Search and Examination
- 2016-06-06 EP EP16731710.6A patent/EP3308275B1/en active Active
- 2016-06-06 CN CN201680033822.7A patent/CN107771321B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6014669A (en) * | 1997-10-01 | 2000-01-11 | Sun Microsystems, Inc. | Highly-available distributed cluster configuration database |
CN1426006A (zh) * | 2001-12-21 | 2003-06-25 | 鸿富锦精密工业(深圳)有限公司 | 分布式案件管理系统及其方法 |
US7203863B2 (en) * | 2003-05-09 | 2007-04-10 | Oracle International Corporation | Distributed transaction state management through application server clustering |
CN101273333A (zh) * | 2005-04-13 | 2008-09-24 | 普罗格雷斯软件公司 | 容错分布式锁定管理 |
CN102197389A (zh) * | 2008-10-24 | 2011-09-21 | 微软公司 | 分布式数据系统中的配置管理 |
US20110041006A1 (en) * | 2009-08-12 | 2011-02-17 | New Technology/Enterprise Limited | Distributed transaction processing |
US8676851B1 (en) * | 2012-08-30 | 2014-03-18 | Google Inc. | Executing transactions in distributed storage systems |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112771501A (zh) * | 2018-08-17 | 2021-05-07 | 甲骨文国际公司 | 事务性处理系统的远程直接存储器操作(rdmo) |
CN111241011A (zh) * | 2019-12-31 | 2020-06-05 | 清华大学 | 一种分布式持久性内存的全局地址空间管理方法 |
CN111241011B (zh) * | 2019-12-31 | 2022-04-15 | 清华大学 | 一种分布式持久性内存的全局地址空间管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107771321B (zh) | 2021-02-23 |
EP3308275A1 (en) | 2018-04-18 |
WO2016200712A1 (en) | 2016-12-15 |
US10678445B2 (en) | 2020-06-09 |
US20160364158A1 (en) | 2016-12-15 |
EP3308275B1 (en) | 2019-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107771321A (zh) | 数据中心中的恢复 | |
CN107077382B (zh) | 在多租户应用服务器环境中进行事务恢复的系统和方法 | |
US10360113B2 (en) | Transaction recovery in a transaction processing computer system employing multiple transaction managers | |
JP3504763B2 (ja) | 分散システムに使用されるクライアント,サーバ及び記憶装置並びに分散システムにおける資源管理用サーバの復旧方法 | |
US7870230B2 (en) | Policy-based cluster quorum determination | |
CN100478902C (zh) | 地理分布式集群 | |
CN104094228B (zh) | 用于支持基于二阶段提交调用的严格定序的事务恢复的系统和方法 | |
WO2018103318A1 (zh) | 分布式事务处理方法和系统 | |
US7239605B2 (en) | Item and method for performing a cluster topology self-healing process in a distributed data system cluster | |
US6442552B1 (en) | Method and apparatus for implementing three tier client asynchronous transparency | |
US20040254984A1 (en) | System and method for coordinating cluster serviceability updates over distributed consensus within a distributed data system cluster | |
CN110807064B (zh) | Rac分布式数据库集群系统中的数据恢复装置 | |
US20090113034A1 (en) | Method And System For Clustering | |
US10366106B2 (en) | Quorum-based replication of data records | |
CN106484565B (zh) | 多数据中心间的数据同步方法及相关设备 | |
CN109783204A (zh) | 一种分布式事务处理方法、装置及存储介质 | |
WO2022048357A1 (zh) | 交易背书方法、装置及存储介质 | |
JP4201447B2 (ja) | 分散処理システム | |
CN110830582B (zh) | 一种基于服务器集群选主方法和装置 | |
CN105183544A (zh) | 一种非阻塞式容错的分布式事务提交方法及系统 | |
CN107038192A (zh) | 数据库容灾方法和装置 | |
US6842763B2 (en) | Method and apparatus for improving message availability in a subsystem which supports shared message queues | |
US20080250421A1 (en) | Data Processing System And Method | |
CN110659303A (zh) | 一种数据库节点的读写控制方法及装置 | |
JP2023541298A (ja) | トランザクション処理方法、システム、装置、機器、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |