CN110402435B - 具有松散耦合节点的多主数据库中的单调交易 - Google Patents
具有松散耦合节点的多主数据库中的单调交易 Download PDFInfo
- Publication number
- CN110402435B CN110402435B CN201780088341.0A CN201780088341A CN110402435B CN 110402435 B CN110402435 B CN 110402435B CN 201780088341 A CN201780088341 A CN 201780088341A CN 110402435 B CN110402435 B CN 110402435B
- Authority
- CN
- China
- Prior art keywords
- node
- transaction
- write
- read
- nodes
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
Abstract
一个实施例用于在具有松散耦合节点的多主数据库中提供单调事务,包括由处理器执行写入事务协议(610),包括:客户端设备在任何节点处发出写入事务,在发出写入事务的节点处本地记录写入事务,并将写入事务异步复制到至少一个其他节点,并在返回响应到客户端设备之前等待从至少一个法定个数的节点接收确认。法定个数是包含特殊节点和至少一个其他节点的任何节点集(620)。
Description
背景技术
在线事务处理(OLTP)应用程序用于提供ACID(高原子性、一致性、隔离性和持久性)一致性属性的数据库,但是越来越多地工作在松散耦合的“AP”(可用性、分区容差)设置中,其中一致性保证并不强大。特别是,当事务插入行和提交时,应用程序需要三个返回之一:a)事务成功,b)事务回滚(例如,约束违规),c)事务状态未知(通常由于驱动程序或连接错误,应用程序可以发出查询以检查状态)。但是在任何情况下,在提交之后,在传统的ACID数据库管理系统(DBMS)中,后续读取看到相同的答案a(即,单调行为)。如果一个查询看到插入的行,那么后续查询也将一致地看到那些插入的行(对于返回c),应用程序必须发出读取以查找状态)。
在AP环境中(例如,具有许多NoSQL(非结构化查询语言)的DBMS),存在第四个返回,指的是有问题的返回状态:d)交易状态可能尚未结算。当运行事务的节点(其中节点是客户端设备、服务器或对等设备)已将更改/插入(作为日志消息)发送到其他副本但未听到来自它们的确认(指示他们收到或接受了这些变化),这种返回就会发生。在此状态下,后续查询会看到不可预测的行为。第一个查询可能找不到那些行—因为它们尚未复制到足够数量的副本(根据法定个数(quorum)策略)。但是稍后的查询可能会找到这些行。
发明内容
实施例涉及用于在具有松散耦合的节点的多主数据库中进行复制的法定个数处理。一个实施例提供了一种用于具有松散耦合节点的多主数据库中的单调事务的方法,包括由处理器执行写入事务协议,包括:客户端设备在任何节点处发出写入事务;在发出写入事务的节点本地记录写入事务,并将写入事务异步复制到至少一个其他节点,并向客户端设备返回响应之前等待从至少法定个数节点接收确认。法定个数是包含特殊节点和至少一个其他节点的任何节点集。
参考以下描述,所附权利要求和附图,将理解本发明的这些和其他特征,方面和优点。
附图说明
现在将参考附图通过示例的方式描述本发明的实施例,附图中:
图1描绘了根据一个实施例的云计算环境;
图2描绘了根据一个实施例的一组抽象模型层;
图3是根据一个实施例的用于有效表示、访问和修改可变长度数据对象的网络架构;
图4示出了根据一个实施例的可以与图1的服务器和/或客户端相关联的代表性硬件环境;
图5是示出根据一个实施例的用于在具有松散耦合的节点的多主数据库中进行复制的法定个数处理的系统的框图;和
图6示出了根据一个实施例的用于具有松散耦合节点的多主数据库中的单调事务的过程的框图。
具体实施方式
已经出于说明的目的给出了各种实施例的描述,但是并不旨在穷举或限制于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。选择这里使用的术语是为了最好地解释实施例的原理,实际应用或对市场中发现的技术的技术改进,或者使本领域其他技术人员能够理解本文公开的实施例。
首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。
一个或多个实施例提供用于在具有松散耦合的节点的多主数据库中进行复制的法定个数处理。一个实施例提供了一种用于具有松散耦合节点的多主数据库中的单调事务的方法,包括由处理器执行写入事务协议,包括:客户端设备在任何节点处发出写入事务;在发出写入事务的节点本地记录写入事务,并将写入事务异步复制到至少一个其他节点,并向客户端设备返回响应之前等待从至少法定个数节点接收确认。法定个数是包含特殊节点和至少一个其他节点的任何节点集。
云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机(VM)和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
特征包括:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃客户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,因此为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用的能力。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源的能力。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
现在参考图1,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(PDA)或移动电话54A,台式电脑54B、笔记本电脑54C和/或汽车计算机系统54N。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图2显示的各类计算设备54A-N仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。
现在参考图2,其中显示了云计算环境50(图1)提供的一组功能抽象层。首先应当理解,图2所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图2所示,提供下列层和对应功能:
硬件和软件层60包括硬件和软件组件。硬件组件的例子包括:主机61;基于RISC(精简指令集计算机)体系结构的服务器62;服务器63;刀片服务器64;存储设备65;网络和网络组件66。软件组件的例子包括:网络应用服务器软件67以及数据库软件68。
虚拟层70提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器71、虚拟存储72、虚拟网络73(包括虚拟私有网络)、虚拟应用和操作系统74,以及虚拟客户端75。
在一个示例中,管理层80可以提供下述功能:资源供应功能81:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能82:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能83:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能85:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层90提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航91;软件开发及生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95;以及用于在具有松散耦合节点96的多主数据库中复制的法定个数处理。如上所述,关于图2描述的所有前述示例仅是说明性的,并且本发明不限于这些示例。
应当理解,如本文所述的一个或多个实施例的所有功能通常可以由处理系统300(图3)或自治云环境410(图4)执行,其可以有形地体现为硬件处理器并且与程序代码模块。但是,非实时处理不一定是这种情况。而是,对于非实时处理,可以通过图2中所示的层60、70、、80和90中的任何层来执行/实现和/或启用本文所述的功能。
重申的是,尽管本公开包括关于云计算的详细描述,但是本文所述的教导的实现不限于云计算环境。相反,本发明的实施例可以用现在已知或以后开发的任何类型的集群计算环境来实现。
图3示出了根据一个实施例的网络架构300。如图3所示,提供了多个远程网络302,包括第一远程网络304和第二远程网络306。网关301可以耦合在远程网络302和邻近网络308之间。在目前的网络架构300的上下文中,网络304、306可以各自采用任何形式,包括但不限于LAN、WAN、诸如因特网、公共交换电话网(PSTN)、内部电话网等。
在使用中,网关301用作从远程网络302到邻近网络308的入口点。这样,网关301可以用作路由器,其能够引导到达网关301和交换机的给定数据分组,该交换机为给定分组提供进出网关301的实际路径。
还包括耦合到邻近网络308的至少一个数据服务器314,其可经由网关301从远程网络302访问。应当注意,数据服务器314可包括任何类型的计算设备/群件。多个用户设备316耦合到每个数据服务器314。这样的用户设备316可以包括台式计算机、膝上型计算机、手持式计算机、打印机和/或任何其他类型的包含逻辑的设备。应当注意,在一些实施例中,用户设备311也可以直接耦合到任何网络。
外围设备320或一系列外围设备320(例如,传真机、打印机、扫描仪、硬盘驱动器、联网和/或本地存储单元或系统等)可以耦合到网络304、306、308中的一个或多个,应当注意,数据库和/或附加组件可以与耦合到网络304、306、308的任何类型的网络元件一起使用或集成到其中。在本说明书的上下文中,网络元件可以指网络的任何组件。
根据一些方法,本文描述的方法和系统可以与虚拟系统和/或系统一起和/或在虚拟系统和/或系统之上实现,虚拟系统和/或系统模拟一个或多个其他系统,例如模拟IBMz/OS环境的UNIX系统、虚拟地托管MICROSOFTWINDOWS环境的UNIX系统、模拟IBM z/OS环境的MICROSOFTWINDOWS系统等。在一些实施例中,可以通过使用VMWARE软件来实现该虚拟化和/或仿真。
图4示出了根据一个实施例的与图3的用户设备316和/或服务器314相关联的代表性硬件系统400环境。在一个示例中,硬件配置包括具有中央处理单元410的工作站,例如微处理器,以及通过系统总线412互连的多个其他单元。图4中所示的工作站可以包括随机存取存储器(RAM)414、只读存储器(ROM)416、用于将诸如磁盘存储单元420的外围设备连接到总线412的I/O适配器418、用于连接键盘424,鼠标426,扬声器428、麦克风432和/或其他用户接口设备,例如触摸屏、数码相机(未示出)等到总线412、用于将工作站连接到通信网络435(例如,数据处理网络)的通信适配器434和用于将总线412连接到显示设备438的显示适配器436的用户接口适配器422。
在一个示例中,工作站可以在其上驻留有操作系统,诸如MICROSOFTWINDOWS操作系统(OS)、MAC OS、UNIX OS等。在一个实施例中,系统400采用基于POSIX的文件系统。应当理解,其他示例也可以在除了所提到的平台和操作系统之外的平台和操作系统上实现。这样的其他示例可以包括使用JAVA、XML、C和/或C++语言或其他编程语言以及面向对象的编程方法编写的操作系统。还可以使用面向对象编程(OOP),其已经越来越多地用于开发复杂的应用程序。
在传统的复制数据库中,数据对象具有存在于多个位置的副本。这些数据库为应用程序提供的重要一致性保证是单调读取。写入操作(通常也称为事务)以原子方式修改数据库状态,并且所有后续读取(查询)要么看到操作的修改(在这种情况下操作被称为成功或提交),要么看不到操作的修改(在这种情况下,操作被称为已经回滚)。在传统的复制数据库中,这种保证是通过基于法定个数的副本控制协议实现的,该协议具有同步的阻塞写入。具体而言,为复制数据项的每个副本分配一个投票。然后,每个操作必须分别获得读取法定个数(Tr)或写入法定个数(Tw)以读取或写入数据项。如果给定数据项总共有T票,则法定个数必须遵守以下规则:
1.Tr+Tw>T
2.Tw>T/2
写入操作必须等待,直到来自该写入的修改已复制到写入法定个数的副本,并且必须通过等待确认来验证。此外,如果此等待进程失败或超时,则必须回滚写入。这通常通过两阶段提交协议来实现。因此,这些规则确保两个写入法定个数的节点始终具有公共节点,并且任何读取法定个数节点包含至少一个具有最新版本数据项的站点。因此,或者写入成功或者以原子方式回滚,并且所有后续读取都会看到数据库的一致图像。在这种一致的系统中,还存在第三种可能的返回情况:写入操作状态未知。例如,当数据库和应用程序之间的连接失败,或者等待数据库响应时应用程序超时时,就会发生这种情况。但是,即使在这种情况下,应用程序也可以在数据库中查询写入操作的状态-而该查询(所有后续查询)将看到一致的答案。这种方法的缺点是它需要一个紧密连接的系统,其中节点可用且响应迅速。例如,一旦两阶段提交协议开始,如果启动器节点变得无响应,则系统不可用于后续读取。
与具有三种返回情况(即,成功,具有回滚和未知的故障)的一致系统不同,在最终一致性系统中,应用程序最终获得单调读取,但是在写入完成之后有一段时间读取可能看到不一致的答案。通过写入操作修改数据库状态时,返回状态为成功且未知。在最后一种情况下,随后的读取得到不同的答案。如果读取到已复制修改的其中一个节点,则读取将看到修改,稍后读取(转到另一个节点)可能看不到修改;然后另一个读取看到修改。但最终的一致性系统具有高可用性。写入可以发生在任何节点(“多主”);异步复制到其他节点;并且系统可以容忍一些节点的故障。
多主复制(或对等n路复制)是数据库复制的方法,其提供由一组计算机存储的数据,并由该组的任何成员更新。对单个主站点所做的更新将传播到所有其他主站点。多主复制提供了所有数据库表副本数据的融合,并提供全局事务一致性和数据完整性。冲突解决在每个主节点处独立处理。多主复制为每个主节点上的每个复制数据库表提供完整的副本。所有成员都对客户数据查询做出响应。多主复制系统负责将每个成员所做的数据修改传播到组的其余部分,并解决由不同成员进行的并发更改之间可能出现的任何冲突。多主复制可提供更高的可用性和更快的服务器响应时间。
在传统的ACIDDBMS中,原子性、一致性、隔离和耐久性的四种状态提供以下内容。对于原子性,数据库修改事务(即原子事务)必须遵循“全有或全无”规则。如果事务的一部分失败,则整个事务失败。为保持一致性,只有有效数据才会写入数据库。如果执行的事务违反了数据库的一致性规则,则将回滚整个事务,并且数据库将恢复到与这些规则一致的状态。如果事务成功执行,它将使数据库从一个与规则一致的状态转到另一个与规则一致的状态。对于隔离,同时发生的多个事务不会影响彼此的执行。对于针对数据库的两个同时发布的事务,两个事务以隔离的方式在数据库上操作。数据库在执行另一个完整的事务之前执行一个完整的事务,反之亦然。这可以防止一个事务读取作为另一个事务的一部分的副作用产生的中间数据,该另一个事务最终不会提交给数据库。隔离属性不能确保首先执行哪个事务,但它们不会相互干扰。对于持久性,任何提交到数据库的事务都不会丢失。持久性使用备份和事务日志,无论后续故障(例如,软件或硬件故障)如何,都有助于恢复已提交的事务。
图5是示出根据一个实施例的用于在具有松散耦合的节点的多主数据库中进行复制的法定个数处理的系统500的框图。在一个实施例中,系统500包括客户端设备510(例如,移动设备、智能设备、计算系统等)、云或资源共享环境520、以及服务器530。在一个实施例中,通过云或资源共享环境520向客户端设备提供来自服务器530的云服务。在一个实施例中,系统500是多主数据库系统,其提供使用共识协议选择一个节点作为特殊节点(或领导节点)。共识是在一组参与者之间就一个结果达成一致的过程。在一个实施例中,在系统500中,对于写入法定个数,特殊节点和至少一个非特殊(或非领导)节点必须是任何写入法定数的一部分。对于读取法定个数,特殊节点和至少一个非特殊节点必须是任何读取法定个数的一部分。请注意,写入法定个数和读取法定个数都可能要求其他节点成为参与者,具体取决于持久性要求。在提交事务之后,启动器节点在返回成功结果通知之前等待将该事务的日志复制到节点的写入法定个数的节点(并接收确认(ack))。启动器节点在等待确认时永远不会超时。应用程序可能超时,在这种情况下,返回状态是事务状态是未知。
在一个实施例中,在系统500中,写入(事务)可以到达任何节点。在一个实施例中,系统500采用法定个数读取法定个数写入协议,其中读取仅查看在法定个数的节点上可见的数据,并且法定个数是一组或多组节点。在一个示例实施例中,法定个数是具有至少大多数节点的任何集合。系统500维护选定的特殊节点,并使用写入协议和写入法定个数,其中:写入等待直到它们被从至少写入法定个数的节点的确认(写入被复制)通知,写入操作永远不会超时,并且任何读取法定个数和任何写入法定个数总是包含一个特殊节点和至少一个其他节点。
在一个或多个实施例中,应该注意,特殊节点可能在任何时间失败并且可能必须选择新的特殊节点。这就是为什么仅限特殊的法定个数不起作用的原因。当选择一个新的特殊节点时,可以保证任何成功的事务(如果提交返回成功或者返回状态为事务状态未知,则事务成功,并且后续查询看到事务的修改)使各自的更改传播到前一个特殊节点加上至少一个其他节点。即使先前的特殊节点现在没有响应,另一个节点也可用于恢复所有成功的事务。
在一个实施例中,在系统500中,写入协议包括系统500可以:1)在任何节点发出写入;2)在本地(在该节点)记录写入并异步复制到其他节点;3)等待直到从至少法定个数的节点收到确认收据;4)客户端设备510可以在3)期间超时,然后通过发出读取找出写入状态。
在一个实施例中,在系统500中,读取协议包括系统500可以:1)在任何节点发出读取;2)只读返回已知复制了至少法定个数节点的行;3)如果由于特殊节点没有响应而在2)读取超时,则系统500通过共识协议选择新的特殊节点,并继续2)。
在一个示例实施例中,系统500:1)在节点A(其被选为特殊节点)发出写入,其中系统500具有其他节点B、C、D和E;2)客户端设备510超时并在任何节点(例如节点C)发出读取。在该示例中,在系统500中,只读返回在A和另一个节点处可见的行。如果节点C已收到1)中的写入,则读取将看到写入。否则,节点C等待接收来自节点A、B、D和/或节点E的通知。如果节点C被通知节点A并且节点B、C、D和E中的至少一个已经接收到写入,那么读看到了写入。如果进程超时等待节点A并且节点B、C、D和E都没有接收到写入,则选择新的特殊节点。原始写入丢失了。否则,写入始终对此读取和后续读取可见。
在一个实施例中,加权方案可以由系统500实现如下。假设有三个节点。特殊节点的权重可以为0.9。另外两个节点的权重分别为0.3。在一个实施例中,法定个数的阈值是权重之和必须≥1.2,这是特殊节点加上另一个节点。应该注意,也可以相应地使用其他加权方案。
一个或多个实施例提供以下益处:即使在网络可能被分区或节点可能失败的松散耦合环境中,事务也能够提交;事务可以提交给任何节点,而不仅仅是领导节点;即使事务的返回状态未知,应用程序仍然具有单调读取。读取法定个数涉及一个特殊节点,因此永远不会出现一个读取错过插入的行并且后续读取找到它们的情况。
图6示出了根据一个实施例的用于具有松散耦合的节点的多主数据库中的单调事务的过程600的框图。在块610中,过程600由处理器(例如,图1的云计算环境50中的处理器、图3的系统300、图4的系统400、图5的系统500)执行写入事务协议。在框620中,过程600继续执行写入事务协议,其包括:客户端设备在任何节点(例如,客户端设备510、服务器530或云计算环境50中的任何其他对等设备、系统300、系统400或系统500)处发出写入事务,在发出写入事务的节点本地记录(修改)写入事务,并且将写入事务异步复制到至少一个其他节点,并在向客户端设备返回响应之前等待从至少一个法定数量的节点接收确认。在一个实施例中,法定个数是包括特殊节点和至少一个其他节点(以及可选地其他节点)的任何节点集。
过程600可以进一步包括由处理器执行读取事务协议,该读取事务协议包括:在任何节点处发出读取事务,尝试返回已知由至少法定个数的节点复制的行,以及用于尝试返回超时的、基于特殊节点无响应的、已知的由至少法定个数的节点复制的行:选择新的特殊节点,并重复尝试返回已知由至少法定个数的节点复制的行。
在一个实施例中,过程600可以进一步在确定客户端设备在等待从多主数据库接收确认期间超时时,客户端设备通过发出至少一个读取事务来获得写入事务的状态。然后客户端设备等待对该读取事务的响应;并且在该等待超过超时阈值时,客户端设备重复以重试读取事务。在一个实施例中,在过程600中,特殊节点的选择包括选举。
在一个实施例中,过程600包括特殊节点是任何节点,并且选举由处理器使用共识协议来执行。在一个实施例中,在过程600中,在确定至少一个读取事务的超时时,客户端设备重复至少一个读取事务。
在一个实施例中,对于过程600,处理器在特殊节点的事务失败或不响应时执行新特殊节点的选择。
在一个实施例中,过程600可以包括法定个数还包括基于耐久性要求选择的多个其他节点。过程600还可以包括将权重分配给包括特殊节点的节点。对于过程600,分配给特殊节点的权重超过分配给剩余节点的权重,并且法定个数投票可以基于投票节点权重的总和等于或大于法定个数阈值。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子、磁、光、电磁、红外或半导体系统,装置或设备,或者前述的任何合适的组合。计算机可读存储介质的更具体示例(非详尽列表)将包括以下内容:具有一条或多条电线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光学存储设备、磁存储设备或任何上述的适当组合。在本文件的上下文中,计算机可读存储介质可以是任何有形介质,其可以包含或存储程序以供指令执行系统、装置或设备使用或与其结合使用。
计算机可读信号介质可包括传播的数据信号,其中包含计算机可读程序代码,例如,在基带中或作为载波的一部分。这种传播信号可以采用多种形式中的任何一种,包括但不限于电磁、光学或其任何合适的组合。计算机可读信号介质可以是任何计算机可读介质,其不是计算机可读存储介质并且可以通信、传播或传输程序以供指令执行系统、装置或设备使用或与其结合使用。
计算机可读介质上包含的程序代码可以使用任何适当的介质传输,包括但不限于无线、有线、光纤电缆、RF等,或者前述的任何合适的组合。
用于执行本发明的各方面的操作的计算机程序代码可以用一种或多种编程语言的任何组合来编写,包括诸如Java、Smalltalk、C++等的面向对象的编程语言和传统的过程编程语言,例如“C”编程语言或类似的编程语言。程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立的软件包、部分在用户的计算机上,部分在远程计算机上或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络,包括局域网(LAN)或广域网(WAN),连接到用户的计算机,或者可以连接到外部计算机(用于例如,通过互联网使用互联网服务提供商)。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。
这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
这些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以指示计算机、其他可编程数据处理装置或其他设备以特定方式起作用,使得存储在计算机可读介质中的指令产生包括实现流程图和/或框图块中指定的功能/动作的指令的制品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的流程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除非明确说明,否则权利要求中对单数形式的元件的引用不旨在表示“一个且仅一个”,而是“一个或多个”上述示例性元件的所有结构和功能等同物。本领域普通技术人员已知的或者后来为本领域普通技术人员所知的实施例旨在包含在本发明的权利要求中。本文中的任何权利要求都不应根据35U.S.C第112条第6款的规定来解释。除非使用短语“用于…的装置”或“用于…的步骤”明确叙述该元素。
这里使用的术语仅用于描述特定实施例的目的,并不意图限制本发明。如这里所使用的,单数形式“一”,“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除存在或者添加一个或多个其他特征、整数、步骤、操作、元件,组件和/或其组。
以下权利要求中的所有装置或步骤加功能元件的对应的结构、材料、动作和等同物旨在包括用于合执行结合如具体要求保护的其他要求保护的元件相结功能的任何结构、材料或动作。已经出于说明和描述的目的给出了对本发明的描述,但是并不旨在穷举或将本发明限于所公开的形式。在不脱离本发明的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释本发明的原理和实际应用,并且使本领域普通技术人员能够理解本发明的各种实施例,其具有适合于预期的特定用途的各种修改。
Claims (21)
1.一种用于具有松散耦合节点的多主数据库中的单调事务的方法,包括:
由处理器基于共识协议从所述节点选择特殊节点;以及
由处理器执行写入事务协议,包括:
客户端设备在任何节点上发出写入事务;
在发出写入事务的启动器节点本地记录写入事务,并将所述写入事务异步复制到至少一个其他节点;以及
在向所述客户端设备返回响应之前等待从至少写入法定个数的节点接收确认,其中所述写入法定个数是包括特殊节点和至少一个其他节点的任何节点集,并且,在用于存储来自向所述多主数据库的写入事务的数据的提交事务之后,所述启动器节点等待接收对所述提交事务的确认而永远没有超时,并且在返回对于提交事务的成功结果通知之前等待将事务日志复制到所述写入法定个数的节点,以提供节点的数据一致性。
2.如权利要求1所述的方法,还包括:
由所述处理器执行读取事务协议,包括:
在任何节点上发出读取事务;
尝试返回已知由至少读取法定个数的节点复制的行;以及
基于特殊节点无响应,用于超时尝试返回已知由至少所述读取法定个数的节点复制的行:
选择一个新的特殊节点;以及
重复尝试返回已知由至少所述读取法定个数的节点复制的行。
3.如权利要求1所述的方法,其中,在确定客户端设备在等待从所述多主数据库接收到确认期间超时时,所述客户端设备通过发出至少一个读取事务来获得所述写入事务的状态。
4.如权利要求3所述的方法,还包括:
在确定所述至少一个读取事务的超时时,由所述客户端设备重复所述至少一个读取事务。
5.如权利要求2所述的方法,其中所述选择所述新的特殊节点由所述处理器在所述特殊节点的事务失败或不响应时执行。
6.如权利要求2所述的方法,其中所述写入法定个数和所述读取法定个数中的每一个还包括基于耐久性要求选择的多个其他节点。
7.如权利要求2所述的方法,还包括:
为包括特殊节点的所述节点分配权重,
其中,分配给所述特殊节点的权重超过分配给剩余节点的权重,并且写入法定个数投票基于投票节点权重的第一总和等于或大于写入法定个数阈值,读取法定个数投票基于投票节点权重的第二总和等于或大于读取法定个数阈值。
8.一种计算机可读存储介质,该计算机可读存储介质具有与其一起实现的程序指令,该程序指令可由处理器执行以使处理器:
基于共识协议从多主数据库中的松散耦合的节点选择特殊节点;以及
由处理器执行写入事务协议,包括:
客户端设备在任何节点上发出写入事务;
在发出写入事务的启动器节点本地记录写入事务,并将所述写入事务异步复制到至少一个其他节点;和
在向所述客户端设备返回响应之前,等待从至少写入法定个数的节点接收确认,其中所述写入法定个数是包括特殊节点和至少一个其他节点的任何节点集,并且,在用于存储来自向所述多主数据库的写入事务的数据的提交事务之后,所述启动器节点等待接收对所述提交事务的确认而永远没有超时,并且在返回对于提交事务的成功结果通知之前等待将事务日志复制到所述写入法定个数的节点,以提供节点的数据一致性。
9.如权利要求8所述的计算机可读存储介质,还包括可由所述处理器执行的程序指令,以使所述处理器:
由处理器执行读取事务协议,该协议包括可由处理器执行的进一步程序指令,以使处理器:
在任何节点上发出读取事务;
尝试返回已知由至少读取法定个数的节点复制的行;以及
基于特殊节点无响应,用于超时尝试返回已知由至少所述读取法定个数的节点复制的行:
选择一个新的特殊节点;以及
重复尝试返回已知由至少所述读取法定个数的节点复制的行。
10.如权利要求8所述的计算机可读存储介质,其中,在确定客户端设备在等待从所述多主数据库接收到确认期间超时时,所述客户端设备通过发出至少一个读取事务来获得所述写入事务的状态。
11.如权利要求9所述的计算机可读存储介质,其中所述选择所述新的特殊节点由所述处理器在所述特殊节点的事务失败或不响应时执行。
12.如权利要求10所述的计算机可读存储介质,还包括:
在确定所述至少一个读取事务的超时时,由所述客户端设备重复所述至少一个读取事务。
13.如权利要求9所述的计算机可读存储介质,其中所述选择所述新的特殊节点由所述处理器在所述特殊节点的事务失败或不响应时执行。
14.如权利要求9所述的计算机可读存储介质,其中所述写入法定个数和所述读取法定个数中的每一个还包括基于耐久性要求选择的多个其他节点。
15.如权利要求9所述的计算机可读存储介质,还包括可由所述处理器执行的程序指令,以使所述处理器:
由所述处理器将权重分配给包括特殊节点的所述节点,
其中,分配给所述特殊节点的权重超过分配给剩余节点的权重,并且写入法定个数投票基于投票节点权重的第一总和等于或大于写入法定个数阈值,读取法定个数投票基于投票节点权重的第二总和等于或大于读取法定个数阈值。
16.一种装置,包括:
存储器,配置为存储指令;以及
处理器,配置为执行以下指令:
基于共识协议从多主数据库中的松散耦合的节点选择特殊节点;以及
执行写入事务协议,包括:
客户端设备在任何节点上发出写入事务;
在发出写入事务的启动器节点本地记录写入事务,并将所述写入事务异步复制到至少一个其他节点;和
在向所述客户端设备返回响应之前,等待从至少写入法定个数的节点接收确认,其中所述写入法定个数是包括特殊节点和至少一个其他节点的任何节点集,并且,在用于存储来自向所述多主数据库的写入事务的数据的提交事务之后,所述启动器节点等待接收对所述提交事务的确认而永远没有超时,并且在返回对于提交事务的成功结果通知之前等待将事务日志复制到所述写入法定个数的节点,以提供节点的数据一致性。
17.如权利要求16所述的装置,其中,所述处理器还被配置为:
执行读取事务协议,包括:
在任何节点上发出读取事务;
尝试返回已知由至少读取法定个数的节点复制的行;以及
基于特殊节点无响应,用于超时尝试返回已知由至少所述读取法定个数的节点复制的行:
选择一个新的特殊节点;以及
重复尝试返回已知由至少所述读取法定个数的节点复制的行。
18.如权利要求16所述的装置,其中:
其中,在确定客户端设备在等待从所述多主数据库接收到确认期间超时时,所述客户端设备通过发出至少一个读取事务来获得所述写入事务的状态。
19.如权利要求18所述的装置,其中:
在确定所述至少一个读取事务的超时时,由所述客户端设备重复所述至少一个读取事务。
20.如权利要求17所述的装置,其中:
所述选择所述新的特殊节点由所述处理器在所述特殊节点的事务失败或不响应时执行;以及
所述写入法定个数和所述读取法定个数中的每一个还包括基于耐久性要求选择的多个其他节点。
21.如权利要求17所述的装置,其中,所述处理器还被配置为:
为包括特殊节点的所述节点分配权重,
其中,分配给所述特殊节点的权重超过分配给剩余节点的权重,并且写入法定个数投票基于投票节点权重的第一总和等于或大于写入法定个数阈值,读取法定个数投票基于投票节点权重的第二总和等于或大于读取法定个数阈值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/459,507 US10606863B2 (en) | 2017-03-15 | 2017-03-15 | Monotonic transactions in a multi-master database with loosely coupled nodes |
US15/459,507 | 2017-03-15 | ||
PCT/IB2017/058253 WO2018167553A1 (en) | 2017-03-15 | 2017-12-21 | Monotonic transactions in multi-master database with loosely coupled nodes |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110402435A CN110402435A (zh) | 2019-11-01 |
CN110402435B true CN110402435B (zh) | 2023-05-12 |
Family
ID=63520132
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780088341.0A Active CN110402435B (zh) | 2017-03-15 | 2017-12-21 | 具有松散耦合节点的多主数据库中的单调交易 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10606863B2 (zh) |
JP (1) | JP6979079B2 (zh) |
CN (1) | CN110402435B (zh) |
DE (1) | DE112017006889T5 (zh) |
GB (1) | GB2574980B (zh) |
WO (1) | WO2018167553A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10868863B1 (en) * | 2016-12-14 | 2020-12-15 | Ocient Inc. | System and method for designating a leader using a consensus protocol within a database management system |
LT3683678T (lt) * | 2019-01-15 | 2023-02-10 | Iov42 Limited | Kompiuterizuotas būdas, kompiuterio programa ir duomenų apdorojimo sistema |
CN114285865B (zh) * | 2021-12-28 | 2023-08-08 | 天翼云科技有限公司 | 共享云硬盘的访问权限控制系统 |
WO2023148976A1 (ja) * | 2022-02-07 | 2023-08-10 | 株式会社Pfu | ノード装置、クラスタ再構成方法、プログラム及びクラスタシステム |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7206805B1 (en) * | 1999-09-09 | 2007-04-17 | Oracle International Corporation | Asynchronous transcription object management system |
US8572031B2 (en) * | 2010-12-23 | 2013-10-29 | Mongodb, Inc. | Method and apparatus for maintaining replica sets |
CN102831156B (zh) * | 2012-06-29 | 2014-12-31 | 浙江大学 | 一种云计算平台上的分布式事务处理方法 |
US9047331B2 (en) * | 2011-04-21 | 2015-06-02 | International Business Machines Corporation | Scalable row-store with consensus-based replication |
US9519510B2 (en) * | 2014-03-31 | 2016-12-13 | Amazon Technologies, Inc. | Atomic writes for multiple-extent operations |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7290056B1 (en) | 1999-09-09 | 2007-10-30 | Oracle International Corporation | Monitoring latency of a network to manage termination of distributed transactions |
US7627694B2 (en) | 2000-03-16 | 2009-12-01 | Silicon Graphics, Inc. | Maintaining process group membership for node clusters in high availability computing systems |
US20040133606A1 (en) | 2003-01-02 | 2004-07-08 | Z-Force Communications, Inc. | Directory aggregation for files distributed over a plurality of servers in a switched file system |
US8090880B2 (en) * | 2006-11-09 | 2012-01-03 | Microsoft Corporation | Data consistency within a federation infrastructure |
US20060090003A1 (en) * | 2004-10-22 | 2006-04-27 | Microsoft Corporation | Rendezvousing resource requests with corresponding resources |
US7801846B2 (en) | 2006-04-04 | 2010-09-21 | Computer Associates Think, Inc. | Generating log sequence identifiers to apply a transaction to a storage system |
US8301593B2 (en) * | 2008-06-12 | 2012-10-30 | Gravic, Inc. | Mixed mode synchronous and asynchronous replication system |
US20130110781A1 (en) * | 2011-10-31 | 2013-05-02 | Wojciech Golab | Server replication and transaction commitment |
US9690679B2 (en) * | 2011-10-31 | 2017-06-27 | Hewlett Packard Enterprise Development Lp | Transaction commitment and replication in a storage system |
US10037346B1 (en) * | 2012-07-25 | 2018-07-31 | Google Llc | Time reservations for ensuring consistent reads in a distributed database without logging |
US9760529B1 (en) | 2014-09-17 | 2017-09-12 | Amazon Technologies, Inc. | Distributed state manager bootstrapping |
JP6030713B1 (ja) | 2015-06-16 | 2016-11-24 | 株式会社ソフトギア | 分散型データ処理プログラム、情報処理装置、分散型データベースシステム及び分散システム |
US10872074B2 (en) * | 2016-09-30 | 2020-12-22 | Microsoft Technology Licensing, Llc | Distributed availability groups of databases for data centers |
-
2017
- 2017-03-15 US US15/459,507 patent/US10606863B2/en not_active Expired - Fee Related
- 2017-12-21 CN CN201780088341.0A patent/CN110402435B/zh active Active
- 2017-12-21 JP JP2019548929A patent/JP6979079B2/ja active Active
- 2017-12-21 DE DE112017006889.4T patent/DE112017006889T5/de active Pending
- 2017-12-21 GB GB1914434.4A patent/GB2574980B/en active Active
- 2017-12-21 WO PCT/IB2017/058253 patent/WO2018167553A1/en active Application Filing
-
2020
- 2020-01-20 US US16/747,313 patent/US11243980B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7206805B1 (en) * | 1999-09-09 | 2007-04-17 | Oracle International Corporation | Asynchronous transcription object management system |
US8572031B2 (en) * | 2010-12-23 | 2013-10-29 | Mongodb, Inc. | Method and apparatus for maintaining replica sets |
US9047331B2 (en) * | 2011-04-21 | 2015-06-02 | International Business Machines Corporation | Scalable row-store with consensus-based replication |
CN102831156B (zh) * | 2012-06-29 | 2014-12-31 | 浙江大学 | 一种云计算平台上的分布式事务处理方法 |
US9519510B2 (en) * | 2014-03-31 | 2016-12-13 | Amazon Technologies, Inc. | Atomic writes for multiple-extent operations |
Also Published As
Publication number | Publication date |
---|---|
JP6979079B2 (ja) | 2021-12-08 |
US20180268044A1 (en) | 2018-09-20 |
WO2018167553A1 (en) | 2018-09-20 |
US10606863B2 (en) | 2020-03-31 |
US11243980B2 (en) | 2022-02-08 |
GB201914434D0 (en) | 2019-11-20 |
GB2574980A (en) | 2019-12-25 |
GB2574980B (en) | 2021-12-29 |
JP2020510260A (ja) | 2020-04-02 |
DE112017006889T5 (de) | 2019-10-02 |
US20200151196A1 (en) | 2020-05-14 |
CN110402435A (zh) | 2019-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11700296B2 (en) | Client-directed placement of remotely-configured service instances | |
US10936423B2 (en) | Enhanced application write performance | |
US9413604B2 (en) | Instance host configuration | |
US11243980B2 (en) | Monotonic transactions in a multi-master database with loosely coupled nodes | |
US10922303B1 (en) | Early detection of corrupt data partition exports | |
US8966025B2 (en) | Instance configuration on remote platforms | |
US20200026786A1 (en) | Management and synchronization of batch workloads with active/active sites using proxy replication engines | |
US11080262B1 (en) | Optimistic atomic multi-page write operations in decoupled multi-writer databases | |
US20190227888A1 (en) | Handling node failure in multi-node data storage systems | |
CN111656325A (zh) | 在按时间排序的日志结构化键-值存储系统中从故障快速恢复 | |
JP2021515299A (ja) | 時系列順のアウトオブプレース更新のためのシステム、時系列順のアウトオブプレース更新のための方法、および時系列順のアウトオブプレース更新のためのコンピュータ・プログラム | |
US20230055511A1 (en) | Optimizing clustered filesystem lock ordering in multi-gateway supported hybrid cloud environment | |
CN102882943B (zh) | 服务副本读写方法及系统 | |
WO2023173959A1 (en) | Multi-protocol multi-site replication | |
US20180189305A1 (en) | Global namespace for a hierarchical set of file systems | |
AU2021268828B2 (en) | Secure data replication in distributed data storage environments | |
US11163636B2 (en) | Chronologically ordered log-structured key-value store from failures during garbage collection | |
US11188235B2 (en) | Reducing data replications among storage locations | |
US11121981B1 (en) | Optimistically granting permission to host computing resources |
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 |