CN116610598A - 一种数据存储系统、数据存储方法、装置及相关设备 - Google Patents
一种数据存储系统、数据存储方法、装置及相关设备 Download PDFInfo
- Publication number
- CN116610598A CN116610598A CN202210118694.3A CN202210118694A CN116610598A CN 116610598 A CN116610598 A CN 116610598A CN 202210118694 A CN202210118694 A CN 202210118694A CN 116610598 A CN116610598 A CN 116610598A
- Authority
- CN
- China
- Prior art keywords
- target data
- data
- cache
- cache area
- storage system
- 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
- 238000013500 data storage Methods 0.000 title claims abstract description 121
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000012545 processing Methods 0.000 claims abstract description 53
- 230000002085 persistent effect Effects 0.000 claims abstract description 31
- 230000004044 response Effects 0.000 claims abstract description 27
- 230000015654 memory Effects 0.000 claims description 80
- 238000004590 computer program Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 11
- 230000002045 lasting effect Effects 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 125000004122 cyclic group Chemical group 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供一种数据存储系统,该数据存储系统包括第一设备以及第二设备,并且,第一设备包括第一缓存区域,第二设备包括第二缓存区域;其中,第一设备用于接收处理请求,并基于RDMA将数据处理请求中的目标数据写入第二缓存区域,将目标数据写入第一缓存区域,其中,在目标数据成功写入第一缓存区域以及第二缓存区域之后,该数据处理请求在数据存储系统中完成处理;第二设备用于将写入第二缓存区域中的目标数据进行持久化存储。如此,数据存储系统存储该目标数据的响应时延较低,并且利用双份缓存可以避免目标数据发生丢失,以此可以提高数据存储系统存储数据的可靠性。此外,本申请还公开了相应的数据存储方法、装置及相关设备。
Description
技术领域
本申请涉及数据存储技术领域,尤其涉及一种数据存储系统、数据存储方法、装置及相关设备。
背景技术
数据存储系统,是指对用于对存储设备的存储空间进行组织和分配,并负责将数据以进行存储以及对该数据进行检索的系统。实际应用的部分场景中,数据存储系统可以采用多设备模式提供数据读写服务。具体的,数据存储系统中的其中一个设备可以对外提供数据访问接口,并通过该数据访问接口接收需要进行存储的新数据。通常情况下,该设备将新数据缓存至本地后,向数据发送方反馈数据写入成功的应答消息(acknowledgement,ack),后续再将本地缓存中的新数据写入数据存储系统中的其它设备进行持久化存储,以此减小存储数据系统存储数据的响应时延。
但是,当对外提供数据访问接口的设备发生故障或者该设备的缓存故障时,本地缓存中存储的数据因为没有及时进行持久化存储而发生丢失,这就降低了数据存储系统的可靠性。
发明内容
提供一种数据存储系统、数据存储方法、装置、计算设备、存储介质以及计算机程序产品,以使得数据存储系统在具有较小响应时延的同时,数据存储的可靠性也较高。
第一方面,本发明实施例提供一种数据存储系统,该数据存储系统包括第一设备以及第二设备,并且,第一设备包括第一缓存区域,第二设备包括第二缓存区域。其中,第一设备用于接收处理请求,该数据处理请求例如可以用于请求写入目标数据等,可以由其它设备或者该第一设备上的应用程序发送给该第一设备,并且,第一设备能够基于RDMA将数据处理请求中的目标数据写入第二缓存区域,将该目标数据写入本地的第一缓存区域;第二设备用于将写入第二缓存区域中的目标数据进行持久化存储。
在第一设备将目标数据写入本地的第一缓存区域,并通过RDMA技术将目标数据也写入第二设备的第二缓存区域之后,该数据处理请求即为处理完成。由于RDMA不需要CPU参与,并且本方案并不需要第二设备把目标数据进行持久化存储后才认为该数据处理请求完成处理,这使得数据存储系统存储该目标数据的响应时延较低,延时与仅把数据存储到第一设备的缓存区域接近。同时,目标数据分别存储于第一设备以及第二设备中的缓存区域,这使得其中一个设备的缓存发生故障时,数据存储系统也能通过另一个设备的缓存来避免该目标数据发生丢失,以此可以提高数据存储系统存储数据的可靠性。因此,第一方面提供了一种兼顾延时低并且提高数据可靠性的数据存储系统。
在一种可能的实施方式中,第一设备还用于在目标数据被写入第一缓存区域以及第二缓存区域之后,并且在第二设备将第二缓存区域中的目标数据进行持久化存储之前,生成数据处理请求成功的响应消息。如此,在目标数据成功写入两个缓存区域后,存储系统视为数据处理请求执行完毕,并且可以生成数据处理请求的响应消息,以便利用该响应消息向发送数据处理请求的应用或者其它设备反馈该目标数据完成存储,这使得数据存储系统存储该目标数据的响应时延较低,而数据存储系统可以在反馈该响应消息之后在对该目标数据进行持久化存储。
在一种可能的实施方式中,第一设备还用于在确定目标数据被持久化存储后,淘汰第一缓存区域中的目标数据。如此,可以在保证目标数据被持久化存储的情况下,释放该目标数据在第一缓存区域中所占用的存储空间,以便后续第一设备可以利用被释放的存储空间存储其它新写入的数据,实现第一缓存区域的存储资源的循环利用。
在一种可能的实施方式中,第二设备还用于在确定目标数据被持久化存储后,淘汰第二缓存区域中的目标数据。如此,可以释放该目标数据在第二缓存区域中所占用的存储空间,以便后续第一设备其它数据缓存至该被释放的存储空间,实现第二缓存区域的存储资源的循环利用。
在一种可能的实施方式中,第一设备在将目标数据写入第二缓存区域时,具体用于生成包括目标数据的WAL,再基于RDMA技术将该WAL写入第二缓存区域。这样,第二设备后续可以通过回放日志的方式,将WAL中的目标数据进行持久化存储。
在一种可能的实施方式中,第一设备具体用于将包括目标数据的WAL写入第一缓存区域中。这样,当后续第一设备从本地的第一缓存区域中读取目标数据时,可以通过回放日志的方式根据WAL获取目标数据。可选地,第一设备也可以是直接将目标数据写入第一缓存区域中。
在一种可能的实施方式中,第一设备在将目标数据写入第一缓存区域,具体用于生成键值对,该键值对中的键为目标数据的标识,并且,该键值对中的值为目标数据,从而第一设备可以将该键值对写入第一缓存区域。如此,第一设备可以基于该目标数据在第一缓存区域中生成索引,从而当需要读取该目标数据时,第一设备可以从本地的第一缓存区域通过遍历该索引快速查找到目标数据。
在一种可能的实施方式中,当目标数据通过键值对写入第一缓存区域时,该键值对中的值还对应于WAL的第一LSN,则,第一设备还用于获取第二设备已回放的WAL对应的第二LSN,并且,当该第一LSN与第二LSN相等时,第一设备可以将该键值对从第一缓存区域中淘汰。如此,第一设备可以利用WAL对应的LSN识别第一缓存区域中的哪些目标数据被持久化存储,并通过释放该目标数据在第一缓存区域中所占用的存储空间,来支持第一设备继续写入其它数据,实现第一缓存区域的存储资源的循环利用;而对于通过LSN 确定尚未完成持久化的数据,可以继续存储至第一缓存区域中,以提高该数据在数据存储系统中进行存储的可靠性。
在一种可能的实施方式中,第一设备还用于接收数据读取请求,该数据读取请求包括目标数据的标识,从而第一设备可以根据该目标数据的标识,从第一缓存区域中查找是否包括目标数据,并且,当第一缓存区域中包括该目标数据时,第一设备可以反馈查找出的目标数据。如此,第一设备可以从本地的缓存区域中快速查找出所要读取的目标数据,可以不用通过远程访问第二设备的方式获取目标数据,从而可以有效提高数据存储系统反馈目标数据的效率。
在一种可能的实施方式中,第一设备还用于当第一缓存区域中不包括目标数据时,如该目标数据因为已经完成持久化存储而从第一缓存区域中淘汰,则第一设备向第二设备请求该目标数据,以便第一设备后续反馈该目标数据。
在一种可能的实施方式中,第一设备具体用于基于单边RDMA技术将目标数据写入第二缓存区域,如此,可以进一步有效降低第一设备向第二设备写入目标数据的时延,从而可以提高数据存储系统存储目标数据的响应效率。可选地,第一设备也可以是通过双边RDMA技术将目标数据写入第二缓存区域。
在一种可能的实施方式中,数据存储系统具体可以是分布式文件系统,其中,该第一设备实现分布式文件系统中的客户端,该第二设备实现分布式文件系统中的服务端,并且在该分布式文件系统中,第二设备将目标数据通过文件格式进行持久化存储。
第二方面,本发明实施例提供一种数据存储方法,该数据存储方法应用于数据存储系统,该数据存储系统包括第一设备以及第二设备,并且,第一设备包括第一缓存区域,第二设备包括第二缓存区域,该方法包括:第一设备接收数据处理请求,该数据处理请求包括目标数据;并且,第一设备基于RDMA将目标数据写入第二缓存区域,将目标数据写入第一缓存区域。
在一种可能的实施方式中,该方法还包括:在所述目标数据被写入所述第一缓存区域以及所述目标数据被写入所述第二缓存区域之后,并且在所述第二设备将所述第二缓存区域中的目标数据进行持久化存储之前,所述第一设备生成所述数据处理请求成功的响应消息。
在一种可能的实施方式中,该方法还包括:在确定目标数据被持久化存储后,第一设备淘汰第一缓存区域中的目标数据。
在一种可能的实施方式中,第一设备基于远程直接内存访问RDMA将目标数据写入第二缓存区域,包括:第一设备生成包括目标数据的WAL;第一设备基于RDMA将WAL写入第二缓存区域。
在一种可能的实施方式中,第一设备将目标数据写入第一缓存区域,包括:第一设备将WAL写入第一缓存区域。
在一种可能的实施方式中,第一设备将目标数据写入第一缓存区域,包括:第一设备生成键值对,键值对中的键为目标数据的标识,键值对中的值为目标数据;第一设备将键值对写入第一缓存区域。
在一种可能的实施方式中,键值对中的值还对应于WAL的第一日志序列号LSN,方法还包括:第一设备获取第二设备已回放的WAL对应的第二LSN;当第一LSN与第二LSN 相等时,第一设备淘汰第一缓存区域中的键值对。
在一种可能的实施方式中,方法还包括:第一设备接收数据读取请求,数据读取请求包括目标数据的标识;第一设备根据目标数据的标识,查找第一缓存区域中是否包括目标数据;当第一缓存区域中包括目标数据时,反馈目标数据。
在一种可能的实施方式中,方法还包括:当第一缓存区域中不包括目标数据时,第一设备向第二设备请求目标数据。
在一种可能的实施方式中,第一设备基于远程直接内存访问RDMA将目标数据写入第二缓存区域,包括:第一设备基于单边RDMA将目标数据写入第二缓存区域。
在一种可能的实施方式中,数据存储系统包括分布式文件系统,第一设备实现分布式文件系统中的客户端,第二设备实现分布式文件系统中的服务端,并且第二设备将目标数据通过文件格式进行持久化存储。
由于第二方面提供的数据存储方法,对应于第一方面提供的数据存储系统,因此,第二方面以及第二方面中各实施方式所具有技术效果,可以参见相应的第一方面以及第一方面中各实施方式所具有的技术效果,在此不做赘述。
第三方面,本发明实施例提供了一种存储设备,该存储设备作为数据存储系统中的第一设备,所述数据存储系统还包括第二设备,所述存储设备包括第一缓存区域以及处理器,其中,第一缓存区域,用于缓存数据;处理器,用于通过运行计算机程序执行以下方法:接收数据处理请求,所述数据处理请求包括目标数据;基于远程直接内存访问RDMA将所述目标数据写入所述第二缓存区域,以便所述第二缓存区域中的目标数据被持久化存储;并将所述目标数据写入所述第一缓存区域。
在一种可能的实施方式中,所述处理器还用于:在所述目标数据被写入所述第一缓存区域以及所述目标数据被写入所述第二缓存区域之后,并且在所述第二缓存区域中的目标数据被持久化存储之前,生成所述数据处理请求成功的响应消息。
在一种可能的实施方式中,所述处理器用于:确定所述目标数据被持久化存储后,淘汰所述第一缓存区域中的目标数据。
在一种可能的实施方式中,所述处理器用于:生成包括目标数据的预写式日志WAL;基于RDMA将所述WAL写入所述第二缓存区域。
在一种可能的实施方式中,所述处理器用于:将所述WAL写入所述第一缓存区域;或者,生成键值对,所述键值对中的键为所述目标数据的标识,所述键值对中的值为所述目标数据,并将所述键值对写入所述第一缓存区域。
在一种可能的实施方式中,所述键值对中的值还对应于所述WAL的第一日志序列号 LSN,所述处理器还用于:获取所述第二设备已回放的WAL对应的第二LSN;当所述第一LSN与所述第二LSN相等时,淘汰所述第一缓存区域中的所述键值对。
在一种可能的实施方式中,所述处理器还用于:接收数据读取请求,所述数据读取请求包括所述目标数据的标识;根据所述目标数据的标识,优先查找所述第一缓存区域中是否包括所述目标数据;当所述第一缓存区域中包括所述目标数据时,反馈所述目标数据;当所述第一缓存区域中不包括所述目标数据时,向所述第二设备请求所述目标数据。
在一种可能的实施方式中,所述处理器用于:基于单边RDMA将所述目标数据写入所述第二缓存区域。
在一种可能的实施方式中,所述数据存储系统包括分布式文件系统,所述第一设备实现所述分布式文件系统中的客户端,所述第二设备实现所述分布式文件系统中的服务端,并且所述第二设备将所述目标数据通过文件格式进行持久化存储。
由于第三方面提供的存储设备,对应于第一方面提供的数据存储系统中的第一设备,因此,第三方面以及第三方面中各实施方式所具有技术效果,可以参见相应的第一方面以及第一方面中各实施方式所具有的技术效果,在此不做赘述。
第四方面,本发明实施例提供一种计算设备,包括:处理器和存储器;该存储器用于存储指令,当该计算设备运行时,该处理器执行该存储器存储的该指令,以使该计算设备执行上述第二方面或第二方面的任一实现方式中第一设备所执行的数据存储方法。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。计算设备还可以包括总线。其中,处理器通过总线连接存储器。其中,存储器可以包括可读存储器以及随机存取存储器。
第五方面,本发明实施例还提供一种可读存储介质,所述可读存储介质中存储有程序或指令,当其在计算机上运行时,使得上述第二方面或第二方面的任一实现方式中第一设备所执行的数据存储方法被执行。
第六方面,本发明实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面或第二方面的任一实现方式中第一设备所执行的数据存储方法。
另外,第二方面至六方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一示例性数据存储系统的结构示意图;
图2为本发明实施例提供的一示例性分布式文件系统的结构示意图;
图3为本发明实施例提供的一种数据存储方法的流程示意图;
图4为本发明实施例提供的一种数据读取方法的流程示意图;
图5为本发明实施例提供的一种计算设备的硬件结构示意图。
具体实施方式
参见图1,为一示例性数据存储系统的结构示意图。如图1所示,数据存储系统100可以包括设备101以及设备102,并且设备101以及设备102之间可以进行数据交互,如通过超文本传输协议(Hypertext Transfer Protocol,HTTP)进行数据通信等。
其中,设备101可以提供文件访问接口,如可移植操作系统接口(portableoperating system interface,POSIX)等,从而与数据存储系统100连接的设备103或者设备101中的应用(application)1011可以通过该文件访问接口,实现在数据存储100中针对文件进行删除、读取、写入、修改等操作。并且,设备101中可以包括缓存区域1,并可以通过该缓存区域1缓存数据。
设备102包括缓存区域2,并且设备102可以通过该缓存区域2缓存数据。进一步地,设备102中还可以包括持久化存储区域,从而设备102可以将缓存区域2中的数据写入持久化存储区域中进行持久化存储。示例性地,缓存区域2可以通过只读内存(read-onlymemory,ROM)、闪存(flash memory)、存储级存储器(storage class memory,SCM)等非易失性存储器(non-volatile memory,NVM)进行实现,或者,缓存区域2也可以是通过随机存取存储器(random-access memory,RAM)等易失性存储器(volatile memory)进行实现,本实施例对此并不进行限定。持久化存储区域,可以是通过硬盘(hard disk drive,HDD) 或者其他不需要电源即可长期存储数据的存储介质进行实现,其中,硬盘可以是磁盘,或者固态硬盘(solid-state drive,SSD)或者SCM盘等。
当设备103或者应用1011向数据存储系统100写入新数据(以下称之为目标数据)时,如果设备101仅将目标数据写入本地的缓存区域1,这虽然能够减小数据存储系统100存储应用1011发送的目标数据的响应时延,但是,当设备101发生故障或者该缓存区域1发生故障时,设备103或者应用1011发送的目标数据可能会发生丢失,这就降低了数据存储系统100存储数据的可靠性。
基于此,本发明实施例提供了一种数据存储方法,旨在使得数据存储系统100具有较小响应时延的同时,提高数据存储的可靠性。具体实现时,对于设备103或者应用1011发送的目标数据,设备101不仅将其写入本地的缓存区域1,还基于RDMA技术将该目标数据写入设备102中的缓存区域2,以使得该目标数据同时在设备101以及设备102的缓存中存储,而设备102后续可以将缓存区域2中的目标数据再进行持久化存储。在设备101将目标数据写入本地的缓存区域1,并通过RDMA技术将其写入设备102的缓存区域之后,数据处理请求即为处理完成。由于RDMA不需要CPU参与,并且可以不用设备102把目标数据进行持久化存储后才认为该数据处理请求完成处理,这使得数据存储系统100存储该目标数据的响应时延较低,其延时可以接近于仅把数据存储到设备101的缓存区域1。同时,目标数据分别存储于设备101以及设备102中的缓存区域,这使得目标数据在设备101侧的缓存发生故障时,数据存储系统100也能通过设备102侧的缓存来避免该目标数据发生丢失,以此可以提高数据存储系统100存储数据的可靠性。如此,数据存储系统100在具有较小响应时延的同时,数据存储的可靠性也较高。
值得注意的是,图1所示的系统架构仅作为一种示例,并不用于限定其具体实现局限于该示例。例如,在其它可能的系统架构中,持久化存储区域也可以是部署于数据存储系统100外部,即设备102可以将缓存区域2中的目标数据远程发送给持久化存储区域进行持久化存储等,本实施例对此并不进行限定。
举例来说,图1所示的数据存储系统,具体可以是如图2所示的分布式文件系统200。如图2所示,该分布式文件系统200包括客户端201以及服务端202。其中,客户端201,可以是分布式文件系统200对外提供的应用程序,可以通过图1中的设备101实现,并且该客户端201所在的设备101中还包括缓存区域1。进一步地,该客户端所在设备101还可以运行有图1所示的应用1011,并且,该应用1011可以通过客户端201提供的文件访问接口实现在分布式文件系统200中针对文件进行创建、删除、读取、写入、修改等操作。
服务端202,可以通过图1中的一个或者多个设备102实现,并且,该一个或者多个设备102上可以集成有存储器,以便通过该存储器为服务端202提供缓存区域2,可以用于高速缓存数据;进一步地,设备102上集成的存储器,还可以为服务端202提供持久化存储区域,可以用于对数据进行持久化存储。具体地,设备102中可以包括多个存储器1,从而该多个存储器1可以构成缓存池;并且,设备102还可以包括多个存储器2,从而该多个存储器2可以构建持久化存储池。示例性地,存储器1例如可以是只读内存(read-only memory, ROM)、闪存(flash memory)、存储级存储器(storage class memory,SCM)等非易失性存储器(non-volatile memory,NVM),或者,存储器1也可以是随机存取存储器(random-accessmemory,RAM)等易失性存储器(volatile memory)。存储器2可以是硬盘(hard disk drive,HDD)或者固态硬盘(solid-state drive,SSD)等可用于持久化存储数据的设备。本实施例中,对于存储器1以及存储器2的具体实现方式并不进行限定。
实际应用时,图1所示的数据存储系统也可以是适用于除图2之外的其它应用场景,本实施例对此并不进行限定。例如,图1所示的系统结构可以适用于集中式存储的应用场景或者分布式存储的应用场景。
其中,在集中式存储应用场景中,可以由一台或多台设备102组成中心节点,数据集中存储于这个中心节点中,并且整个数据存储系统100的所有数据处理业务都集中部署在这个中心节点上。此时,设备102与实现缓存区域2的存储器1之间可以采用盘控分离架构,即设备102与存储器1独立部署,或者,设备102与存储器1之间可以采用盘控一体架构,即设备102可以具有槽位,并通过该槽位将存储器1放置在该设备102中,与该设备102集成部署。
在分布式存储应用场景中,数据存储系统100中的数据可以分散存储在多个独立的存储节点上。此时,设备102可以与存储器1集成部署,使得该设备102同时具有计算能力以及存储能力,并且在该设备102上可以创建虚拟机,或者也可以不创建虚拟机。或者,设备102与实现缓存区域2的存储器1之间可以采用存算分离架构,即设备102与存储器1 独立部署并通过网络进行通信。另外,存储器1中可以包括一种或者多种不同的存储介质,本实施例对此并不进行限定。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合附图对本发明实施例中的各种非限定性实施方式进行示例性说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,基于上述内容所获得的所有其它实施例,都属于本发明保护的范围。
如图3所示,为本发明实施例中一种数据存储方法的流程示意图,该方法可以应用于如图1所示的数据存储系统100中。实际应用时,该方法也可以是应用于其它可适用的数据存储系统中。为便于理解与描述,下面以应用于图1所示的数据存储系统100为例进行示例性说明,该方法具体可以包括:
S301:设备101接收数据处理请求,该数据处理请求包括目标数据。
应用1011/设备103在向数据存储系统100写入目标数据,或者将数据存储系统100中已存储的数据修改为目标数据时,可以生成包括该目标数据的数据处理请求,并通过数据访问接口(如POSIX等)将该数据处理请求发送给设备101。这样,设备101可以对接收到的数据处理请求进行解析,获得数据存储系统100所要存储的目标数据。实际应用时,该数据处理请求中还可以携带有针对该目标数据的操作指示信息,如写入操作、修改操作等,从而设备101可以基于该数据处理请求获得针对该目标数据的操作记录。
S302:设备101将该目标数据写入设备101中的缓存区域1。
S303:设备101基于RDMA将数据处理请求中的目标数据写入设备102中的缓存区域2。
其中,设备101可以先执行步骤S202,再执行步骤S203;或者,设备101可以同时执行步骤S202以及步骤S203;又或者,设备101可以先执行步骤S203再执行步骤S202等,本实施例对此并不进行限定。
设备101在接收到目标数据后,可以将该目标数据写入本地的缓存区域1以及设备102 中的缓存区域2。其中,在将目标数据写入缓存区域2时,设备102可以通过远程直接内存访问(remote direct memory access,RDMA)技术实现数据的直接写入,即通过网络将目标数据直接写入缓存区域2中,可以不用设备102中的操作系统的干预,这不仅可以减小数据写入对于设备102的操作系统性能的影响,而且数据写入缓存区域2的耗时也较短。
由于客户端将目标数据写入缓存区域1以及缓存区域2所需的耗时较短,这使得数据存储系统100缓存该目标数据的响应时延较小。值得注意的是,当设备101成功将目标数据写入缓存区域1以及缓存区域2时,设备101可以向应用1011或者设备103反馈该数据处理请求已完成处理,也即完成对于目标数据的存储。具体地,设备101可以生成数据处理请求成功的响应消息,并将该响应消息发送给应用1011或者设备103,从而数据存储系统100可以在实际对目标数据执行持久化存储之前,即可通知应用1011或者设备102完成对于目标数据的存储。如此,可以有效提高数据存储系统100对于应用1011或者设备103 的响应效率、降低响应时延。实际应用时,数据存储系统100可以在未来的时间段内完成该目标数据的持久化存储。在进一步可能的实施方式中,设备101可以基于单边(one-sided) RDMA技术将目标数据写入缓存区域2,以此可以进一步减少设备101向缓存区域2中写入数据的时延,从而可以进一步减少数据存储系统100响应该数据处理请求的整体时延。
并且,设备101以及设备102的缓存中同时存储有目标数据,这使得当其中任意一方的缓存出现问题时,数据存储系统100均可以利用另一方缓存中的目标数据来避免发生数据丢失,以此可以提高数据存储系统100存储数据的可靠性。
实际应用场景中,设备102可能会支持多个设备101进行数据读写,例如设备102可以支持多个客户端201读写数据等。因此,设备102可以预先为多个不同的设备101确定其对应的缓存区域2,并且,不同设备101对应的缓存区域2不存在重叠。如此,可以避免不同设备101向设备102的缓存中写入数据时发生数据覆盖等问题。作为一种实现示例,设备101在向设备102发送目标数据之前,可以预先向设备102申请缓存空间,如向设备 102发送包括设备101标识的缓存分配请求等,以请求设备102为该设备101分配分配相应的缓存区域2,并将缓存区域2的地址空间反馈给设备101。这样,后续设备101可以基于该地址空间直接将目标数据写入设备102中的缓存区域2。
本实施例中,提供了以下六种在设备101以及设备102中缓存目标数据的实现方式:
在第一种可能的实施方式中,设备101在向本地的缓存区域1中写入目标数据之前,可以预先将该目标数据以及针对该目标数据的操作指示信息写入预写式日志(write-ahead logging,WAL),从而设备101可以将包括该目标数据的WAL写入本地的缓存区域1,并通过双边(two-sided)RDMA技术或者单边RDMA技术,将包括该目标数据的WAL直接写入设备102中的缓存区域2。
在第二种可能的实施方式中,设备101将包括目标数据的WAL写入缓存区域1,并通过RMDA(包括单边RDMA或者双边RDMA)技术直接将该目标数据写入缓存区域2。
在第三种可能的实施方式中,设备101可以直接将目标数据写入本地的缓存区域1,并通过RDMA技术将包括目标数据的WAL写入在向缓存区域2。
在第四种可能的实施方式中,设备101直接将目标数据写入缓存区域1中,并通过RMDA技术直接将该目标数据写入缓存区域2。
在第五种可能的实施方式中,设备101通过RDMA技术直接将目标数据写入缓存区域 2,并根据目标数据生成键值对(key-value),其中,该键值对中的键(key)为目标数据的标识,键值对中的值(value)为目标数据,从而设备101可以该键值对作为数据查询索引并将其写入本地的缓存区域1中,以便后续根据该键值对查询目标数据。实际应用时,针对应用1011发送的多个数据,设备101可以为每个数据分别生成相应的键值对,从而设备 101可以基于多个键值对生成相应的索引并进行保存,如构建树形结构的索引等。这样,当设备101在本地的缓存区域1中保存该键值对时,设备101可以将该键值对添加至该索引中,以实现索引的更新,从而后续设备101可以通过遍历该索引方式查找到应用1011所需读取的数据。
在第六种可能的实施方式中,设备101通过RDMA技术将包括目标数据的WAL写入缓存区域2,并将根据目标数据生成的键值对写入缓存区域1。
值得注意的是,上述在设备101以及设备102中缓存目标数据的实现方式仅作为一些示例性说明,实际应用时,设备101也可以通过其他方式实现目标数据在设备101以及设备102的缓存,本实施例对此并不进行限定。
通常情况下,设备101可以在一段时间段内生成多个WAL,如应用1011在该时间段内连续发送多个数据,或者应用1011的多个进程/线程并行发送多个数据等。在此过程中,设备101可以将该多个WAL逐个写入缓存区域2中,即每生成一个WAL,设备101则将该 WAL写入设备102中的缓存区域2。或者,客户端102也可以是将多个WAL批量写入缓存区域2中,如设备101每次可以向缓存区域2中批量写入10个WAL等,以此可以减少向缓存区域2中写入多个WAL时设备101与设备102之间的通信次数。其中,在批量写入多个WAL时,设备101可以周期性的向设备102的缓存区域2中批量发送多个WAL,如设备101可以将1秒内依次生成的多个WAL批量写入缓存区域2等;或者,当应用1011的多个进程/线程并行发送多个数据时,设备101可以并行生成多个WAL,从而设备101可以将并行生成的多个WAL批量写入设备102。
作为一种实现示例,设备101可以将数据存储系统100内部执行的多个操作封装成单个语义,以此可以进一步减少设备101向设备102发送WAL的数量。具体的,应用1011 下发的操作指令指示对属于用户的所有数据按照预设缩放比例进行数值缩放,则设备101 在接收该操作指令后,可以对该用户的多个数据分别进行缩放操作,也即执行多次缩放操作。此时,设备101可以针对该多个数据所执行的多次缩放操作,生成单个语义级日志,并将该语义级日志写入设备102的缓存区域2中,这相对于针对多次缩放操作分别生成多个日志的方式而言,可以有效减少设备101生成日志的数量,从而可以有效减少设备101 向设备102发送日志的数量。相应的,设备102在该回放该日志时,可以根据该日志中记录的语义回放多个操作。
进一步地,设备101在缓存目标数据之前,还可以根据接收到的数据处理请求,判断针对该目标数据的操作是否为合法操作。当确定针对该目标数据的操作为合法操作时,设备101才执行该操作并在缓存区域1以及缓存区域2中存储该目标数据;而当确定针对该目标数据的操作为非法操作时,设备101可以拒绝执行该操作并拒绝存储该目标数据等。例如,当针对目标数据的操作超出应用1011所具有的操作权限范围时,设备101可以判定该操作不合法,从而设备101拒绝执行该操作以及拒绝存储该目标数据。又例如,当针对该目标数据的操作为创建文件的操作时,若设备101确定根据目标数据所创建的文件名称与其它文件的名称相同时,设备101也可以判定该操作不合法,并拒绝执行创建文件的操作。
实际应用时,设备101在将目标数据写入本地的缓存区域1以及设备102的缓存区域2 之后,可以向的应用1011返回操作成功的反馈结果,以指示应用1011该目标数据已经成功存储至数据存储系统100。如此,对于应用1011而言,数据存储系统100存储目标数据的响应时延较小,满足应用1011的低时延响应的要求。
S304:设备102将缓存区域2中的目标数据进行持久化存储。
通常情况下,缓存区域2中的地址空间小于设备102用于持久化存储数据的地址空间,因此,设备102可以将缓存区域2中存储的数据下刷至持久化存储区域。其中,当缓存区域2中存储的数据为包括目标数据的WAL时,设备102可以通过回放该WAL获得目标数据,并将其写入存储器2中。
在一种可能的实现方式中,设备102可以周期性的扫描各个设备101各自对应的缓存区域2,并且当缓存区域2存在数据时,设备102可以将该数据持久化存储至存储器2中。或者,当缓存区域2中存储的数据的量达到预设阈值时,设备102可以将该缓存区域2中的数据持久化存储至存储器2中,而当缓存区域2中存储的数据的量未达到预设阈值时,设备102在当前扫描周期内可以不对其进行持久化存储,而在后续确定该缓存区域2中的数据量达到该预设阈值时,再将该数据进行持久化存储等。
而在另一种可能的实施方式中,由于缓存区域2中的数据是由设备101写入,因此,设备101可以在向缓存区域2中写入目标数据后,即可通知设备102将缓存区域2中的数据进行持久化存储。或者,设备101可以周期性的通知设备102持久化存储缓存区域2中的数据。其中,当在一个周期中,设备101未向缓存区域2中写入数据时,设备101在该周期内可以无需向设备102发送持久化存储数据的通知。
实际应用时,数据存储系统100也可以是通过其它方式触发设备102对缓存区域2中的数据进行持久化存储,本实施例对此并不进行限定。
可以理解,实际应用场景中缓存区域1以及缓存区域2的数据存储能力有限,难以支持设备101以及设备102存储过多数量的数据,因此,在进一步可能的实施方式中,在目标数据被持久化存储至存储器2后,设备101和/或设备102可以淘汰缓存区域1中的目标数据,以释放该目标数据在缓存区域1中所占用的存储空间。
作为一种实现示例,当缓存区域1中存储有包括目标数据的WAL时,设备101可以在生成WAL时记录该目标数据对应的第一日志序列号(log serial number,LSN)。其中,WAL的LSN通常为单调递增的正整数,即对于依次生成的多个WAL,该多个WAL分别对应的 LSN逐渐增大。当设备102将缓存区域2中的目标数据持久化存储至存储器2后,可以向设备101反馈已回放的WAL对应的第二LSN。这样,设备101可以根据接收到的第二LSN,确定LSN小于该第二LSN的WAL均已完成回放,从而LSN小于该第二LSN的WAL中包括的数据均已写入至存储器2中。此时,设备101可以比较第一LSN与第二LSN之间的大小,并且,当第一LSN等于第二LSN时,表征包括目标数据的WAL已经完成回放,并且目标数据已经被持久化存储至存储器2中,此时,设备101可以淘汰缓存区域中的目标数据,例如可以淘汰包括该目标数据的WAL等,释放该目标数据在缓存区域1中所占用的存储空间,以便支持设备101向该缓存区域1中存储更多其它数据。
实际应用时,缓存区域1中可以存储有应用1011多次写入的数据,并且,设备101在每次存储应用1011写入的数据时均可以生成包括该数据的WAL。这样,设备101可以淘汰LSN小于等于该第二LSN的一个或者多个WAL,而对于LSN大于该第二LSN的WAL,其可以继续存储于缓存区域1中而不被淘汰。
在另一种实现示例中,当目标数据通过键值对的方式存储于缓存区域1而缓存区域2 中存储有包括目标数据的WAL时,该键值对中的值可以对应于该WAL的第一LSN,该第一LSN可以由设备101在生成WAL时记录在本地缓存中。当设备102将缓存区域2中的目标数据持久化存储至存储器2后,可以向设备101反馈已回放的WAL对应的第二LSN。这样,设备101可以通过比较键值对中的值所对应的第一LSN与设备102已回放的WAL 对应的第二LSN之间的大小。当第一LSN与第二LSN相等时,表征目标数据已经被服务端持久化存储至存储器2中,从而设备101可以淘汰存储区域1中的键值对,以释放该键值对在缓存区域1中占用的存储空间。而当第一LSN大于该第二LSN时,表征该目标数据尚未被持久化存储,此时,该键值对可以继续存储于缓存区域1中。
值得注意的是,上述多种实现示例仅作为一种示例性说明,实际应用时,设备101也可以是通过其它方式确定目标数据是否已经被持久化存储,如通过为目标数据添加逐渐增大的时间戳、编号等方式确定是否从缓存区域1中淘汰目标数据等,本实施例对此并不进行限定。
另外,设备102也可以在目标数据被持久化存储之后,对缓存区域2中的目标数据进行淘汰,以回收该目标数据在缓存区域2中所占用的存储空间。例如,当目标数据以WAL形式存储于缓存区域2时,设备102在完成对于WAL的回放并且对目标数据进行持久化存储后,可以将LSN小于上述第二LSN的WAL进行淘汰,并释放该WAL所占用的存储空间,以便利用释放的存储空间继续存储设备101新写入的其它WAL。其中,设备102在淘汰LSN小于上述第二LSN的WAL后,可以将释放的存储空间对应的地址信息反馈给设备 101,以便后续设备101根据该地址信息将新生成的WAL写入被释放的存储空间。
上述实施例是以在设备101以及设备102存储目标数据为例进行示例性说明,通常情况下,应用1011或者设备103还可能会读取数据存储系统100中已存储的目标数据。下面结合图4,以应用1011读取数据存储系统100中存储的目标数据为例,对数据读取过程进行示例性说明。参见图4,示出了一种数据读取方法的流程示意图,该方法具体可以包括:
S401:设备101接收到应用1011发送的数据读取请求,该数据读取请求包括目标数据的标识。
S402:设备101根据目标数据的标识,查找本地的缓存区域1中是否存储有目标数据。若查找到,则继续执行步骤S306;而若查找不到,则继续执行步骤S303。
S403:设备101请求设备102反馈目标数据。
可以理解,由于数据存储系统100在存储目标数据的过程中,会先在设备101的本地缓存区域1中缓存该目标数据。因此,设备101可以优先从本地的缓存区域1中查找该目标数据是否仍然继续存储于本地缓存。这样,如果设备101查找到该目标数据,则设备101 可以直接将缓存区域1中的目标数据反馈给应用1011,以此可以有效降低数据存储系统100响应应用1011的时延。另外,由于设备101的本地缓存区域1存储的数据具有一定的时效性,即数据在缓存区域1中存储一段时间后可能会被设备101淘汰,因此,当设备101从缓存区域1中未查找到该目标数据时,表征该目标数据已经被设备102持久化存储,从而设备101可以向设备102请求该目标数据。
作为一些示例,本实施例提供了以下几种在缓存区域1中查找目标数据的示例性实现方式:
在第一种实现示例中,目标数据直接存储于缓存区域1中,则设备101可以通过遍历缓存区域1中数据的方式,根据目标数据的标识从缓存区域1中查找目标数据。
在第二种实现示例中,目标数据以WAL的形式存储于缓存区域1中,则设备101可以通过遍历缓存区域1中的各个WAL,根据目标数据的标识确定是否存在包括该目标数据的WAL,从而设备101可以通过回放该WAL得到目标数据。
在第三种实现示例中,目标数据以键值对的形式存储于缓存区域1中,则设备101可以将目标数据的标识作为键,对预先构建的索引进行遍历,以查找出包括该键的键值对,从而该键值对中的值即为所要查找的目标数据。
实际应用时,设备101也可以是通过其它方式从本地的缓存区域1中查找目标数据,本实施例对此并不进行限定。
S404:设备102从持久化存储区域中查找目标数据。
其中,设备102从持久化存储区域中查找目标数据的具体过程,可以参照设备101从缓存区域1中查找目标数据的实现方式,本实施例在此不做赘述。
S405:设备102将查找到的目标数据反馈给设备101。
S406:设备101将目标数据反馈给应用1011。
上文中结合图1至图4,详细描述了本发明所提供的数据存储方法以及数据读取方法,下面将结合图5,描述根据本发明所提供的计算设备。
与上述方法同样的发明构思,本发明实施例还提供一种计算设备,如图5所示,计算设备500中可以包括通信接口510、处理器520。可选的,计算设备500中还可以包括存储器530。其中,存储器530可以设置于计算设备500内部,还可以设置于计算设备500外部。示例性地,上述图3以及图4所示实施例中第一设备执行的各个动作均可以由处理器520 实现。处理器520可以通过通信接口510获取数据处理请求,并用于实现图3以及图4中所执行的任一方法。在实现过程中,处理流程的各步骤可以通过处理器520中的硬件的集成逻辑电路或者软件形式的指令完成图3以及图4中执行的方法。为了简洁,在此不再赘述。处理器520用于实现上述方法所执行的程序代码可以存储在存储器530中。存储器530 和处理器520连接,如耦合连接等。
本发明实施例的一些特征可以由处理器520执行存储器530中的程序指令或者软件代码来完成/支持。存储器530上在加载的软件组件可以从功能或者逻辑上进行概括,例如,图5所示的数据写入模块502、淘汰模块503、查找模块504。而通信模块501的功能可以由通信接口510实现。
本发明实施例中涉及到的任一通信接口可以是电路、总线、收发器或者其它任意可以用于进行信息交互的装置。比如计算设备500中的通信接口510,示例性地,该其它装置可以是与该计算设备500相连的设备等。
本发明实施例中涉及的处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本发明实施例中的耦合是装置、模块或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、模块或模块之间的信息交互。
处理器可能和存储器协同操作。存储器可以是非易失性存储器,比如硬盘或固态硬盘等,还可以是易失性存储器,例如随机存取存储器。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
本发明实施例中不限定上述通信接口、处理器以及存储器之间的具体连接介质。比如存储器、处理器以及通信接口之间可以通过总线连接。所述总线可以分为地址总线、数据总线、控制总线等。
基于以上实施例,本发明实施例还提供了一种存储设备,该存储设备作为数据存储系统中的第一设备,该数据存储系统还包括第二设备,示例性地,该数据存储系统例如可以是图1或者图2所示的系统等。其中,该存储设备包括第一缓存区域(如上述实施例中的缓存区域1)以及处理器,该第一缓存区域用于缓存数据,该处理器用于通过运行计算机程序执行以下方法:
接收数据处理请求,所述数据处理请求包括目标数据;
基于远程直接内存访问RDMA将所述目标数据写入所述第二缓存区域,以便所述第二缓存区域中的目标数据被持久化存储;并将所述目标数据写入所述第一缓存区域。
进一步的,该处理器通过与版型计算机程序执行上述任意一个或多个实施例提供的设备101所执行的方法。
基于以上实施例,本发明实施例还提供了一种计算机存储介质,该存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时可实现上述任意一个或多个实施例提供的数据存储系统100执行的方法。所述计算机存储介质可以包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
基于以上实施例,本发明实施例还提供了一种芯片,该芯片包括处理器,用于实现上述实施例所涉及的数据存储系统100的功能,例如用于实现图3以及图4中所执行的方法。可选地,所述芯片还包括存储器,所述存储器,用于处理器所执行必要的程序指令和数据。该芯片,可以由芯片构成,也可以包含芯片和其他分立器件。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和 /或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的范围。这样,倘若本发明实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (21)
1.一种数据存储系统,其特征在于,所述数据存储系统包括第一设备以及第二设备,所述第一设备包括第一缓存区域,所述第二设备包括第二缓存区域;
所述第一设备,用于接收数据处理请求,并基于远程直接内存访问RDMA将所述数据处理请求中的目标数据写入所述第二缓存区域,将所述目标数据写入所述第一缓存区域;
所述第二设备,用于将所述第二缓存区域中的目标数据进行持久化存储。
2.根据权利要求1所述的数据存储系统,其特征在于,所述第一设备还用于:
在所述目标数据被写入所述第一缓存区域以及所述目标数据被写入所述第二缓存区域之后,并且在所述第二设备将所述第二缓存区域中的目标数据进行持久化存储之前,生成所述数据处理请求成功的响应消息。
3.根据权利要求1或2所述的数据存储系统,其特征在于,所述第一设备还用于:
在所述目标数据被持久化存储后,淘汰所述第一缓存区域中的目标数据。
4.根据权利要求1至3任一项所述的数据存储系统,其特征在于,所述第一设备具体用于:
生成包括目标数据的预写式日志WAL;
基于RDMA将所述WAL写入所述第二缓存区域。
5.根据权利要求4所述的数据存储系统,其特征在于,所述第一设备具体用于:
将所述WAL写入所述第一缓存区域;或者,
生成键值对,所述键值对中的键为所述目标数据的标识,所述键值对中的值为所述目标数据;将所述键值对写入所述第一缓存区域。
6.根据权利要求5所述的数据存储系统,其特征在于,所述键值对中的值还对应于所述WAL的第一日志序列号LSN,所述第一设备还用于:
获取所述第二设备已回放的WAL对应的第二LSN;
当所述第一LSN与所述第二LSN相等时,淘汰所述第一缓存区域中的所述键值对。
7.根据权利要求1至6任一项所述的数据存储系统,其特征在于,所述第一设备还用于:
接收数据读取请求,所述数据读取请求包括所述目标数据的标识;
根据所述目标数据的标识,优先查找所述第一缓存区域中是否包括所述目标数据;
当所述第一缓存区域中包括所述目标数据时,反馈所述目标数据;
当所述第一缓存区域中不包括所述目标数据时,向所述第二设备请求所述目标数据。
8.根据权利要求1至7任一项所述的数据存储系统,其特征在于,所述第一设备具体用于基于单边RDMA将所述目标数据写入所述第二缓存区域。
9.根据权利要求1至8任一项所述的数据存储系统,其特征在于,所述数据存储系统包括分布式文件系统,所述第一设备实现所述分布式文件系统中的客户端,所述第二设备实现所述分布式文件系统中的服务端,并且所述第二设备将所述目标数据通过文件格式进行持久化存储。
10.一种数据存储方法,其特征在于,所述数据存储方法应用于数据存储系统,所述数据存储系统包括第一设备以及第二设备,所述第一设备包括第一缓存区域,所述第二设备包括第二缓存区域,所述方法包括:
所述第一设备接收数据处理请求,所述数据处理请求包括目标数据;
所述第一设备基于远程直接内存访问RDMA将所述目标数据写入所述第二缓存区域;
所述第一设备将所述目标数据写入所述第一缓存区域;
所述第二设备将所述第二缓存区域中的目标数据进行持久化存储。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
在所述目标数据被写入所述第一缓存区域以及所述目标数据被写入所述第二缓存区域之后,并且在所述第二设备将所述第二缓存区域中的目标数据进行持久化存储之前,所述第一设备生成所述数据处理请求成功的响应消息。
12.根据权利要求10或11所述的方法,其特征在于,所述方法还包括:
在所述目标数据被持久化存储后,所述第一设备淘汰所述第一缓存区域中的目标数据。
13.根据权利要求10至12任一项所述的方法,其特征在于,所述第一设备基于远程直接内存访问RDMA将所述目标数据写入所述第二缓存区域,包括:
所述第一设备生成包括目标数据的预写式日志WAL;
所述第一设备基于RDMA将所述WAL写入所述第二缓存区域。
14.根据权利要求13所述的方法,其特征在于,所述第一设备将所述目标数据写入所述第一缓存区域,包括:
所述第一设备将所述WAL写入所述第一缓存区域;或者,
所述第一设备生成键值对,所述键值对中的键为所述目标数据的标识,所述键值对中的值为所述目标数据;将所述键值对写入所述第一缓存区域。
15.一种存储设备,其特征在于,所述存储设备作为数据存储系统中的第一设备,所述数据存储系统还包括第二设备,所述存储设备包括:
第一缓存区域,用于缓存数据;
处理器,用于通过运行计算机程序执行以下方法:
接收数据处理请求,所述数据处理请求包括目标数据;
基于远程直接内存访问RDMA将所述目标数据写入所述第二缓存区域,以便所述第二缓存区域中的目标数据被持久化存储;并将所述目标数据写入所述第一缓存区域。
16.根据权利要求15所述的存储设备,其特征在于,所述处理器还用于:
在所述目标数据被写入所述第一缓存区域以及所述目标数据被写入所述第二缓存区域之后,并且在所述第二缓存区域中的目标数据被持久化存储之前,生成所述数据处理请求成功的响应消息。
17.根据权利要求15或16所述的存储设备,其特征在于,所述处理器用于:
确定所述目标数据被持久化存储后,淘汰所述第一缓存区域中的目标数据。
18.根据权利要求15至17任一项所述的存储设备,其特征在于,所述处理器用于:
生成包括目标数据的预写式日志WAL;
基于RDMA将所述WAL写入所述第二缓存区域。
19.根据权利要求18所述的存储设备,其特征在于,所述处理器用于:
将所述WAL写入所述第一缓存区域;或者,
生成键值对,所述键值对中的键为所述目标数据的标识,所述键值对中的值为所述目标数据;将所述键值对写入所述第一缓存区域。
20.一种计算设备,其特征在于,所述计算设备包括处理器和存储器;
所述处理器用于执行所述存储器中存储的指令,以使得所述设备执行权利要求10至14中任一项所述第一设备执行的方法。
21.一种计算机可读存储介质,其特征在于,包括指令,所述指令用于实现权利要求10至14中任一项所述第一设备执行的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210118694.3A CN116610598A (zh) | 2022-02-08 | 2022-02-08 | 一种数据存储系统、数据存储方法、装置及相关设备 |
PCT/CN2023/074690 WO2023151545A1 (zh) | 2022-02-08 | 2023-02-07 | 一种数据存储系统、数据存储方法、装置及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210118694.3A CN116610598A (zh) | 2022-02-08 | 2022-02-08 | 一种数据存储系统、数据存储方法、装置及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116610598A true CN116610598A (zh) | 2023-08-18 |
Family
ID=87563604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210118694.3A Pending CN116610598A (zh) | 2022-02-08 | 2022-02-08 | 一种数据存储系统、数据存储方法、装置及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116610598A (zh) |
WO (1) | WO2023151545A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648959B (zh) * | 2016-09-07 | 2020-03-10 | 华为技术有限公司 | 数据存储的方法和存储系统 |
US10732893B2 (en) * | 2017-05-25 | 2020-08-04 | Western Digital Technologies, Inc. | Non-volatile memory over fabric controller with memory bypass |
CN110647480B (zh) * | 2018-06-26 | 2023-10-13 | 华为技术有限公司 | 数据处理方法、远程直接访存网卡和设备 |
CN112988680B (zh) * | 2021-03-30 | 2022-09-27 | 联想凌拓科技有限公司 | 数据加速方法、缓存单元、电子设备及存储介质 |
-
2022
- 2022-02-08 CN CN202210118694.3A patent/CN116610598A/zh active Pending
-
2023
- 2023-02-07 WO PCT/CN2023/074690 patent/WO2023151545A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023151545A1 (zh) | 2023-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110113420B (zh) | 基于nvm的分布式消息队列管理系统 | |
US10649969B2 (en) | Memory efficient persistent key-value store for non-volatile memories | |
US8347050B2 (en) | Append-based shared persistent storage | |
US8775755B2 (en) | Peer-to-peer transcendent memory | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
JP2019105873A (ja) | メモリシステムおよび制御方法 | |
CN107832423B (zh) | 一种用于分布式文件系统的文件读写方法 | |
CN107329704B (zh) | 一种缓存镜像方法及控制器 | |
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
US9307024B2 (en) | Efficient storage of small random changes to data on disk | |
US10884926B2 (en) | Method and system for distributed storage using client-side global persistent cache | |
WO2020199760A1 (zh) | 数据存储方法、存储器和服务器 | |
CN111124270B (zh) | 缓存管理的方法、设备和计算机程序产品 | |
US20190199794A1 (en) | Efficient replication of changes to a byte-addressable persistent memory over a network | |
JP2019105874A (ja) | 情報処理装置および方法 | |
CA3129982A1 (en) | Method and system for accessing distributed block storage system in kernel mode | |
CN113794764A (zh) | 服务器集群的请求处理方法、介质和电子设备 | |
WO2017113211A1 (zh) | 访问请求处理方法、装置及计算机系统 | |
CN112988680B (zh) | 数据加速方法、缓存单元、电子设备及存储介质 | |
CN109144403B (zh) | 一种用于云盘模式切换的方法与设备 | |
WO2016206070A1 (zh) | 一种文件更新方法及存储设备 | |
CN112463073A (zh) | 一种对象存储分布式配额方法、系统、设备和存储介质 | |
CN111611223A (zh) | 非易失性数据的访问方法、系统、电子设备和介质 | |
CN114077517A (zh) | 数据处理的方法、设备及系统 | |
CN114785662B (zh) | 一种存储管理方法、装置、设备及机器可读存储介质 |
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 |