本发明涉及计算机领域,具体来说,涉及一种分布式事务的实现方法和系统。
背景技术:
分布式文件系统一般包含客户端,元数据节点和数据服务器,客户端负责文件数据的访问接口制定,元数据节点处理文件的布局及属性,数据服务器存储文件的数据内容。
对于分布式文件系统,可以存储海量数据是其最主要的特征。元数据的组织相当复杂,并且以分布式的形式存储于各个数据节点上,当一个文件进行创建操作时,数据节点需要同时操作若干个数据节点,并且他们之间具有相关性,若在操作过程中遇到故障,则可能会导致一部分数据节点修改成功、另一部分数据节点修改失败,这就使得元数据的整体结构被破坏。所以必须设计一种事务的语义,保证提交到这若干个数据节点的数据全成功、或者全失败。
现有技术的一种做法是利用HA(High Availability,高可用性)方式。现有技术的另一种做法是选取一个集中的事务存储节点,先将要写入的数据按序写入到该事务存储节点上,然后再将要写入的数据写入到指定的数据节点中,之后再删除事务存储节点上的事务记录。这使得要写入的数据需要两次下盘,并且事务恢复时必须按序让所有的事务执行完成后才能重新提供服务,这样一方面浪费了磁盘性能,另一方面延长了故障后重新提供服务的时间。
针对相关技术中写入的数据需要两次下盘和事务存储节点故障导致提供服务时间延长的问题,目前尚未提出有效的解决方案。
技术实现要素:
针对相关技术中写入的数据需要两次下盘和事务存储节点故障导致提供服务时间延长的问题,本发明提出一种分布式事务的实现方法和系统,能够减少数据下盘的次数,并避免了事务存储节点故障导致提供服务时间延长的问题。
本发明的技术方案是这样实现的:根据本发明的一个方面,提供了一种分布式事务的实现方法。
该分布式事务的实现方法包括:创建事务及事务ID;一次提交事务到与事务对应的数据节点,数据节点包括快速存储设备;根据事务ID二次提交事务到与事务对应的目标对象。
优选地,一次提交事务到与事务对应的数据节点,包括:将事务固化于快速存储设备中;数据节点返回事务固化成功的确认信息。
优选地,在数据节点返回事务固化成功的确认信息之后,还包括:收到所有事务的固化成功的确认信息之后,返回事务提交完成的响应信息。
优选地,在创建事务及事务ID之前之前,还包括:封锁事务相关的数据。
优选地,在返回事务提交完成的响应信息之后,还包括:解锁事务相关的数据。
优选地,根据事务ID二次提交事务到与事务对应的目标对象,包括:按照事务ID的顺序发送二次提交事务的指令信息;根据二次提交事务的指令信息,将快速存储设备中的事务写入应用日志;将事务写入对应的目标对象。
优选地,快速存储设备为nvdm设备,nvdm设备的存储容量为8G或16G。
根据本发明的另一方面,提供了一种分布式事务的实现系统。
该分布式事务的实现系统包括:元数据节点,用于创建并保存事务ID;数据节点,用于根据事务ID二次提交事务到与事务对应的目标对象。
优选地,元数据节点还用于发送二次提交事务的指令信息、封锁事务相关的数据、解锁事务相关的数据;数据节点还用于返回事务提交完成的响应信息、将事务写入应用日志、和将写入对应的目标对象。
本发明通过为各个数据节点均配置一个快速存储设备,将事务直接发送到目的数据节点的快速存储设备中,避免了单独设置事务存储节点带来的写入数据需要两次下盘的问题和事务存储节点故障导致提供服务时间延长的问题,减少了一次提交的时间,简化了事务的处理流程。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的分布式事务的实现方法的流程图;
图2是根据本发明具体实施例的分布式事务的实现方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明的实施例,提供了一种分布式事务的实现方法。
如图1所示,根据本发明实施例的分布式事务的实现方法包括以下步骤:
步骤S101,创建事务及事务ID,其中事务ID表示事务的提交顺序;
步骤S103,一次提交事务到与事务对应的数据节点,数据节点包括快速存储设备;
步骤S105,根据事务ID二次提交事务到与事务对应的目标对象。
本发明通过为数据节点配置快速存储设备,将事务直接发送到数据节点的快速存储设备中,避免了单独设置事务存储节点带来的写入数据需要两次下盘的问题和事务存储节点故障导致提供服务时间延长的问题,减少了一次下盘的时间,简化了事务的处理流程。
在一个实施例中,在创建事务及事务ID之后,还包括:封锁事务相关的数据。
为了更好的理解本发明的上述实施例,下面结合图2来对本发明的上述技术方案进行详细阐述。从图2可以看出,本发明的分布式文件系统包括元数据节点opara、和多个数据节点(ostor1~ostor N),数据节点(ostor1~ostor N)也就是与不同事务(事务1~事务n)相对应的数据节点,元数据节点opara包括日志发起器,每个数据节点(ostor1~ostor N)均具有一个nvdm(non-volatile data memory,非易失数据存储器)设备(nvdm1~nvdm N)。
在一个实施例中,在封锁事务相关的数据之后,还包括以下步骤:
步骤1.日志发起器进行一次提交,将各个事务(事务1~事务n)分别发送到对应的数据节点(ostor1~ostor N)。数据节点(ostor1~ostor N)将事务(事务1~事务n)固化到对应的nvdm设备(nvdm1~nvdm N)中。
步骤2.日志发起器一次提交完成后,响应元数据节点opara事务固化成功的确认信息。当元数据节点opara接收到所有事务(事务1~事务n)的固化成功的确认信息之后,元数据节点opara可以解锁事务相关的数据。
步骤3.日志发起器按照事务的ID顺序向数据节点(ostor1~ostor N)发送二次提交事务的指令commit。
步骤4.各个数据节点(ostor1~ostor N)收到二次提交事务的指令commit后,将nvdm设备(nvdm1~nvdm N)中的事务(事务1~事务n)写入到对应的应用日志,再通过应用日志将事务(事务1~事务n)写入到相应的目标对象(obj1~obj N)中。
步骤5.响应元数据节点opara二次提交事务的指令commit完成,元数据节点opara释放内存。
在上述实施例中,因为事务在其涉及到的对象上是串行依次执行的,即二次提交时对同一对象上涉及的不同事务,必须按响应元数据节点opara的顺序执行,所以可以在一次提交后就可以响应元数据节点opara事务提交完成。
可选地,nvdm设备的存储容量为8G。
可选地,nvdm设备的存储容量为16G。
本发明通过为各个数据节点均配置一个nvdm设备,利用nvdm设备的快速存储特性,将事务直接发送到目的数据节点的nvdm设备中,避免了单独设置事务存储节点带来的写入数据需要两次下盘的问题,减少了一次提交的时间,简化了事务的处理流程,避免了整系统掉电后必须等所有事务均重新执行完成后才能提供服务的问题。
根据本发明的另一个方面,还提供了一种分布式事务的实现系统。
该分布式事务的实现系统包括:元数据节点和数据节点,数据节点设置有一个快速存储设备;元数据节点,用于创建并保存事务;数据节点用于根据事务ID二次提交事务到与事务对应的目标对象。
在一个实施例中,元数据节点还用于发送二次提交事务的指令信息、封锁事务相关的数据、解锁事务相关的数据;数据节点还用于返回事务提交完成的响应信息、将事务写入应用日志、和将写入对应的目标对象。
综上所述,借助于本发明的上述技术方案,通过为各个数据节点均配置一个快速存储设备,将事务直接发送到目的数据节点的快速存储设备中,避免了单独设置事务存储节点带来的写入数据需要两次下盘的问题和事务存储节点故障导致提供服务时间延长的问题,减少了一次提交的时间,简化了事务的处理流程。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。