CN111400268A - 一种分布式持久性内存事务系统的日志管理方法 - Google Patents
一种分布式持久性内存事务系统的日志管理方法 Download PDFInfo
- Publication number
- CN111400268A CN111400268A CN202010177582.6A CN202010177582A CN111400268A CN 111400268 A CN111400268 A CN 111400268A CN 202010177582 A CN202010177582 A CN 202010177582A CN 111400268 A CN111400268 A CN 111400268A
- Authority
- CN
- China
- Prior art keywords
- log
- node
- persistent
- slave
- copy node
- 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
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/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及持久性内存存储技术领域,特别涉及一种分布式持久性内存事务系统的日志管理方法,包括主副本节点、从副本节点和协调者线程,主副本节点和从副本节点为集群中的每个协调者线程分配独立的持久性日志区;主副本节点和从副本节点向协调者线程提供写日志接口;主副本节点和从副本节点调用CPU持久化指令,并通过原子地更新日志区元数据;主副本节点执行持久性日志区的内容,并回收垃圾日志项;从副本节点通过独立的后台线程组并行地回放不同协调者线程的持久性日志区的内容,并回收垃圾日志项。该分布式持久性内存事务系统的日志管理方法,能够同时提供高效的写日志性能、多核可扩展能力以及崩溃后恢复能力。
Description
技术领域
本发明涉及持久性内存存储技术领域,特别涉及一种分布式持久性内存事务系统的日志管理方法。
背景技术
持久性内存(Persistent Memory,PM)是一类新型存储器件,它支持直接使用CPU的load(载入)和store(存储)指令对其进行字节粒度的读写。常见的持久性内存器件包括阻变存储器(Resistive RAM,RRAM)、相变存储器(Phase Change Memory,PCM)和自旋矩存储器(Spin-Torque Transfer RAM,STT-RAM)等。Intel公司也在2019年发布了第一代英特尔傲腾数据中心持久性内存(Intel Optane DC Persistent Memory)。持久性内存具有极高的读写带宽和极低的读写延迟,为构建新型的存储系统带来了机遇。但同时,持久性内存具有读写性能不对称,寿命低等问题。持久性内存改变了传统存储系统易失和非易失的边界,由于CPU缓存是易失的且逐出顺序无法控制,编程者要显式地调用CPU持久化指令(如CLFLUSH、CFLUSHOPT和CLWB)强制将数据从CPU缓存刷写至持久性内存中。
远程直接数据存取(Remote Direct Memory Access,RDMA)是一种新型网络技术,支持100Gbps及以上的带宽,同时延迟在微秒级别。和传统的TCP/IP网络协议栈相比,RDMA的数据传输过程中完全无需内核参与,减少了数据的拷贝,同时对协议的处理大部分被卸载到网卡硬件上。RDMA的内存原语,包括WRITE、READ和原子操作,内存原语能够绕过远程CPU,可用于构建新型的内存存储系统。此外,RDMA还提供了WRITE-WITH-IMM原语,它能够将数据直写到远程机器,同时携带32bit的一个立即数去通知远程CPU。
日志系统(Logging System)通过写日志的方法去保证系统的崩溃一致性和操作的原子性。日志系统分为数据日志和操作日志两大类。其中数据日志分为redo(重做)日志和undo(撤销)日志两种,数据日志的优点是能保证操作的幂等性。操作日志只记录操作的类型和参数,能减少日志项的大小。
现有的分布式内存事务系统的日志系统主要存在两个问题。第一,未充分发挥现有的新型硬件的特点:持久性内存的持久化开销大,需要频繁地调用CPU持久化指令;使用RDMA的时候带来了多次不必要的数据拷贝开销。第二,多核扩展性差,这体现在两方面:首先,多个协调者线程向主副本节点和从副本节点写日志时需要协调,请求被串行化;其次,在从副本节点执行日志内容时,由于要保证日志回放的正确顺序,难以并行执行。
发明内容
本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种分布式持久性内存事务系统的日志管理方法,能够同时提供高效的写日志性能、多核可扩展能力以及崩溃后恢复能力。
为达此目的,本发明实施例提出了一种分布式持久性内存事务系统的日志管理方法,所述分布式持久性内存事务系统包括主副本节点、从副本节点和协调者线程,所述主副本节点和所述从副本节点为集群中的每个协调者线程分配独立的持久性日志区;
所述主副本节点和所述从副本节点向所述协调者线程提供写日志接口,所述协调者线程通过RDMA原语将日志项写到所述主副本节点和所述从副本节点对应的持久性日志区,并通知所述主副本节点和所述从副本节点;
所述主副本节点和从副本节点调用CPU持久化指令以保证日志项的持久性,并通过原子地更新日志区元数据以保证崩溃一致性;
所述主副本节点执行所述持久性日志区的内容,并回收垃圾日志项;所述从副本节点通过独立的后台线程组并行地回放不同协调者线程的所述持久性日志区的内容,并回收垃圾日志项。
本发明实施例的一种分布式持久性内存事务系统的日志管理方法,借助高速网络和存储硬件特性,能够同时提供高效的写日志性能、多核可扩展能力以及崩溃后恢复能力,是一种能充分发挥硬件性能的日志管理机制。
另外,根据本发明上述实施例的一种分布式持久性内存事务系统的日志管理方法还可以具有以下附加的技术特征:
进一步地,所述主副本节点和所述从副本节点均允许若干个实例同时存在,所述主副本节点和所述从副本节点存储全局唯一的实例编号。
进一步地,所述持久性日志区位于持久性内存中,所述持久性日志区为连续地址空间上的环形队列,支持变长的日志项,同时通过持久性头指针和尾指针以保证日志项增删的原子性。
进一步地,所述日志管理方法还包括:
所述主副本节点和所述从副本节点使用本地分配器在持久性内存上为每个协调者线程分配持久性日志区和对应的持久性头指针和尾指针;
所述主副本节点和所述从副本节点将所有持久性日志区对应的头尾指针初始化为日志区首地址并持久化;
所述主副本节点和所述从副本节点将所有持久性日志区的头尾指针的值通过远程过程调用发送给相应的协调者线程,以便所述协调者线程将接收到的所述值缓存到本地。
进一步地,所述日志项包括若干个写集子项,每个所述写集子项包括版本号、数据地址、数据长度以及数据内容。
进一步地,所述协调者线程写日志区的操作包括远程日志区地址定位阶段和日志项直写并通知阶段,其中:
所述远程日志区地址定位阶段包括,所述协调者线程根据目的主副本节点和从副本节点的全局唯一实例编号定位到缓存在本地的对应日志区的头尾指针值,若空闲空间小于或等于写日志区操作所需空间,所述协调者线程通过远程过程调用,命令主副本节点和从副本节点回收日志区;
所述日志项直写并通知阶段包括,所述协调者线程通过RDMA的WRITE-WITH-IMM原语,将存在本地的日志项写到尾指针值对应的远程日志区,并携带立即数,所述协调者线程更新本地缓存的日志区尾指针的值;其中,所述立即数中存有日志项的地址信息。
进一步地,所述主副本节点和所述从副本节点持久化日志项的操作包括:日志项区域定位阶段,持久化日志项阶段和日志区元数据更新阶段:
所述日志项区域定位阶段包括:所述主副本节点和所述从副本节点接收到所述协调者线程发送的立即数,根据所述立即数的值确定对应的持久性日志区,并确定新日志项的地址范围;
所述持久化日志项阶段包括:所述主副本节点和所述从副本节点调用CPU持久化指令,将持久性日志区的内容从CPU缓存中刷写至持久性内存;
所述日志区元数据更新阶段包括:所述主副本节点和所述从副本节点通过原子写指令更新日志区尾指针的值,并调用CPU持久化指令持久化所述尾指针的值,以保证崩溃一致性。
进一步地,所述主副本节点执行持久性日志区的内容之后,释放持有的锁;所述主副本节点批处理地更新并持久化日志区的头指针,以减少持久化开销。
进一步地,所述日志管理方法还包括:
所述从副本节点将属于不同协调者线程的所有日志区划分为若干份,每份由一个后台线程处理;
所述后台线程每间隔预设周期读取日志区的内容,对于每个日志项,选择性地执行其中的写集子项:当所述写集子项中的版本值小于当前数据版本时,所述写集子项被忽略;
所述后台线程处理完若干日志项时,更新并持久化日志区的头指针,以便为新日志项预留空间。
进一步地,所述日志管理方法还包括:所述主副本节点和所述从副本节点更新头指针之后,将更新后的头指针值通过远程过程调用发送给所述协调者线程,以便所述协调者线程更新本地缓存中的头指针值。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明实施例的分布式持久性内存事务系统的日志管理方法的原理图;
图2是本发明实施例的日志结构的示意图;
图3是本发明实施例的协调者线程写日志过程的示意图;
图4是本发明实施例的主副本节点和从副本节点持久化日志的示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参照附图描述本发明实施例提出的一种分布式持久性内存事务系统的日志管理方法。
请参考附图1,其是本发明实施例的分布式持久性内存事务系统的日志管理方法的原理图。
如附图1所示,该分布式持久性内存事务系统的日志管理方法,所述分布式持久性内存事务系统包括主副本节点、从副本节点和协调者线程,所述主副本节点和所述从副本节点为集群中的每个协调者线程分配独立的持久性日志区;
所述主副本节点和所述从副本节点向所述协调者线程提供写日志接口,所述协调者线程通过RDMA原语将日志项写到所述主副本节点和所述从副本节点对应的持久性日志区,并通知所述主副本节点和所述从副本节点;
所述主副本节点和从副本节点调用CPU持久化指令以保证日志项的持久性,并通过原子地更新日志区元数据以保证崩溃一致性;
所述主副本节点执行所述持久性日志区的内容,并回收垃圾日志项;所述从副本节点通过独立的后台线程组并行地回放不同协调者线程的所述持久性日志区的内容,并回收垃圾日志项。
具体地,该分布式持久性内存事务系统的日志管理方法也可称为该分布式持久性内存事务系统的日志管理机制。可以理解的是,持久性内存具有和DRAM相近的性能,同时提供字节粒度的存储接口。如附图1所示,整个日志管理机制中有三个组件:协调者线程、主副本节点和从副本节点。三个组件都运行在用户态。为了容忍机器崩溃,日志区被存储在持久性内存上。协调者线程通过RDMA网络向主副本节点和从副本节点写日志和交换日志元数据。
本发明实施例的一种分布式持久性内存事务系统的日志管理方法,借助高速网络和存储硬件特性,能够同时提供高效的写日志性能、多核可扩展能力以及崩溃后恢复能力,是一种能充分发挥硬件性能的日志管理机制。
在本发明的一个实施例中,所述主副本节点和所述从副本节点均允许若干个实例同时存在,所述主副本节点和所述从副本节点存储全局唯一的实例编号。
具体地,所述主副本节点和从副本节点均允许多个实例同时存在,所述的协调者线程允许运行在任何节点上。所述主副本节点和从副本节点存储有全局唯一的实例编号。
具体地,整个集群使用memcached(一套分布式的高速缓存系统)作为全局示例编号分配器。Memcached中初始化键值对<ID,0>。新的节点加入集群时,通过执行memcached的fetch and add(获取并添加)命令操作键ID,获得全局唯一的实例编号,并将其存在本地。
在本发明的一个实施例中,所述持久性日志区位于持久性内存中,所述持久性日志区为连续地址空间上的环形队列,支持变长的日志项,同时通过持久性头指针和尾指针以保证日志项增删的原子性。
在本发明的一个实施例中,所述日志管理方法还包括:
所述主副本节点和所述从副本节点使用本地分配器在持久性内存上为每个协调者线程分配持久性日志区和对应的持久性头指针和尾指针;
所述主副本节点和所述从副本节点将所有持久性日志区对应的头尾指针初始化为日志区首地址并持久化;
所述主副本节点和所述从副本节点将所有持久性日志区的头尾指针的值通过远程过程调用发送给相应的协调者线程,以便所述协调者线程将接收到的所述值缓存到本地。
具体地,所述主副本节点和从副本节点使用本地分配器在持久性内存上为每个协调者线程分配持久性日志区和对应的持久性头指针和尾指针;待分配完毕后,主副本节点和从副本节点将所有日志区对应的头尾指针初始化为日志区首地址并持久化;待初始化完成后,主副本节点和从副本节点将所有日志区的头尾指针的值通过远程过程调用发送给相应的协调者线程;协调者线程将收到的日志区头尾指针的值,将其缓存到本地。
可以理解的是,本地分配器需要记录每个日志区的首地址和长度,并将其存在持久性内存的固定位置。同时,所有的持久性头尾指针也需要存储在持久性内存的固定位置。为了减少运行过程中的CPU缓存行的伪冲突,每个持久性头(尾)指针存储在不同的64bytes对齐的地址中。某个节点在崩溃重启后,通过读取持久性内存固定位置的日志上述元数据,将节点的所有日志区成功恢复到一致性状态。同时,协调者线程通过数据结构map<ID,头尾指针值>,缓存主副本节点和从副本节点分配给自己的日志区头尾指针。
在本发明的一个实施例中,所述日志项包括若干个写集子项,每个所述写集子项包括版本号、数据地址、数据长度以及数据内容。
如附图2所示,其是本发明实施例的日志结构的示意图。具体地,整个日志区的结构如附图2所示,整个日志区包含多个变长的日志项。每个日志项包含多个写集子项,代表某个事务的写集在此主(从)副本上的部分。每个写集子项包括64bit版本号,64bit数据地址、64bit数据长度以及数据内容。版本号在每次对应数据更新时自增,64bit的长度保证不会发生版本号溢出的情况。数据地址为在持久性内存中对应数据的虚拟地址,每次机器重启时,使用mmap(内存映射文件)系统调用将持久性内存设备映射到固定虚拟地址空间。数据长度为该写集子项修改的数据的长度,用于定位到日志项中下个写集子项的地址。数据内容即为事务修改之后的数据。在事务的执行过程中,主副本节点对写集的数据进行加锁,同时将数据现有版本的值V返回给协调者线程;协调者线程将(V+1)作为日志项中对应的版本号。
在本发明的一个实施例中,所述协调者线程写日志区的操作包括远程日志区地址定位阶段和日志项直写并通知阶段,其中:
所述远程日志区地址定位阶段包括,所述协调者线程根据目的主副本节点和从副本节点的全局唯一实例编号定位到缓存在本地的对应日志区的头尾指针值,若空闲空间小于或等于写日志区操作所需空间,所述协调者线程通过远程过程调用,命令主副本节点和从副本节点回收日志区;
所述日志项直写并通知阶段包括,所述协调者线程通过RDMA的WRITE-WITH-IMM原语,将存在本地的日志项写到尾指针值对应的远程日志区,并携带立即数,所述协调者线程更新本地缓存的日志区尾指针的值;其中,所述立即数中存有日志项的地址信息。
如附图3所示,其是本发明实施例的协调者线程写日志过程的示意图。
具体地,在日志区地址定位阶段,协调者线程根据目的主副本节点和从副本节点的全局唯一实例编号定位到缓存在本地的对应日志区的头尾指针值。若空闲空间不足,协调者线程通过远程过程调用,命令主副本节点和从副本节点回收日志区。等到日志空间充足时,即可进行下一阶段,在等待过程中,协调者线程可切换至其它工作任务。
在日志项直写并通知阶段,协调者通过RDMA的WRITE-WITH-IMM原语,将存在本地的日志项写到尾指针值对应的远程日志区,并携带立即数,立即数中存有日志项的地址信息,即(尾指针值+日志长度)。立即数用于通知主副本节点和从副本节点CPU核心存在新写入的日志项。最后,所述协调者线程更新本地缓存的日志区尾指针的值。
可以理解的是,在协调者线程执行WRITE-WITH-IMM原语之前,日志项的内容被序列化至本地的日志项缓冲(Buffer)中,为了减少运行时的注册内存开销,该Buffer提前被注册成RDMA网卡直接可访问的内存区域。当日志项的大小大于Buffer时,日志项被拆分成多个数据块,依次拷贝进Buffer中,然后协调者线程发出RDMA的WRITE原语,将日志项的数据块写入远程日志区的对应位置,当协调者线程收到完成队列中标记WRITE完成的消息时,再进行下个日志项数据块的处理。对于最后一个数据块,为了通知远程的主副本节点和从副本节点,协调者线程使用WRITE-WITH-IMM原语。当某个事务涉及多个节点时,为了提高系统性能,协调者并行地将日志远程写给多个主副本节点(或多个从副本节点)。
在本发明的一个实施例中,所述主副本节点和所述从副本节点持久化日志项的操作包括:日志项区域定位阶段,持久化日志项阶段和日志区元数据更新阶段:
所述日志项区域定位阶段包括:所述主副本节点和所述从副本节点接收到所述协调者线程发送的立即数,根据所述立即数的值确定对应的持久性日志区,并确定新日志项的地址范围;
所述持久化日志项阶段包括:所述主副本节点和所述从副本节点调用CPU持久化指令,将持久性日志区的内容从CPU缓存中刷写至持久性内存;
所述日志区元数据更新阶段包括:所述主副本节点和所述从副本节点通过原子写指令更新日志区尾指针的值,并调用CPU持久化指令持久化所述尾指针的值,以保证崩溃一致性。
如附图4所示,其是本发明实施例的主副本节点和从副本节点持久化日志的示意图。
具体地,主副本节点和从副本节点持久化日志项的操作包括:日志项区域定位,持久化日志项和日志区元数据更新三个阶段。在日志项区域定位阶段,主副本节点和从副本节点接受到所述协调者线程发送的立即数,先通过立即数的值确定对应的日志区,然后确定新日志项的地址范围。在持久化日志项阶段,主副本节点和从副本节点调用CPU持久化指令(如CLWB和CLFLUSHOPT),将日志区的内容从CPU缓存中刷写至持久性内存。在日志区元数据更新阶段,主副本节点和从副本节点通过64bit原子写指令更新日志区尾指针的值,最后调用CPU持久化指令持久化尾指针的值,保证崩溃一致性。
具体地,主副本节点和从副本节点的线程轮询RDMA的接受队列,若收到了WRITE-WITH-IMM,即可判断收到了新的日志项。通过立即数的值M,查询所有日志区的地址范围,即可确定新日志项属于哪个日志区(记为L),即由哪个协调者线程发出。然后,读取L的尾指针值T,即可确定新日志项的地址范围为[T,M)。对于主副本节点,采用CLWB指令刷写日志项,保证日志项的数据还在CPU缓存中,加速接下来的日志执行过程。而对于从副本节点,日志项的执行不是实时的,所以采用CLFLUSHOPT指令刷写日志项,防止日志内容污染CPU缓存。最后,更新尾指针并持久化尾指针,利用CPU提供的64bit原子写,可以保证整个日志项的原子性,即机器崩溃重启后不会出现部分持久化的日志项。
在本发明的一个实施例中,所述主副本节点执行持久性日志区的内容之后,释放持有的锁;所述主副本节点批处理地更新并持久化日志区的头指针,以减少持久化开销。
具体地,主副本根据事务系统的语义执行日志内容。主副本解析日志项的格式,对于每个写集子项,将其存储的数据拷贝到相应的持久性内存地址中。当保证执行的结果成功持久化之后,释放对应数据上的互斥锁。由于每次更新头指针需要更新并持久化头指针,为了减少此开销,系统批量更新持久性头指针,在此过程中考虑两个因素:1)日志区的空闲空间大小,2)已执行但未更新头指针的日志项数目。当日志项空闲空间小于50%,或已执行但未更新头指针的日志项数目达到32时,更新并持久性尾指针,以达到空闲空间、持久性开销和恢复代价的三者平衡。
在本发明的一个实施例中,所述日志管理方法还包括:
所述从副本节点将属于不同协调者线程的所有日志区划分为若干份,每份由一个后台线程处理;
所述后台线程每间隔预设周期读取日志区的内容,对于每个日志项,选择性地执行其中的写集子项:当所述写集子项中的版本值小于当前数据版本时,所述写集子项被忽略;
所述后台线程处理完若干日志项时,更新并持久化日志区的头指针,以便为新日志项预留空间。
具体地,从副本节点将属于不同协调者的所有日志区划分为若干份,每份由一个后台线程处理;后台线程周期性读取日志区的内容,对于每个日志项,选择性地执行其中的写集子项:当所述写集子项中的版本值小于当前数据版本时,写集子项即可被忽略;后台线程处理完若干日志项时,即可更新并持久化日志区的头指针,为新日志项预留空间。
具体地,日志区划分策略同时考虑日志区的个数和日志区更新的频繁程度两个因素,使得每个后台线程近似处理相同数量的工作任务。同时,后台线程在两种情况下被唤醒执行日志内容:1)计时器到时;2)日志区空间不足,收到协调者线程发送的回收日志的命令。不同线程管理日志区会存在对相同数据的修改,为了保证最后执行产生的结果与主副本一致,在线程执行日志的过程中依据日志中的版本信息进行条件更新,即只有某个日志项中的写集子项的版本高于现有数据版本,才执行更新。条件更新的方法提高了多核扩展性,同时又减少了日志执行的开销。
在本发明的一个实施例中,所述日志管理方法还包括:所述主副本节点和所述从副本节点更新头指针之后,将更新后的头指针值通过远程过程调用发送给所述协调者线程,以便所述协调者线程更新本地缓存中的头指针值。
具体地,主副本节点和从副本节点更新完头指针之后,将最新的头指针值通过远程过程调用发送给协调者线程;协调者线程更新本地缓存中的头指针值。
具体地,主副本节点和从副本节点维护一个最新修改的头指针map,从协调者线程ID映射到修改的头指针值。每次头指针被更新后,新的值被插入该map。当主副本节点和从副本节点要向某个协调者线程发送或回复消息时,它先查询该map,若存在更新的头指针值,则在消息中捎带该头指针值,最后从map中删除该值。
本发明实施例提出的一种分布式持久性内存事务系统的日志管理机制,借助高速网络和存储硬件特性,设计能充分发挥硬件性能的日志管理机制,能够同时提供高效的写日志性能、多核可扩展能力以及崩溃后恢复能力。
本领域的普通技术人员可以理解,上述各实施例在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本申请的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (10)
1.一种分布式持久性内存事务系统的日志管理方法,所述分布式持久性内存事务系统包括主副本节点、从副本节点和协调者线程,其特征在于,所述主副本节点和所述从副本节点为集群中的每个协调者线程分配独立的持久性日志区;
所述主副本节点和所述从副本节点向所述协调者线程提供写日志接口,所述协调者线程通过RDMA原语将日志项写到所述主副本节点和所述从副本节点对应的持久性日志区,并通知所述主副本节点和所述从副本节点;
所述主副本节点和从副本节点调用CPU持久化指令以保证日志项的持久性,并通过原子地更新日志区元数据以保证崩溃一致性;
所述主副本节点执行所述持久性日志区的内容,并回收垃圾日志项;所述从副本节点通过独立的后台线程组并行地回放不同协调者线程的所述持久性日志区的内容,并回收垃圾日志项。
2.根据权利要求1所述的一种分布式持久性内存事务系统的日志管理方法,其特征在于,所述主副本节点和所述从副本节点均允许若干个实例同时存在,所述主副本节点和所述从副本节点存储全局唯一的实例编号。
3.根据权利要求1所述的一种分布式持久性内存事务系统的日志管理方法,其特征在于,所述持久性日志区位于持久性内存中,所述持久性日志区为连续地址空间上的环形队列,支持变长的日志项,同时通过持久性头指针和尾指针以保证日志项增删的原子性。
4.根据权利要求1所述的一种分布式持久性内存事务系统的日志管理方法,其特征在于,所述日志管理方法还包括:
所述主副本节点和所述从副本节点使用本地分配器在持久性内存上为每个协调者线程分配持久性日志区和对应的持久性头指针和尾指针;
所述主副本节点和所述从副本节点将所有持久性日志区对应的头尾指针初始化为日志区首地址并持久化;
所述主副本节点和所述从副本节点将所有持久性日志区的头尾指针的值通过远程过程调用发送给相应的协调者线程,以便所述协调者线程将接收到的所述值缓存到本地。
5.根据权利要求1所述的一种分布式持久性内存事务系统的日志管理方法,其特征在于,所述日志项包括若干个写集子项,每个所述写集子项包括版本号、数据地址、数据长度以及数据内容。
6.根据权利要求1所述的一种分布式持久性内存事务系统的日志管理方法,其特征在于,所述协调者线程写日志区的操作包括远程日志区地址定位阶段和日志项直写并通知阶段,其中:
所述远程日志区地址定位阶段包括,所述协调者线程根据目的主副本节点和从副本节点的全局唯一实例编号定位到缓存在本地的对应日志区的头尾指针值,若空闲空间小于或等于写日志区操作所需空间,所述协调者线程通过远程过程调用,命令主副本节点和从副本节点回收日志区;
所述日志项直写并通知阶段包括,所述协调者线程通过RDMA的WRITE-WITH-IMM原语,将存在本地的日志项写到尾指针值对应的远程日志区,并携带立即数,所述协调者线程更新本地缓存的日志区尾指针的值;其中,所述立即数中存有日志项的地址信息。
7.根据权利要求1所述的一种分布式持久性内存事务系统的日志管理方法,其特征在于,所述主副本节点和所述从副本节点持久化日志项的操作包括:日志项区域定位阶段,持久化日志项阶段和日志区元数据更新阶段:
所述日志项区域定位阶段包括:所述主副本节点和所述从副本节点接收到所述协调者线程发送的立即数,根据所述立即数的值确定对应的持久性日志区,并确定新日志项的地址范围;
所述持久化日志项阶段包括:所述主副本节点和所述从副本节点调用CPU持久化指令,将持久性日志区的内容从CPU缓存中刷写至持久性内存;
所述日志区元数据更新阶段包括:所述主副本节点和所述从副本节点通过原子写指令更新日志区尾指针的值,并调用CPU持久化指令持久化所述尾指针的值,以保证崩溃一致性。
8.根据权利要求1所述的一种分布式持久性内存事务系统的日志管理方法,其特征在于,所述主副本节点执行持久性日志区的内容之后,释放持有的锁;所述主副本节点批处理地更新并持久化日志区的头指针,以减少持久化开销。
9.根据权利要求1所述的一种分布式持久性内存事务系统的日志管理方法,其特征在于,所述日志管理方法还包括:
所述从副本节点将属于不同协调者线程的所有日志区划分为若干份,每份由一个后台线程处理;
所述后台线程每间隔预设周期读取日志区的内容,对于每个日志项,选择性地执行其中的写集子项:当所述写集子项中的版本值小于当前数据版本时,所述写集子项被忽略;
所述后台线程处理完若干日志项时,更新并持久化日志区的头指针,以便为新日志项预留空间。
10.根据权利要求1所述的一种分布式持久性内存事务系统的日志管理方法,其特征在于,所述日志管理方法还包括:所述主副本节点和所述从副本节点更新头指针之后,将更新后的头指针值通过远程过程调用发送给所述协调者线程,以便所述协调者线程更新本地缓存中的头指针值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010177582.6A CN111400268B (zh) | 2020-03-13 | 2020-03-13 | 一种分布式持久性内存事务系统的日志管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010177582.6A CN111400268B (zh) | 2020-03-13 | 2020-03-13 | 一种分布式持久性内存事务系统的日志管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111400268A true CN111400268A (zh) | 2020-07-10 |
CN111400268B CN111400268B (zh) | 2022-06-17 |
Family
ID=71434789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010177582.6A Active CN111400268B (zh) | 2020-03-13 | 2020-03-13 | 一种分布式持久性内存事务系统的日志管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111400268B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949633A (zh) * | 2020-08-03 | 2020-11-17 | 杭州电子科技大学 | 一种基于并行流处理的ict系统运行日志分析方法 |
CN112231290A (zh) * | 2020-11-03 | 2021-01-15 | 上海智臻智能网络科技股份有限公司 | 一种本地日志的处理方法、装置、设备及存储介质 |
CN113220693A (zh) * | 2021-06-02 | 2021-08-06 | 北京字节跳动网络技术有限公司 | 计算存储分离系统及其数据访问方法、介质和电子设备 |
CN113360098A (zh) * | 2021-08-09 | 2021-09-07 | 苏州浪潮智能科技有限公司 | 一种数据写入方法、装置、系统、电子设备及存储介质 |
WO2022037173A1 (zh) * | 2020-08-21 | 2022-02-24 | 苏州浪潮智能科技有限公司 | 存储集群运行时数据持久化的方法、装置、设备和介质 |
CN114443364A (zh) * | 2021-12-27 | 2022-05-06 | 天翼云科技有限公司 | 一种分布式块存储数据处理方法、装置、设备及存储介质 |
TWI779944B (zh) * | 2021-07-29 | 2022-10-01 | 旺宏電子股份有限公司 | 維持資料一致性之記憶系統及其操作方法 |
WO2023131413A1 (en) * | 2022-01-07 | 2023-07-13 | Huawei Cloud Computing Technologies Co., Ltd. | Memory controller for storage class memory system (scm) and method for controlling scm system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881371A (zh) * | 2015-05-29 | 2015-09-02 | 清华大学 | 持久性内存事务处理缓存管理方法与装置 |
US20150293820A1 (en) * | 2014-04-09 | 2015-10-15 | Kshitij A. Doshi | Distributed persistent memory using asynchronous streaming of log records |
CN105159818A (zh) * | 2015-08-28 | 2015-12-16 | 东北大学 | 内存数据管理中日志恢复方法及其仿真系统 |
CN110691062A (zh) * | 2018-07-06 | 2020-01-14 | 浙江大学 | 一种数据写入方法、装置及其设备 |
-
2020
- 2020-03-13 CN CN202010177582.6A patent/CN111400268B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150293820A1 (en) * | 2014-04-09 | 2015-10-15 | Kshitij A. Doshi | Distributed persistent memory using asynchronous streaming of log records |
CN104881371A (zh) * | 2015-05-29 | 2015-09-02 | 清华大学 | 持久性内存事务处理缓存管理方法与装置 |
CN105159818A (zh) * | 2015-08-28 | 2015-12-16 | 东北大学 | 内存数据管理中日志恢复方法及其仿真系统 |
CN110691062A (zh) * | 2018-07-06 | 2020-01-14 | 浙江大学 | 一种数据写入方法、装置及其设备 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949633A (zh) * | 2020-08-03 | 2020-11-17 | 杭州电子科技大学 | 一种基于并行流处理的ict系统运行日志分析方法 |
CN111949633B (zh) * | 2020-08-03 | 2021-11-30 | 杭州电子科技大学 | 一种基于并行流处理的ict系统运行日志分析方法 |
WO2022037173A1 (zh) * | 2020-08-21 | 2022-02-24 | 苏州浪潮智能科技有限公司 | 存储集群运行时数据持久化的方法、装置、设备和介质 |
CN112231290A (zh) * | 2020-11-03 | 2021-01-15 | 上海智臻智能网络科技股份有限公司 | 一种本地日志的处理方法、装置、设备及存储介质 |
CN113220693A (zh) * | 2021-06-02 | 2021-08-06 | 北京字节跳动网络技术有限公司 | 计算存储分离系统及其数据访问方法、介质和电子设备 |
CN113220693B (zh) * | 2021-06-02 | 2023-10-20 | 北京火山引擎科技有限公司 | 计算存储分离系统及其数据访问方法、介质和电子设备 |
TWI779944B (zh) * | 2021-07-29 | 2022-10-01 | 旺宏電子股份有限公司 | 維持資料一致性之記憶系統及其操作方法 |
US11704246B2 (en) | 2021-07-29 | 2023-07-18 | Macronix International Co., Ltd. | Memory system for maintaining data consistency and operation method thereof |
CN113360098A (zh) * | 2021-08-09 | 2021-09-07 | 苏州浪潮智能科技有限公司 | 一种数据写入方法、装置、系统、电子设备及存储介质 |
CN114443364A (zh) * | 2021-12-27 | 2022-05-06 | 天翼云科技有限公司 | 一种分布式块存储数据处理方法、装置、设备及存储介质 |
WO2023131413A1 (en) * | 2022-01-07 | 2023-07-13 | Huawei Cloud Computing Technologies Co., Ltd. | Memory controller for storage class memory system (scm) and method for controlling scm system |
Also Published As
Publication number | Publication date |
---|---|
CN111400268B (zh) | 2022-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111400268B (zh) | 一种分布式持久性内存事务系统的日志管理方法 | |
US5946711A (en) | System for locking data in a shared cache | |
CN110377531B (zh) | 基于日志结构的持久性内存存储引擎装置及控制方法 | |
US20200042454A1 (en) | System and method for facilitating cluster-level cache and memory space | |
CN102591800B (zh) | 一种弱一致性存储模型的数据访存系统和方法 | |
US10733101B2 (en) | Processing node, computer system, and transaction conflict detection method | |
JPH10133943A (ja) | リンクリスト形成方法 | |
CN109582686B (zh) | 分布式元数据管理一致性保证方法、装置、系统及应用 | |
EP4216061A1 (en) | Transaction processing method, system, apparatus, device, storage medium, and program product | |
CN114490141B (zh) | 一种基于共享内存的高并发ipc数据交互方法 | |
CN112000287A (zh) | 一种io请求处理装置、方法、设备及可读存储介质 | |
CN113220490A (zh) | 异步写回持久化内存的事务持久化方法及系统 | |
US7640410B2 (en) | Instant copy of data through pointers interchanging | |
CN115080277A (zh) | 一种多核系统的核间通信系统 | |
CN111221773B (zh) | 一种基于rdma高速网络和跳表的数据存储架构方法 | |
US7558929B2 (en) | Instant copy of data in a cache memory via an atomic command | |
JP4286857B2 (ja) | ノード間共用ファイル制御方法 | |
US7552297B2 (en) | Instant copy of data in a cache memory via an atomic command | |
US20230033998A1 (en) | Memory system for maintaining data consistency and operation method thereof | |
JP4664931B2 (ja) | データベースへのアクセスを制御するための異なったデータベースサーバ間のデータベースのオーナーシップのパーティション化 | |
JP3866448B2 (ja) | ノード間共用ファイル制御方式 | |
CN114201551A (zh) | 数据存储方法和数据存储装置 | |
CN110727465B (zh) | 一种基于配置查找表的协议可重构一致性实现方法 | |
CN117014504B (zh) | 数据传输方法、装置、设备、介质及产品 | |
US11768772B2 (en) | Accumulators corresponding to bins in memory |
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 |