公开/公告号CN113868336A
专利类型发明专利
公开/公告日2021-12-31
原文格式PDF
申请/专利权人 华中科技大学;
申请/专利号CN202111101120.7
申请日2021-09-18
分类号G06F16/27(20190101);G06F16/182(20190101);G06F16/18(20190101);G06F11/14(20060101);G06F9/46(20060101);
代理机构42201 华中科技大学专利中心;
代理人祝丹晴
地址 430074 湖北省武汉市洪山区珞喻路1037号
入库时间 2023-06-19 13:29:16
技术领域
本发明属于计算机数据存储领域,更具体地,涉及一种基于非易失内存的分布式事务的操作日志复制方法及系统。
背景技术
近年来,数据中心出现了RDMA高速网络。低延迟、高带宽和低CPU开销的RDMA网络,极大地提升了分布式事务的性能。RDMA网络允许直接访问远端机器的内存,无需两方的内核参与,并且支持无拷贝的数据传输,故现有的分布式事务系统大多基于RDMA网络来实现。RDMA网络提供两类原语:单边RDMA原语和双边RDMA原语。其中,单边RDMA原语包括读,写和原子(READ,WRITE,ATOMIC)操作;双边RDMA原语包括发送和接收(SEND,RECEIVE)操作。而在分布式事务系统中,硬件、软件、网络错误高发,为了提供可靠性和高可用性,需要将数据日志复制并持久化到远端服务器。
但是现有的基于RDMA高速网络的分布式事务系统中,在分布式事务提交之前,需要等待数据日志复制并持久化到远端服务器,而数据日志复制操作需要等待上锁操作和验证操作完成之后才可进行,使得事务提交关键路径上的日志复制及持久化开销较大。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供一种基于非易失内存分布式事务的操作日志复制方法及系统,其目的是在保障分布式事务处理系统具有可靠性和高可用性的前提下,大幅度地减少分布式事务提交之前对日志复制过程的等待,降低分布式事务的提交延迟。
为了实现上述目的,第一方面,本发明提供了一种基于非易失内存的分布式事务的操作日志复制方法,包括以下步骤:
S1、使分布式事务的协调者从主服务器上的非易失内存中获取分布式事务的读集,并在本地执行分布式事务,生成对应的操作日志并缓存分布式事务的写集;
S2、在协调者向包含写集的主服务器发送上锁请求的同时,开始执行将操作日志复制到备份服务器上的非易失内存的操作,使该操作与上锁操作及后续验证操作并行执行;
其中,上述分布式事务为采用乐观并发控制的分布式事务。
进一步优选地,采用单边RDMA写操作将操作日志复制到备份服务器。
进一步优选地,上述操作日志包括:事务ID、事务类型和事务参数;其中,事务类型表示OLTP应用所包含的逻辑事务类型;事务参数表示逻辑事务的输入参数。
进一步优选地,非易失内存分布式事务的操作日志复制方法还包括:在机器故障后恢复时,使协调者按照分布式事务提交的顺序,依次重放备份服务器上的非易失内存中的操作日志,以使分布式事务系统恢复到故障之前的状态;其中,分布式事务提交操作在将操作日志复制到备份服务器上的非易失内存的操作完成后执行;在分布式事务提交时,使协调者向主服务器和备份服务器发送分布式事务的ID,并记录分布式事务的提交顺序。
进一步优选地,使协调者根据操作日志中的事务类型以及输入参数,分析事务之间的数据依赖,并行重放没有数据依赖的操作日志,以减少重放操作日志带来的恢复延迟。
进一步优选地,将分布式事务的逻辑提前存储在所有的服务器上的非易失内存中;重放操作日志时,根据操作日志所记载的事务类型在非易失内存中找到对应的事务逻辑,并将操作日志中的事务参数作为输入,执行事务逻辑。
第二方面,本发明提供了一种非易失内存分布式事务的操作日志复制系统,包括:
操作日志生成模块,用于使分布式事务的协调者从主服务器上的非易失内存中获取分布式事务的读集,并在本地执行分布式事务,生成对应的操作日志并缓存分布式事务的写集;
操作日志并行复制模块,用于在协调者向包含写集的主服务器发送上锁请求的同时,开始执行将操作日志复制到备份服务器上的非易失内存的操作,使该操作与上锁操作及后续验证操作并行执行;
其中,上述分布式事务为采用乐观并发控制的分布式事务。
进一步优选地,上述操作日志复制系统还包括操作日志重放模块,用于在机器故障后恢复时,使协调者按照分布式事务提交的顺序,依次重放备份服务器上的非易失内存中的操作日志,以使分布式事务系统恢复到故障之前的状态;其中,分布式事务提交操作在将操作日志复制到备份服务器上的非易失内存的操作完成后执行;在分布式事务提交时,使协调者向主服务器和备份服务器发送分布式事务的ID,并记录分布式事务的提交顺序。
第三方面,本发明还提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现本发明第一方面所提供的基于非易失内存的分布式事务的操作日志复制方法。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
1、本发明提供了一种基于非易失内存的分布式事务的操作日志复制方法,在分布式事务乐观并发控制的上锁阶段和验证阶段并行地向副本服务器复制操作日志,减少了等待日志复制完成的时间,从而在保障分布式事务处理系统具有可靠性和高可用性的前提下,大幅度地减少分布式事务提交之前对日志复制过程的等待,降低了分布式事务的提交延迟。
2、本发明所提供的操作日志复制方法,所采用的日志为操作日志,只需要记录事务ID、事务类型和事务参数,不需要记录事务执行的输出结果,极大地减少了日志的大小,从而减少了日志复制过程中对NVM的写数据量,减少持久化开销,提高了分布式事务处理系统的吞吐。
3、本发明所提供的操作日志复制方法,在崩溃恢复时,选择性并行重放操作日志,通过分析操作日志对应的事务间的数据相关关系,并行重放没有数据依赖的操作日志;对于没有数据依赖的操作日志,其重放的结果与重放顺序无关,所以并行重放这些操作日志和串行重放的结果一致,而且并行重放大大减少了系统恢复延迟,减少了机器故障后重放操作日志的恢复开销。
附图说明
图1为本发明实施例1提供的基于非易失内存的分布式事务的操作日志复制方法流程图;
图2为本发明实施例1提供的操作日志并行复制过程和串行复制过程的对比示意图;
图3为本发明实施例1提供的操作日志物理存储结构示意图;
图4为本发明实施例1提供的一种可选实施方式下的操作日志复制方法的流程示意图;
图5为本发明实施例1提供的一种可选实施方式下操作日志重放方法的流程示意图;
图6为本发明实施例1提供的一种可选实施方式下操作日志选择性并行重放方法的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1、
一种基于非易失内存的分布式事务的操作日志复制方法,如图1所示,包括以下步骤:
S1、使分布式事务的协调者从主服务器上的非易失内存中获取分布式事务的读集,并在本地执行分布式事务,生成对应的操作日志并缓存分布式事务的写集;其中,分布式事务为采用乐观并发控制的分布式事务;乐观并发控制需要执行上锁以及后续验证操作,此时日志复制可以并行执行;此外,乐观并发控制适用于冲突较少的分布式事务系统,使得在备份服务器中被标记为无效的操作日志较少。
本发明所采用的日志为操作日志,操作日志不记录被修改的数据的值,只记录事务类型和输入参数,相比于数据日志记录的事务执行的输出结果,操作日志极大地减少了日志的大小,从而减少了日志复制过程持久化的数据量,减少了持久化开销,提高了分布式事务处理系统的吞吐。
S2、在协调者向包含写集的主服务器发送上锁请求的同时,开始执行将操作日志复制到备份服务器上的非易失内存的操作,使该操作与上锁操作及后续验证操作并行执行;
具体地,如图2所示为操作日志并行复制过程和串行复制过程的对比示意图,从图中可以看出,与串行方法相比,本发明所提供的操作日志并行复制方法将操作日志复制过程提前,与上锁过程同时开始;操作日志复制与上锁及验证阶段并行,节省了操作日志复制的时间。需要注意,无论上锁和验证阶段是否成功,操作日志都会被复制到备份服务器上的非易失内存中。进入事务提交阶段的时机存在两种情况,若上锁和验证成功,且协调者收到操作日志复制成功的应答,则直接进入事务提交阶段;若上锁和验证成功,但协调者未收到操作日志复制成功的应答,则等待操作日志复制成功,再进入事务提交阶段;由于操作日志复制与上锁及验证阶段并行执行,大幅度地减少分布式事务提交之前对日志复制过程的等待,故上述两种情况均可以减少分布式事务提交延迟。
需要说明的是,本发明为基于非易失内存的分布式事务的操作日志复制方法,非易失内存(NVM)具有极低的持久化开销。将NVM连接在内存总线上,应用程序就可以通过CPU的load和store指令直接访问NVM中的持久数据,具有近似DRAM的读写延迟、可字节寻址和非易失特性,模糊了内存和存储的界线。常用的非易失内存包括3D-XPoint、相变存储器(PCM)、阻变存储器(ReRAM)和自旋扭矩存储器(STT-RAM)。与DRAM相比,NVM的存储容量大得多;但是,NVM的写带宽只有DRAM写带宽的1/3~1/8;故虽然NVM为低开销的分布式事务日志复制提供了机会,但由于NVM的写带宽较低,导致日志复制过程成为系统瓶颈,阻碍了分布式事务处理系统的吞吐的提高。而本发明通过对操作日志进行并行复制,减少了日志复制过程中对NVM的写数据量,减少了对NVM的写带宽压力,减少持久化开销,并提高了分布式事务处理系统的吞吐。
进一步地,RDMA网络提供了单边RDMA原语和双边RDMA原语两类原语;其中,单边RDMA原语包括读,写和原子(READ,WRITE,ATOMIC)操作;双边RDMA原语包括发送和接收(SEND,RECEIVE)操作。通过使用双边RDMA原语,用户可以绕过远端机器的内核交换RPC信息,但是需要占用远端机器的CPU;而通过使用单边RDMA原语,用户可以绕过远端机器的CPU和内核直接访问远端机器的内存,故优选地,本发明采用单边RDMA写操作将操作日志复制到备份服务器。
需要说明的是,如图3所示为操作日志物理存储结构示意图,本实施例中操作日志存储了三项数据,分别是事务ID、事务类型和事务参数;其中,事务类型表示OLTP应用所包含的逻辑事务类型(如订单管理应用中的创建订单和订单支付等事务类型);事务参数表示逻辑事务的输入参数(如创建订单的输入参数包括仓库ID、顾客ID以及产品数量等)。
进一步地,在一种可选实施方式中,上述非易失内存分布式事务的操作日志复制方法还包括:在机器故障后恢复时,使协调者按照分布式事务提交的顺序,依次重放备份服务器上的非易失内存中的操作日志,以使分布式事务系统恢复到故障之前的状态;其中,分布式事务提交操作在将操作日志复制到备份服务器上的非易失内存的操作完成后执行;在分布式事务提交时,使协调者向主服务器和备份服务器发送分布式事务的ID,并记录分布式事务的提交顺序。
具体地,将分布式事务的逻辑提前存储在所有的服务器上的非易失内存中;重放操作日志时,根据操作日志所记载的事务类型在非易失内存中找到对应的事务逻辑,并将操作日志中的事务参数作为输入,执行事务逻辑。
如图4所示为一种可选实施方式下的操作日志复制方法的流程示意图;首先由协调者从主服务器上的非易失内存中获取该事务的读集,在本地执行事务,生成对应的操作日志并缓存该事务的写集。之后在协调者向包含写集的主服务器发送上锁请求时,协调者开始并行使用单边RDMA写操作将操作日志复制到备份服务器上的非易失内存中;操作日志复制与上锁及验证阶段并行,无论上锁和验证阶段是否成功,操作日志都会被复制到备份服务器上的非易失内存中。在分布式事务的提交阶段,协调者向主服务器和备份服务器发送该事务的ID,并记录分布式事务的提交顺序。在机器故障后恢复时,协调者按照事务提交的顺序,依次重放备份服务器中的操作日志。
具体地,如图5所示为一种可选实施方式下操作日志重放方法的流程示意图,本实施方式中,执行分布式事务T1、T2、T3、T4、T5后主服务器机器故障,通过备份服务器恢复已提交事务时,对操作日志进行重放;具体操作如下:
从备份服务器的日志记录中获取已提交事务集(T1、T2、T4、T5)、中止事务集(T3)以及事务提交顺序(T1、T2、T4、T5),从操作日志区域的起始位置开始扫描所有的操作日志,删除中止事务的操作日志,并按照事务提交的顺序重放已提交事务的操作日志。重放操作日志时,根据操作日志中记录的事务类型,映射到存储在备份服务器中的该事务的事务逻辑,并将操作日志中的事务参数作为事务的输入数据,执行事务逻辑。
优选地,为了进一步减少重放操作日志带来的恢复延迟,协调者可以根据操作日志中记录的事务类型以及事务的输入参数,选择性并行重放操作日志。具体地,如图6所示为一种可选实施方式下操作日志选择性并行重放方法的流程示意图;本实施方式下,执行分布式事务T1、T2、T3、T4、T5后主服务器机器故障,通过备份服务器恢复已提交事务时,对操作日志进行选择性重放,具体选择无数据依赖的操作日志进行并行重放,以减少重放操作日志的恢复延迟;具体操作如下:
从操作日志区域的起始位置开始扫描所有的操作日志,忽略中止事务的操作日志;根据操作日志的事务类型以及事务参数,分析事务的读集和写集;根据事务间读集和写集的相关关系以及事务提交的顺序,生成事务数据依赖图,获取无数据依赖的事务集(T1、T2);并将无数据依赖的事务集中的所有事务并行重放,以减少恢复延迟。
本发明在保障分布式事务处理系统具有可靠性和高可用性的前提下,大幅度地减少了分布式事务提交之前对日志复制过程的等待,降低了分布式事务的提交延迟;另外,本发明减少了日志复制过程中对NVM的写数据量,减少持久化开销,并进一步提升了分布式事务处理系统的吞吐;也减少了机器故障后重放操作日志的恢复开销。
实施例2、
一种非易失内存分布式事务的操作日志复制系统,包括:
操作日志生成模块,用于使分布式事务的协调者从主服务器上的非易失内存中获取分布式事务的读集,并在本地执行分布式事务,生成对应的操作日志并缓存分布式事务的写集;
操作日志并行复制模块,用于在协调者向包含写集的主服务器发送上锁请求的同时,开始执行将操作日志复制到备份服务器上的非易失内存的操作,使该操作与上锁操作及后续验证操作并行执行;
其中,上述分布式事务为采用乐观并发控制的分布式事务。
进一步地,在一种可选实施方式下,上述操作日志复制系统还包括操作日志重放模块,用于在机器故障后恢复时,使协调者按照分布式事务提交的顺序依次重放备份服务器上的非易失内存中的操作日志,以使分布式事务系统恢复到故障之前的状态;其中,分布式事务提交操作在将操作日志复制到备份服务器上的非易失内存的操作完成后执行;在分布式事务提交时,使协调者向主服务器和备份服务器发送分布式事务的ID,并记录分布式事务的提交顺序。
相关技术方案同实施例1,这里不做赘述。
实施例3、
一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现实施例1所提供的非易失内存分布式事务的操作日志复制方法。
相关技术方案同实施例1,这里不做赘述。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
机译: 高性能的设备和方法-使用集成的直接访问运行工厂内存的易失性板-内存访问操作-设备
机译: 通过直接使用集成来快速访问运行工厂内存的易失性板的设备和方法-内存访问操作-设备
机译: 使用全局确认的提交基于日志的分布式事务复制的设备和方法