CN113360098A - 一种数据写入方法、装置、系统、电子设备及存储介质 - Google Patents
一种数据写入方法、装置、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113360098A CN113360098A CN202110905582.8A CN202110905582A CN113360098A CN 113360098 A CN113360098 A CN 113360098A CN 202110905582 A CN202110905582 A CN 202110905582A CN 113360098 A CN113360098 A CN 113360098A
- Authority
- CN
- China
- Prior art keywords
- data
- written
- ring buffer
- writing
- persistent memory
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 239000000872 buffer Substances 0.000 claims abstract description 122
- 230000002085 persistent effect Effects 0.000 claims abstract description 78
- 230000015654 memory Effects 0.000 claims abstract description 53
- 238000013500 data storage Methods 0.000 claims abstract description 23
- 230000001360 synchronised effect Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 10
- 230000004931 aggregating effect Effects 0.000 claims description 3
- 230000002688 persistence Effects 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明公开了一种数据写入方法、装置、系统、电子设备及计算机可读存储介质,该方法包括:获取待写入数据;按照字节寻址,将待写入数据写入到持久内存设备的环形缓冲区;其中,持久内存设备的工作模式为应用直接访问模式;将环形缓冲区中的待写入数据存储到数据存储器中;本发明通过按照字节寻址,将待写入数据写入到持久内存设备的环形缓冲区,利用持久内存设备提供的数倍于传统的数据存储器的写入速度和带宽,提高了数据的写入速度,降低了故障时数据丢失的可能性;并且利用持久内存设备中的环形缓冲区对待写入数据进行中转存储,能够源源不断的写入待写入数据,在提升数据持久化速度的同时降低了技术使用成本。
Description
技术领域
本发明涉及数据存储技术领域,特别涉及一种数据写入方法、装置、系统、电子设备及计算机可读存储介质。
背景技术
持久内存(Persistent Memory,PMem)是新一代的存储介质,除了字节可寻址和高速读写性能以外,具有掉电非易失、高存储密度和低静态功耗等这些DRAM(动态随机存取存储器)不具备的优点,为构建更高效的存储计算系统带来了新的机遇。
然而,相较于传统的机械硬盘和固态硬盘等非易失性设备,持久内存设备的价格较高,在大规模用作存储介质时成本高昂。在大数据的存储场景中,用户仍然广泛使用机械硬盘及NAS(Network Attached Storage,网络存储器)等作为主要存储,这样数据的写入速度受制于小数据块的消耗和较低的带宽;其中,跨主机的数据分区实现更是采用缓慢的网络拷贝,使得数据写入速度进一步降低,并可能导致在机房故障(如断电和网络波动等)时丢失更多的数据。因此,如何能够提高数据的写入速度,降低故障时数据丢失的可能性,提升用户体验,是现今急需解决的问题。
发明内容
本发明的目的是提供一种数据写入方法、装置、系统、电子设备及计算机可读存储介质,以利用持久内存设备,提高数据的写入速度,降低故障时数据丢失的可能性,提升用户体验。
为解决上述技术问题,本发明提供一种数据写入方法,包括:
获取待写入数据;
按照字节寻址,将所述待写入数据写入到持久内存设备的环形缓冲区;其中,所述持久内存设备的工作模式为应用直接访问模式;
将所述环形缓冲区中的所述待写入数据存储到数据存储器中。
可选的,所述环形缓冲区为环形双链表时,按照字节寻址,将所述待写入数据写入到持久内存设备的环形缓冲区,包括:
将所述待写入数据写入到当前数据单元;其中,当前数据单元为所述环形双链表中的任一数据单元;
在当前数据单元写满后,根据当前数据单元中的后指针,将所述待写入数据写入到下一数据单元;其中,下一数据单元为当前数据单元中的后指针所指向的数据单元,所述环形双链表中最后一个数据单元中的后指针指向第一个数据单元。
可选的,所述获取待写入数据,包括:
主节点设备获取数据写入请求对应的待写入数据,并向同步节点设备发送所述待写入数据。
可选的,所述获取待写入数据,包括:
同步节点设备通过RDMA网络拷贝主节点设备接收的所述待写入数据。
可选的,所述同步节点设备通过RDMA网络拷贝主节点设备接收的所述待写入数据,包括:
所述同步节点设备利用RDMA网卡接收所述主节点设备通过RDMA网络发送的所述待写入数据。
可选的,所述将所述环形缓冲区中的所述待写入数据存储到数据存储器中,包括:
对所述环形缓冲区中的小文件进行聚合,获取聚合文件;其中,所述小文件为所述待写入数据中文件大小小于阈值的文件;
将所述聚合文件存储到数据存储器中。
可选的,所述将所述环形缓冲区中的所述待写入数据存储到数据存储器中,包括:
根据所述环形缓冲区的数据写入量,将所述环形缓冲区中的所述待写入数据存储到所述数据存储器中,并清空所述环形缓冲区中的已存储数据;其中,所述已存储数据为存储到所述数据存储器中的所述待写入数据。
可选的,所述根据所述环形缓冲区的数据写入量,将所述环形缓冲区中的所述待写入数据存储到所述数据存储器中,并清空所述环形缓冲区中的已存储数据,包括:
判断当前环形缓冲区的存储数据量是否达到阈值;其中,当前环形缓冲区为任一所述环形缓冲区;
若是,则将当前环形缓冲区中的所述待写入数据拷贝到所述数据存储器中存储,并清空当前环形缓冲区中已拷贝的所述待写入数据。
本发明还提供了一种数据写入装置,包括:
数据接收模块,用于获取待写入数据;按照字节寻址,将所述待写入数据写入到持久内存设备的环形缓冲区;其中,所述持久内存设备的工作模式为应用直接访问模式;
数据存储模块,用于将所述环形缓冲区中的所述待写入数据存储到数据存储器中。
本发明还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述所述的数据写入方法的步骤。
本发明还提供了一种数据写入系统,包括:主节点设备和与所述主节点设备连接的同步节点设备;其中,所述主节点设备和所述同步节点设备均如上述所述的电子设备。
此外,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的数据写入方法的步骤。
本发明所提供的一种数据写入方法,包括:获取待写入数据;按照字节寻址,将待写入数据写入到持久内存设备的环形缓冲区;其中,持久内存设备的工作模式为应用直接访问模式;将环形缓冲区中的待写入数据存储到数据存储器中;
可见,本发明通过按照字节寻址,将待写入数据写入到持久内存设备的环形缓冲区,利用持久内存设备提供的数倍于传统的数据存储器的写入速度和带宽,提高了数据的写入速度,降低了故障时数据丢失的可能性;并且利用持久内存设备中的环形缓冲区对待写入数据进行中转存储,能够源源不断的写入待写入数据,在提升数据持久化速度的同时降低了技术使用成本,实现了“削峰填谷”的技术效果。此外,本发明还提供了一种数据写入装置、系统、电子设备及计算机可读存储介质,同样具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的一种数据写入方法的流程图;
图2为本发明实施例所提供的另一种数据写入方法的远程同步示意图;
图3为现有技术中的数据写入方法的流程示意图;
图4为本发明实施例所提供的一种数据写入系统的结构示意图;
图5为本发明实施例所提供的另一种数据写入方法的环形缓冲区的结构示意图;
图6为本发明实施例所提供的一种数据写入装置的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例所提供的一种数据写入方法的流程图。该方法可以包括:
步骤101:获取待写入数据。
其中,本步骤中的待写入数据可以为需要写入存储到电子设备中的数据。对于本实施例中待写入数据的具体内容,可以由设计人员根据使用场景和用户需求自行设置,如电子设备为主节点设备时,待写入数据可以为请求写入到主节点设备中存储的数据;电子设备为同步节点设备时,待写入数据可以为需要同步写入到同步节点设备中存储的数据。
可以理解的是,本实施例所提供的数据写入方法可以应用于主节点设备,也就是说,作为主节点设备的电子设备中的处理器可以执行本实施例所提供的方法对需要写入到主节点设备中的数据(即待写入数据)进行写入存储;本实施例所提供的数据写入方法也可以应用于主节点设备对应的同步节点设备(即从节点设备),也就是说,作为同步节点设备的电子设备中的处理器可以执行本实施例所提供的方法对写入到主节点设备中的数据(即待写入数据)进行同步存储,实现对主节点设备中存储内容的数据同步和容灾功能。本实施例对此不做任何限制。
具体的,对于本步骤中电子设备的处理器获取待写入数据的具体方式,可以由设计人员根据使用场景和用户需求自行设置,如电子设备为主节点设备时,主节点设备的处理器可以获取数据写入请求对应的待写入数据,即主节点设备可以接收数据写入请求,获取请求写入的数据(即待写入数据);进一步的,主节点设备可以在获取待写入数据后,将待写入数据发送到同步节点设备,以使同步节点设备能够对写入到主节点设备的数据进行存储,实现跨主机的数据同步以及容灾备份。电子设备为同步节点设备时,同步节点设备的处理器可以获取主节点设备接收的待写入数据,从而对写入主节点设备的待写入数据进行存储,实现主机的数据同步以及容灾备份。本实施例对此不做任何限制。
进一步的,电子设备为同步节点设备时,本步骤中同步节点设备的处理器可以通过RDMA(Remote Direct Memory Access,远程直接数据存取)网络获取主节点设备接收的待写入数据,即同步节点设备可以与相应的主节点设备处于RDMA网络内,使得同步节点设备能够利用RDMA网卡通过RDMA网络快速拷贝主节点设备接收的需要写入的数据(即待写入数据),将主节点设备中的存储的数据几乎无延迟地同步到同步节点设备,如与作为主节点设备的服务器在同一机房的另一服务器。
对应的,主节点设备和同步节点设备中均可以插入持久内存设备,并且主节点设备和同步节点设备之间配置超低延迟的网络(RDMA网络),以利用持久内存设备作为存储介质和键值存储引擎,利用高效的 RDMA驱动的网络传输作为网络层,使得主节点设备和同步节点设备上的持久内存设备能够作为一个副本池集。如图2所示,主机1的持久内存设备(持久内存1)和主机2的持久内存设备(持久内存2)可以构成一个副本池集,当作为主节点设备的主机1中的持久内存1中被写入一份数据(即待写入数据)后,主机1可以利用远程复制服务(如使用远程持久内存后台服务rpmemd工具)通过RDMA网络立即将数据高速传输到作为同步节点设备的主机2,主机2可以利用远程复制服务立即调用持久内存驱动将通过RDMA网络接收的数据写入到持久内存2中完成数据拷贝,以基于持久内存设备的高带宽和RDMA网络的低延迟在极短的时间内完成。
步骤102:按照字节寻址,将待写入数据写入到持久内存设备的环形缓冲区;其中,持久内存设备的工作模式为应用直接访问模式。
其中,本步骤中的持久内存设备可以为利用持久内存(PMem)进行数据存储的设备。本步骤中持久内存设备的环形缓冲区可以为持久内存设备中创建的一种环形缓冲区的数据结构,如环形双链表。本实施例中利用采用AD模式(App Direct Mode,即应用直接访问模式)持久内存设备对待写入数据进行中转存储,使处理器可以按照字节寻址将待写入数据写入到采用AD模式的持久内存,由于持久内存的写入速度是传统存储设备的文件I/O速度几倍到几十倍,能够极大地提升了数据写入的效率,如表1所示,持久内存设备的写入效率可以达到机械硬盘的上百倍;其中,IOPS可以为每秒完成的写入操作的次数。
表1 持久内存设备与传统存储设备的写入效率比较表
测试项目 | 持久内存-IOPS | 机械硬盘-IOPS |
4k顺序写 | 2145000 | 518 |
4k随机写 | 778000 | 351 |
512k顺序写 | 2040 | 19 |
512k随机写 | 1829 | 8 |
并且,由于存储待写入数据的缓冲区是环形的,数据写满后会覆盖最早写入的数据,能够在数据写入速度的同时降低所占用的持久内存设备的存储空间,降低成本。
具体的,对于电子设备的处理器按照字节寻址,将待写入数据写入到持久内存设备的环形缓冲区的具体方式,可以由设计人员根据实用场景和用户需求自行设置,如处理器可以将待写入数据写入到持久内存设备的一个环形缓冲区,即本实施例中可以仅设置一个用于存放待写入数据的环形缓冲区;处理器也可以将待写入数据写入到持久内存设备的多个环形缓冲区,即本实施例中可以设置多个用于存放待写入数据的环形缓冲区。本实施例对此不做任何限制。
可以理解的是,传统的数据写入方案采用文件系统标准API(应用程序接口)的方式写入数据,不能利用内核的直接访问(DAX)特性,应用程序无法直接寻址,并且写入流程涉及到多次内存缓冲区拷贝操作,速度相对较慢,如图3所示,一般需要经过内存缓冲区写入、文件系统I/O(输入/输出)中转和数据存储设备存储这三个步骤才能保证数据持久化;而本实施例中将持久内存设备作为字符设备,或将持久内存设备挂载为文件系统的块设备,由于持久内存设备的工作模式应用直接访问模式,运行应用程序的处理器可以按字节寻址,将待写入数据写入到环形缓冲区便可完成待写入数据的数据持久化,宣告数据写入成功。例如,应用程序如果要更新64字节的内容,按照传统的数据写入方案,处理器需要将包含这些64字节的整个存储块读取到内存缓冲区,更新64字节,然后在数据存储设备(如机械硬盘)写入整个存储块,以对其进行持久化。这是因为传统的数据写入方案中数据存储只能使用块IO完成,通常一次访问4k字节,所以必须先读取4k再写入4k,才能完成64字节内容的更新任务;而本实施例中利用持久内存设备,同样是更新64字节的内容,只需直接在持久内存设备写入64字节即可。
如图4所示,电子设备为主节点设备时,主节点设备可以利用自身的持久内存设备的环形缓冲区(持久内存环形缓冲区1)对接收的待写入数据进行存储;电子设备为同步节点设备时,与主节点设备处于RDMA网络内的每个同步节点设备(同步节点设备1、2或3)均可以通过RDMA网络拷贝主节点设备接收的待写入数据,并利用自身的持久内存设备的环形缓冲区(持久内存环形缓冲区2、3或4)进行中转存储。
需要说明的是,本实施例中并不限定持久内存设备中的环形缓冲区的具体结构,如环形缓冲区可以采用双链表结构,即环形缓冲区可以为环形双链表;例如,环形缓冲区可以包括用于存储数据的数据单元,每个数据单元可以包括指向前一个数据单元的前指针和指向后一个数据单元的后指针,即环形双链表中最后一个数据单元中的后指针可以指向第一个数据单元,环形双链表中第一个数据单元中的前指针可以指向最后一个数据单元。如图5所示,环形缓冲区还可以包括链表开头的根节点,根节点可以包括指向第一个数据单元的头指针和指向最后一个数据单元的尾指针;也就是说,写入环形缓冲区的数据可以从根节点的头指针指向的第一数据单元开始存放数据,然后存放第二个数据单元,然后是第三个依次类推,每个数据单元记录着数据本身、以及相邻的前后数据单元的位置;当写入最后一个数据单元后,又可以回到第一个数据单元继续写入。如图5所示,环形缓冲区中的根节点还可以包括写入数据时的同步锁,以避免写入冲突;环形缓冲区中的根节点还可以包括当前所有数据单元总的数据量大小;环形缓冲区中的数据单元还可以包括记录本数据单元的数据大小和指针等的元数据,以及用于作为实际存储的数据一个唯一名称的键值,以方便后续的数据读取。
对应的,环形缓冲区具体为环形双链表时,本步骤中处理器可以将待写入数据写入到当前数据单元;在当前数据单元写满后,根据当前数据单元中的后指针,将待写入数据写入到下一数据单元;其中,当前数据单元为环形双链表中的任一数据单元,下一数据单元为当前数据单元中的后指针所指向的数据单元(即后一数据单元),环形双链表中最后一个数据单元中的后指针指向第一个数据单元。
具体的,当前数据单元可以为当前需要写入待写入数据的数据单元;下一数据单元可以为当前数据单元写满后下一个需要写入待写入数据的数据单元,即当前数据单元中的后指针所指向的数据单元。也就是说,处理器将待写入数据写入到当前数据单元后,若当前数据单元写满后还有剩余的待写入数据要写入到环形缓冲区,则可以将剩余的待写入数据继续写入到下一数据单元,直至待写入数据完全写入到环形缓冲区。相应的,本实施例并不限定开始写入当前数据单元时,当前数据单元的具体确定方式;如处理器可以根据记录的已写入位置,确定当前数据单元;例如处理器可以记录环形缓冲区中的已写入位置和已清空位置,以便环形缓冲区的循环写入。
步骤103:将环形缓冲区中的待写入数据存储到数据存储器中。
其中,本步骤中的数据存储器可以为电子设备中用于对环形缓冲区中的数据(即待写入数据)进行存储的大容量的存储设备,如传统的机械硬盘和固态硬盘等非易失性设备和/或网络存储器。也就是说,本实施例中利用写入速度和带宽更高的持久内存设备进行数据中转,提高数据写入速度,利用价格更低的数据存储器对持久内存设备中的数据进行数据归档,降低配置成本。
可以理解的是,本步骤中电子设备的处理器可以将持久内存设备的环形缓冲区中的数据(即待写入数据)拷贝到数据存储器中,完成数据归档,使环形缓冲区源源不断的写入待写入数据能够及时归档到数据存储器中存储。
具体的,对于本步骤中处理器将环形缓冲区中的待写入数据存储到数据存储器中的具体方式,可以由设计人员根据实用场景和用户需求自行设置,如处理器可以直接按预设时间间隔将各环形缓冲区中的待写入数据批量存储到数据存储器中。处理器也可以根据环形缓冲区中的数据写入量,将环形缓冲区中的待写入数据批量存储到数据存储器中;例如处理器可以监测全部环形缓冲区中写入的数据量,在数据量达到预设数据大小时,对全部环形缓冲区中的数据进行归档;处理器也可以监测各环形缓冲区各自写入的数据量(即存储数据量),对写入的数据量达到阈值的环形缓冲区中的数据(即待写入数据)进行归档。
也就是说,本步骤中处理器判断当前环形缓冲区的存储数据量是否达到阈值;若是,则将当前环形缓冲区中的待写入数据拷贝到数据存储器中存储;若否,则继续监测各环形缓冲区的存储数据量。例如本实施例中可以按照每个环形缓冲区的容量的预设百分比来设置阈值,如容量的50%对应的数据量,使得处理器可以在当前环形缓冲区的存储数据量达到当前环形缓冲区容量的预设百分比(如50%)时,将当前环形缓冲区中的待写入数据拷贝到数据存储器。
进一步的,为了提高环形缓冲区的数据写入速度,本实施例中处理器在将环形缓冲区中的数据拷贝到数据存储器的过程中或之后,可以清空环形缓冲区中的已存储数据;其中,已存储数据为存储到数据存储器中的待写入数据,即环形缓冲区中已拷贝到数据存储器的数据。
进一步的,处理器在将环形缓冲区中的待写入数据存储到数据存储器中的过程中,可以对待写入数据中的小文件合并存储到存储器,以提升数据存储效率,对Hadoop(一种分布式系统基础架构)等分布式存储增益明显。也就是说,处理器可以在将环形缓冲区中的待写入数据存储到数据存储器中的过程中,对环形缓冲区中的小文件进行聚合,获取聚合文件;将聚合文件存储到数据存储器中;其中,小文件可以为待写入数据中文件大小小于阈值的文件。
具体的,本实施例中应用程序可以使用Java(一门面向对象的编程语言)本地接口的方式来关联调用底层的持久内存设备的编程函数,然后使用事务性持久内存分配器,在文件系统层面以内存映射文件的形式提供持久内存。其中,处理器可以利用libpmemobj(一种编程库)的编程库中的函数可来分配管理持久内存设备的空间、写入或者清除数据;例如,利用pmemobj_list_insert_new函数用来分配一个新的空间,利用pmemobj_list_insert函数在指定位置插入数据,利用pmemobj_list_remove函数可以删除指定的数据。优选地,处理器也可以利用更为友好的键值API编程库pmemkv(一种编程库)来实现类似的功能,本实施例对此不做任何限制。
本实施例中,本发明实施例通过按照字节寻址,将待写入数据写入到持久内存设备的环形缓冲区,利用持久内存设备提供的数倍于传统的数据存储器的写入速度和带宽,提高了数据的写入速度,降低了故障时数据丢失的可能性;并且利用持久内存设备中的环形缓冲区对待写入数据进行中转存储,能够源源不断的写入待写入数据,在提升数据持久化速度的同时降低了技术使用成本,实现了“削峰填谷”的技术效果。
相应于上面的方法实施例,本发明实施例还提供了一种数据写入装置,下文描述的数据写入装置与上文描述的数据写入方法可相互对应参照。
请参考图6,图6为本发明实施例所提供的一种数据写入装置的结构框图。该装置可以包括:
数据接收模块10,用于获取待写入数据;按照字节寻址,将所述待写入数据写入到持久内存设备的环形缓冲区;其中,所述持久内存设备的工作模式为应用直接访问模式;
数据存储模块20,用于将环形缓冲区中的待写入数据存储到数据存储器中。
可选的,所述环形缓冲区为环形双链表时,数据接收模块10可以包括:
持久写入子模块,用于将所述待写入数据写入到当前数据单元;其中,当前数据单元为所述环形双链表中的任一数据单元;
更换写入子模块,用于在当前数据单元写满后,根据当前数据单元中的后指针,将所述待写入数据写入到下一数据单元;其中,下一数据单元为当前数据单元中的后指针所指向的数据单元,所述环形双链表中最后一个数据单元中的后指针指向第一个数据单元。
可选的,数据接收模块10可以包括:
请求接收子模块,用于获取数据写入请求对应的待写入数据,并向同步节点设备发送待写入数据。
可选的,数据接收模块10可以包括:
拷贝接收子模块,用于通过RDMA网络获取主节点设备接收的待写入数据。
可选的,拷贝接收子模块可以具体用于利用RDMA网卡接收所述主节点设备通过RDMA网络发送的所述待写入数据。
可选的,数据存储模块20可以包括:
聚合子模块,用于对所述环形缓冲区中的小文件进行聚合,获取聚合文件;将所述聚合文件存储到数据存储器中;其中,所述小文件为所述待写入数据中文件大小小于阈值的文件。
可选的,数据存储模块20可以具体用于根据环形缓冲区的数据写入量,将环形缓冲区中的待写入数据存储到数据存储器中。
可选的,数据存储模块20可以包括:
判断子模块,用于判断当前环形缓冲区的存储数据量是否达到阈值;其中,当前环形缓冲区为任一环形缓冲区;
拷贝子模块,用于若达到阈值,则将当前环形缓冲区中的待写入数据拷贝到数据存储器,并清空当前环形缓冲区中已拷贝的待写入数据。
本实施例中,本发明实施例通过数据接收模块10按照字节寻址,将待写入数据写入到持久内存设备的环形缓冲区,利用持久内存设备提供的数倍于传统的数据存储器的写入速度和带宽,提高了数据的写入速度,降低了故障时数据丢失的可能性;并且利用持久内存设备中的环形缓冲区对待写入数据进行中转存储,能够源源不断的写入待写入数据,在提升数据持久化速度的同时降低了技术使用成本,实现了“削峰填谷”的技术效果。
相应于上面的方法实施例,本发明实施例还提供了一种电子设备,下文描述的电子设备与上文描述的数据写入方法可相互对应参照。
本发明实施例还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上述实施例所提供的数据写入方法的步骤。
其中,本实施例所提供的电子设备可以具体为服务器,如作为主节点设备的服务器或作为同步节点设备的服务器。
相应于上面的方法实施例,本发明实施例还提供了一种数据写入系统,下文描述的数据写入系统与上文描述的数据写入方法可相互对应参照。
本发明实施例还提供了一种数据写入系统,包括:主节点设备和与主节点设备连接的同步节点设备;其中,主节点设备和同步节点设备均如上述实施例所提供的电子设备。
也就是说,本实施例所提供的系统中主节点设备和同步节点设备均可以利用各自持久内存设备中的环形缓冲区进行数据中转,完成数据写入;并且同步节点设备能够对主节点设备写入的数据进行高效的数据同步,提升分布式存储的写入效率,进一步降低服务器或机房故障时的数据丢失可能性,具有一定的容灾作用。
此外,本发明还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述实施例所提供的数据写入方法的步骤。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
以上对本发明所提供的一种数据写入方法、装置、系统、电子设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (12)
1.一种数据写入方法,其特征在于,包括:
获取待写入数据;
按照字节寻址,将所述待写入数据写入到持久内存设备的环形缓冲区;其中,所述持久内存设备的工作模式为应用直接访问模式;
将所述环形缓冲区中的所述待写入数据存储到数据存储器中。
2.根据权利要求1所述的数据写入方法,其特征在于,所述环形缓冲区为环形双链表时,按照字节寻址,将所述待写入数据写入到持久内存设备的环形缓冲区,包括:
将所述待写入数据写入到当前数据单元;其中,当前数据单元为所述环形双链表中的任一数据单元;
在当前数据单元写满后,根据当前数据单元中的后指针,将所述待写入数据写入到下一数据单元;其中,下一数据单元为当前数据单元中的后指针所指向的数据单元,所述环形双链表中最后一个数据单元中的后指针指向第一个数据单元。
3.根据权利要求1所述的数据写入方法,其特征在于,所述获取待写入数据,包括:
主节点设备获取数据写入请求对应的待写入数据,并向同步节点设备发送所述待写入数据。
4.根据权利要求1所述的数据写入方法,其特征在于,所述获取待写入数据,包括:
同步节点设备通过RDMA网络拷贝主节点设备接收的所述待写入数据。
5.根据权利要求4所述的数据写入方法,其特征在于,所述同步节点设备通过RDMA网络拷贝主节点设备接收的所述待写入数据,包括:
所述同步节点设备利用RDMA网卡接收所述主节点设备通过RDMA网络发送的所述待写入数据。
6.根据权利要求1所述的数据写入方法,其特征在于,所述将所述环形缓冲区中的所述待写入数据存储到数据存储器中,包括:
对所述环形缓冲区中的小文件进行聚合,获取聚合文件;其中,所述小文件为所述待写入数据中文件大小小于阈值的文件;
将所述聚合文件存储到数据存储器中。
7.根据权利要求1至6任一项所述的数据写入方法,其特征在于,所述将所述环形缓冲区中的所述待写入数据存储到数据存储器中,包括:
根据所述环形缓冲区的数据写入量,将所述环形缓冲区中的所述待写入数据存储到所述数据存储器中,并清空所述环形缓冲区中的已存储数据;其中,所述已存储数据为存储到所述数据存储器中的所述待写入数据。
8.根据权利要求7所述的数据写入方法,其特征在于,所述根据所述环形缓冲区的数据写入量,将所述环形缓冲区中的所述待写入数据存储到所述数据存储器中,并清空所述环形缓冲区中的已存储数据,包括:
判断当前环形缓冲区的存储数据量是否达到阈值;其中,当前环形缓冲区为任一所述环形缓冲区;
若是,则将当前环形缓冲区中的所述待写入数据拷贝到所述数据存储器中存储,并清空当前环形缓冲区中已拷贝的所述待写入数据。
9.一种数据写入装置,其特征在于,包括:
数据接收模块,用于获取待写入数据;按照字节寻址,将所述待写入数据写入到持久内存设备的环形缓冲区;其中,所述持久内存设备的工作模式为应用直接访问模式;
数据存储模块,用于将所述环形缓冲区中的所述待写入数据存储到数据存储器中。
10.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至8任一项所述的数据写入方法的步骤。
11.一种数据写入系统,其特征在于,包括:主节点设备和与所述主节点设备连接的同步节点设备;其中,所述主节点设备和所述同步节点设备均如权利要求10所述的电子设备。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的数据写入方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110905582.8A CN113360098A (zh) | 2021-08-09 | 2021-08-09 | 一种数据写入方法、装置、系统、电子设备及存储介质 |
PCT/CN2022/078185 WO2023015866A1 (zh) | 2021-08-09 | 2022-02-28 | 一种数据写入方法、装置、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110905582.8A CN113360098A (zh) | 2021-08-09 | 2021-08-09 | 一种数据写入方法、装置、系统、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113360098A true CN113360098A (zh) | 2021-09-07 |
Family
ID=77540728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110905582.8A Pending CN113360098A (zh) | 2021-08-09 | 2021-08-09 | 一种数据写入方法、装置、系统、电子设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113360098A (zh) |
WO (1) | WO2023015866A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023015866A1 (zh) * | 2021-08-09 | 2023-02-16 | 苏州浪潮智能科技有限公司 | 一种数据写入方法、装置、系统、电子设备及存储介质 |
CN115933997A (zh) * | 2023-01-30 | 2023-04-07 | 南京芯驰半导体科技有限公司 | 数据访问方法、相关设备及存储介质 |
CN117806819A (zh) * | 2023-12-20 | 2024-04-02 | 中科驭数(北京)科技有限公司 | 内存管理方法、装置、设备及计算机可读存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117407338B (zh) * | 2023-12-15 | 2024-03-19 | 北京壁仞科技开发有限公司 | 用于数据传输同步的系统、方法及计算设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110691062A (zh) * | 2018-07-06 | 2020-01-14 | 浙江大学 | 一种数据写入方法、装置及其设备 |
CN111400268A (zh) * | 2020-03-13 | 2020-07-10 | 清华大学 | 一种分布式持久性内存事务系统的日志管理方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100553348B1 (ko) * | 2004-05-31 | 2006-02-20 | 한국전자통신연구원 | 피엠이엠 제어기를 이용한 고속 스트리밍 데이터 전송장치 및 방법 |
CN105677258A (zh) * | 2016-02-23 | 2016-06-15 | 浪潮(北京)电子信息产业有限公司 | 一种日志数据管理方法及系统 |
CN111221922A (zh) * | 2019-12-31 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种RocksDB数据库数据写入方法及RocksDB数据库 |
CN111352589B (zh) * | 2020-02-24 | 2021-12-10 | 苏州浪潮智能科技有限公司 | 一种分布式存储的方法、装置、设备及可读介质 |
CN111475114A (zh) * | 2020-04-03 | 2020-07-31 | 苏州浪潮智能科技有限公司 | 一种数据下刷系统、方法及计算机可读存储介质 |
CN112083881B (zh) * | 2020-08-24 | 2022-10-18 | 云南财经大学 | 一种基于持久化内存的一体化天文数据采集与存储系统 |
CN113360098A (zh) * | 2021-08-09 | 2021-09-07 | 苏州浪潮智能科技有限公司 | 一种数据写入方法、装置、系统、电子设备及存储介质 |
-
2021
- 2021-08-09 CN CN202110905582.8A patent/CN113360098A/zh active Pending
-
2022
- 2022-02-28 WO PCT/CN2022/078185 patent/WO2023015866A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110691062A (zh) * | 2018-07-06 | 2020-01-14 | 浙江大学 | 一种数据写入方法、装置及其设备 |
CN111400268A (zh) * | 2020-03-13 | 2020-07-10 | 清华大学 | 一种分布式持久性内存事务系统的日志管理方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023015866A1 (zh) * | 2021-08-09 | 2023-02-16 | 苏州浪潮智能科技有限公司 | 一种数据写入方法、装置、系统、电子设备及存储介质 |
CN115933997A (zh) * | 2023-01-30 | 2023-04-07 | 南京芯驰半导体科技有限公司 | 数据访问方法、相关设备及存储介质 |
CN117806819A (zh) * | 2023-12-20 | 2024-04-02 | 中科驭数(北京)科技有限公司 | 内存管理方法、装置、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023015866A1 (zh) | 2023-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3726364B1 (en) | Data write-in method and solid-state drive array | |
CN113360098A (zh) | 一种数据写入方法、装置、系统、电子设备及存储介质 | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
US9307024B2 (en) | Efficient storage of small random changes to data on disk | |
CN108089825B (zh) | 一种基于分布式集群的存储系统 | |
US12038908B2 (en) | Blockchain data storage method, system, device, and readable storage medium | |
US20220350779A1 (en) | File system cloning method and apparatus | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
US11899983B2 (en) | Semiconductor storage device and control method thereof | |
CN109902034A (zh) | 快照创建方法、装置、电子设备及机器可读存储介质 | |
CN112799595A (zh) | 数据处理方法、设备及存储介质 | |
US20240283463A1 (en) | Data compression method and apparatus | |
CN113806300A (zh) | 数据存储方法、系统、装置、设备及存储介质 | |
WO2014153931A1 (zh) | 文件存储方法、装置、访问客户端及元数据服务器系统 | |
CN116755625A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
US20210224002A1 (en) | Storage control apparatus and storage medium | |
US6532513B1 (en) | Information recording and reproduction apparatus | |
US11366609B2 (en) | Technique for encoding deferred reference count increments and decrements | |
CN112463073A (zh) | 一种对象存储分布式配额方法、系统、设备和存储介质 | |
EP4120060A1 (en) | Method and apparatus of storing data,and method and apparatus of reading data | |
CN108958657B (zh) | 一种数据存储方法、存储设备及存储系统 | |
JP4394467B2 (ja) | ストレージシステム、サーバ装置及び先行コピーデータ生成方法 | |
CN114490540B (zh) | 数据存储方法、介质、装置和计算设备 | |
EP4307129A1 (en) | Method for writing data into solid-state hard disk | |
US11436105B2 (en) | Data processing method and memory controller utilizing the same |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210907 |