CN110389986A - 分布式系统的数据写入方法、装置、设备和存储介质 - Google Patents
分布式系统的数据写入方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN110389986A CN110389986A CN201910651537.7A CN201910651537A CN110389986A CN 110389986 A CN110389986 A CN 110389986A CN 201910651537 A CN201910651537 A CN 201910651537A CN 110389986 A CN110389986 A CN 110389986A
- Authority
- CN
- China
- Prior art keywords
- data
- written
- information
- current
- variance
- 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
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种分布式系统的数据写入方法、装置、设备和存储介质。所述方法包括:在接收到数据写入请求时,根据所述数据写入请求确定待写入数据信息,所述待写入数据信息包括待写入数据和写入位置;根据所述待写入数据信息确定所述待写入数据与所述待写入数据对应的原始数据之间的差异数据信息,所述差异数据信息包括差异数据和差异位置;将所述差异数据信息发送给分布式系统的从节点,以使所述从节点根据所述差异数据信息修改所述从节点中的对应数据。本发明实施例通过采用上述技术方案,能够减少写入数据时分布式系统主节点与从节点之间的数据传输量,提高分布式系统的性能。
Description
技术领域
本发明涉及分布式存储领域,尤其涉及一种分布式系统的数据写入方法、装置、设备和存储介质。
背景技术
主从副本模式是当前分布式系统的一种常用的数据副本控制方式。在该控制方式下,主节点在接收并写入数据写入请求中包含的待写入数据后,需要将该待写入数据发送给从节点进行同步。
但是,当分布式系统为使用数据页的方式进行管理且数据写入比较繁琐的系统(如数据库管理系统)时,上述数据写入方法会使得分布式系统的主节点与从节点之间需要传输的数据以及主从节点需要写入的数据的数据量较大,导致分布式系统的性能降低。
发明内容
有鉴于此,本发明实施例提供一种分布式系统的数据写入方法、装置、设备和存储介质,以提高分布式系统的性能。
第一方面,本发明实施例提供了一种分布式系统的数据写入方法,包括:
在接收到数据写入请求时,根据所述数据写入请求确定待写入数据信息,所述待写入数据信息包括待写入数据和写入位置;
根据所述待写入数据信息确定所述待写入数据与所述待写入数据对应的原始数据之间的差异数据信息,所述差异数据信息包括差异数据和差异位置;
将所述差异数据信息发送给分布式系统的从节点,以使所述从节点根据所述差异数据信息修改所述从节点中的对应数据。
第二方面,本发明实施例提供了一种分布式系统的数据写入装置,包括:
待写入信息确定模块,用于在接收到数据写入请求时,根据所述数据写入请求确定待写入数据信息,所述待写入数据信息包括待写入数据和写入位置;
差异信息确定模块,用于根据所述待写入数据信息确定所述待写入数据与所述待写入数据对应的原始数据之间的差异数据信息,所述差异数据信息包括差异数据和差异位置;
差异信息发送模块,用于将所述差异数据信息发送给分布式系统的从节点,以使所述从节点根据所述差异数据信息修改所述从节点中的对应数据。
第三方面,本发明实施例提供了一种计算机设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例所述分布式系统的数据写入方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所述的分布式系统的数据写入方法。
在上述分布式系统写入数据的技术方案中,首先,在接收到数据写入请求时,根据该数据写入请求确定待写入数据信息,然后,根据该待写入数据信息确定待写入数据与本端存储的与待写入数据对应的原始数据之间的差异数据信息,并将该差异数据信息发送给分布式系统的从节点,从而使得各从节点可以根据所接收到的差异数据信息修改自身存储的对应数据。本发明实施例通过采用上述技术方案,仅将待写入数据与原始数据之间的差异数据信息发送给从节点,能够减少写入数据时分布式系统主节点与从节点之间的数据传输量,提高分布式系统的性能。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明实施例一提供的一种分布式系统的数据写入方法的流程示意图;
图2为本发明实施例二提供的一种分布式系统的数据写入方法的流程示意图;
图3为本发明实施例二提供的另一种分布式系统的数据写入方法的流程示意图;
图4为本发明实施例二提供的一种修改日志生成方法的流程示意图;
图5为本发明实施例三提供的一种分布式系统的数据写入装置的结构框图;
图6为本发明实施例四提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合
实施例一
本发明实施例一提供一种分布式系统的数据写入方法。该方法可以由分布式系统的数据写入装置执行,其中,该装置可以由软件和/或硬件实现,一般可集成在分布式系统的系统节点中,典型的,可以集成在分布式系统的主节点中。
图1为本发明实施例一提供的一种分布式系统的数据写入方法的流程示意图,如图1所示,该方法包括:
S110、在接收到数据写入请求时,根据所述数据写入请求确定待写入数据信息,所述待写入数据信息包括待写入数据和写入位置。
在本实施例中,待写入数据信息可以从所接收到的数据写入请求中提取。具体的,在接收到数据写入请求后,解析该数据写入请求,获取该数据写入请求中携带的待写入数据和待写入数据的写入位置等信息,以得到本次的待写入数据信息。
其中,数据写入请求可以理解为用于向本端请求写入数据的请求,如用于向本端请求添加或修改数据的请求,即数据添加请求或数据修改请求;本端可以为分布式系统(如分布式文件系统)的主节点;待写入数据信息为数据写入请求所请求写入的待写入数据的相关信息,如待写入数据、待写入数据的写入位置和/或数据长度等;待写入数据可以理解为待写入数据的数据内容,其可以为需要写入目标文件中的连续或非连续的数据,本实施例以待写入数据为连续数据为例进行说明;待写入数据的写入位置可以理解待写入数据写入本端时的位置信息,其可以为待写入数据写入时的位置范围,也可以为待写入数据写入时的初始写入位置,该位置范围和/或初始写入位置可以以在文件内的偏移的形式进行表示,如位置范围为目标文件的第1050-3000字节或初始写入位置为目标文件的第1050字节等,目标文件为待写入数据需要写入的文件。
S120、根据所述待写入数据信息确定所述待写入数据与所述待写入数据对应的原始数据之间的差异数据信息,所述差异数据信息包括差异数据和差异位置。
在本实施例中,在确定待写入数据信息后,可以根据待写入数据信息中的写入位置获取本端存储的与该待写入数据信息对应的原始数据,然后依次或同时比对待写入数据中与该原始数据中处于相同位置的各字符/字节,识别得到待写入数据中与原始数据中相同位置处的原始字符/原始字节不相同的待写入字符/待写入字节,记录该不相同的待写入字符/待写入字节以及该不相同的待写入字符/待写入字节的位置,从而得到待写入数据与待写入数据对应的原始数据之间的差异数据信息。
其中,原始数据从本端的缓存器或存储器中获取,优选可以从本端的缓存器中获取,以提高待写入数据的写入速度,此时,若缓存器中不存在该原始数据,则可以将存储器中存储的原始数据读取到缓存器中。差异数据为待写入数据中与原始数据对应位置处的字符不相同的字符,也可以为待写入数据中与原始数据对应位置处的字节不相同的字节,即本实施例可以以字符为单位进行比较获取待写入数据中的差异数据信息,也可以以字节为单位进行比较获取待写入数据中的差异数据信息,本实施例不对此进行限制。
为了进一步减少所确定的差异数据的数量,进而进一步减少写入数据时本端与从节点之间的数据传输量,优选的,可以以字节为单位进行比较获取待写入数据中的差异数据信息。此时,以依次比较为例,差异数据信息的确定过程可以为:a1、将待写入数据的首个字节确定为当前字节;a2、比较该当前字节与原始数据中相同位置处记录的字节是否相同,若相同,则执行步骤a3,若不相同,则将当前字节标记为差异字节,记录该差异字节的位置,并执行步骤a3;a3,判断当前字节是否为待写入数据的最后一个字节,若是,则将各差异字节汇总为差异数据,并根据各差异字节的位置确定差异数据的差异位置,若否,则将下一字节确定为当前字节,并返回执行步骤a2,直至当前字节为待写入数据的最后一个字节为止,由此,即可得到待写入数据与原始数据之间的差异数据信息。
S130、将所述差异数据信息发送给分布式系统的从节点,以使所述从节点根据所述差异数据信息修改所述从节点中的对应数据。
具体的,按照分布式系统中的从节点的IP地址或节点标识,将所确定的差异数据信息发送给分布式系统中的从节点。相应的,从节点在接收到本端发送的差异数据信息后,可以将差异数据信息中的差异数据写入到对应的差异位置处,从而将该从节点在所述差异位置处的原始数据修改为该差异数据。
在此,本端可以在确定差异数据信息后即将所确定的差异数据发送给分布式系统中的从节点;也可以在确定差异数据信息后,将差异数据信息存储在本地,在当前条件符合差异数据信息的发送条件时,将本地存储的差异数据信息发送给分布式系统中的从节点,并在差异数据信息发送完成后,删除本地存储的差异数据信息。
其中,差异数据信息可以存储于本端的缓存器中;差异数据信息的发送条件可以根据需要设置为按照设定周期发送、当前时刻到达预先设定的发送时间时发送或本地存储的差异数据信息的数量达到设定的数量时发送,等等,本实施例不对此进行限制。
本发明实施例一提供的分布式系统的数据写入方法,首先,在接收到数据写入请求时,根据该数据写入请求确定待写入数据信息,然后,根据该待写入数据信息确定待写入数据与本端存储的与待写入数据对应的原始数据之间的差异数据信息,并将该差异数据信息发送给分布式系统的从节点,从而使得各从节点可以根据所接收到的差异数据信息修改自身存储的对应数据。本实施例通过采用上述技术方案,仅将待写入数据与原始数据之间的差异数据信息发送给从节点,能够减少写入数据时分布式系统主节点与从节点之间的数据传输量,提高分布式系统的性能。
在上述实施例的基础上,优选的,所述根据所述待写入数据信息确定所述待写入数据与所述待写入数据对应的原始数据之间的差异数据信息,包括:根据所述写入位置确定本次写入数据的起始数据页,作为当前页;根据所述待写入数据信息确定所述当前页的当前待写入数据信息,所述当前待写入信息包括当前待写入数据和所述当前待写入数据在所述当前页中的当前写入位置;对比所述当前待写入数据与所述当前待写入数据对应的当前原始数据,得到所述当前页的子差异数据,并确定所述子差异数据的子差异位置,以得到所述当前页的子差异数据信息;判断所述待写入数据是否对比完成,若是,则将所得到的各子差异数据信息确定为差异数据信息;若否,则将下一数据页确定为当前页,并返回执行所述根据所述待写入数据信息确定所述当前页的当前待写入数据信息的操作,直至所述待写入数据对比完成为止。在本方案中,可以按照所需写入的数据页的不同将待写入数据划分为若干个子待写入数据,并按照各数据页的先后顺序依次获取各子待写入数据的子差异数据信息,从而得到待写入数据的差异数据信息。此时,所得到的差异数据信息由至少一个子差异数据信息组成,相应的,后续在将所得到的差异数据信息发送给分布式系统中的从节点时,可以将所得到的差异数据信息作为一个整体发送给从节点;也可以将差异数据信息以其包含的子差异数据信息为单位分多次发送给从节点,从而,从节点在接收到本端发送的第一个字差异数据信息时即可开始修改从节点中的对应数据,提高从节点的响应速率。其中,某一数据页的子差异数据信息可以包括该数据页对应的子差异数据以及该子差异数据在该数据页中的位置(即子差异位置)。
实施例二
图2为本发明实施例二提供的一种分布式系统的输入写入方法的流程示意图,本实施例在上述实施例的基础上,将“对比所述当前待写入数据与所述当前待写入数据对应的当前原始数据,得到所述当前页的子差异数据,并确定所述子差异数据的子差异位置”优化为:按照设定比较步长对比所述当前待写入数据与所述当前待写入数据对应的当前原始数据,得到所述当前待写入数据中与所述当前原始数据存在差异的目标数据段,并基于所述目标数据段确定所述当前待写入数据中的差异数据段,所述目标数据段由连续的差异字节组成;根据所述当前待写入数据信息确定所述差异数据段的数据段信息,所述数据段信息包括所述差异数据段的数据内容及存储位置。
进一步地,在所述根据所述当前待写入数据信息确定所述差异数据段的数据段信息之后,还包括:根据所述数据段信息生成所述差异数据段的修改日志。
相应的,如图2所示,本实施例提供的分布式系统的数据写入方法包括:
S201、在接收到数据写入请求时,根据所述数据写入请求确定待写入数据信息,所述待写入数据信息包括待写入数据和写入位置。
S202、根据所述写入位置确定本次写入数据的起始数据页,作为当前页。
具体的,确定待写入数据在目标文件内的起始写入位置,将该起始写入位置所对应的数据页确定为起始数据页,并将该起始数据页确定为当前页,如假设待写入数据在文件内的起始偏移(即文件内起始偏移)为offset,目标文件各数据页的大小为PAGE_SIZE,则其起始数据页的页号为Page_no=offset/PAGE_SIZE,即起始页的页号Page_no为offset与PAGE_SIZE的比值的整数部分。其中,目标文件的第一个数据页的页号为0;文件内起始偏移表征待写入数据在目标文件内的起始写入位置相对于目标文件的首字节的字节偏移量。
S203、根据所述待写入数据信息确定所述当前页的当前待写入数据信息,所述当前待写入信息包括当前待写入数据和所述当前待写入数据在所述当前页中的当前写入位置。
在本实施例中,可以根据待写入数据的剩余写入长度以及待写入数据在当前页内的页内起始偏移计算待写入数据在当前页内要写入的当前数据长度,然后根据页内起始偏移以及该当前数据长度确定当前写入数据,并进一步确定该当前写入数据在当前页中的当前写入位置,如该当前页中的起始写入位置为该第一个字节对应的位置。在此,如果当前页为起始数据页,则剩余写入长度left_len=to_write_len,页内起始偏移为page_off=offset%PAGE_SIZE;如果当前页为非起始数据页,则其剩余写入长度为上一页的剩余写入长度与PAGE_SIZE的差值,页内起始偏移Page_off=0。其中,页内起始偏移表征待写入数据在当前页内的起始写入位置相对于当前页的首字节的字节偏移量;to_write_len为待写入数据的总长度,offset为待写入数据的文件内起始偏移,PAGE_SIZE为目标文件各数据页的大小。
S204、按照设定比较步长对比所述当前待写入数据与所述当前待写入数据对应的当前原始数据,得到所述当前待写入数据中与所述当前原始数据存在差异的目标数据段,并基于所述目标数据段确定所述当前待写入数据中的差异数据段,所述目标数据段由连续的差异字节组成。
本实施例中,可以将当前待写入数据中与当前原始数据中的对应字节存在差异的连续字节(即需要连续进行修改的当前原始数据对应的当前待写入数据)作为一个目标数据段进行处理,以进一步减少后续所生成的修改日志所造成的额外的空间消耗。
示例性的,确定当前待写入数据中与所述当前原始数据存在差异的目标数据段的过程可以为:
b1、根据比较步长和当前写入位置确定当前待写入数据中的当前比较内容。
b2、判断该当前比较内容与当前原始数据中的对应内容是否相同,得到当前比较结果,如果当前比较结果为相同且上一比较结果为不同,则将当前比较内容的第一个字符标记为结束字符,并将位于该结束字符之前且与该结束字符距离最近的开始字符与该结束字符之间的数据段(包含该开始字符但不包含该结束字符)标记为一个连续数据段,并执行b3;如果当前比较结果为相同且上一比较结果为相同,当前比较结果为相同且不存在上一比较结果(即本次比较为对当前待写入数据与当前原始数据内的对应数据的首次比较),或者,当前比较结果为不相同且上一比较结果为不相同,则执行b3;如果当前比较结果为不相同,并且,上一比较结果为相同或不存在上一比较结果,则将当前比较内容的第一个字节标记为开始字符,并执行b3。
b3、判断当前待写入数据是否比较完成,如果比较完成且上一比较结果为相同,则目标数据段确定完成;如果比较完成且上一比较结果为不相同,则将与当前原始数据最后一个字符距离最近的开始字符至该最后一个字符(包含该开始字符且包含该最后一个字符)的数据确定为连续数据段,目标数据段确定完成;如果未比较完成,则将位于该当前比较内容之后且与当前比较内容的最后一个字节的距离在该比较步长范围内的数据确定为当前比较内容,并返回执行b2。
其中,比较步长可以根据需要设置,如可以设置为1字节、2字节或4字节等等。
在本实施例中,可以不考虑目标数据段的长度(即不考虑后续生成的修改日志的长度是否过长),直接将所得到的目标数据段确定为差异数据段;也可以考虑目标数据段的长度,将目标数据段划分为长度不超长的子数据段,并将所得到的子数据段确定为差异数据段。
为了使后续生成的修改日志便于存储与管理,优选的,可以预先限定修改日志的长度范围,亦即,预先设置差异数据段的最大长度(即预设长度阈值),并在得到目标数据段后,判断该目标数据是否大于该预设长度阈值,若是,则将该目标数据段划分为多个连续且不重叠的子数据段,并将各子数据段均确定为差异数据段;若否,则将该目标数据段确定为差异数据段。此时,相应的,所述根据所述目标数据段得到所述当前待写入数据中的差异数据段,可以包括:如果所述目标数据段的数据长度大于预设长度阈值,则将所述目标数据段分割为至少两个数据长度小于或等于预设长度阈值的子数据段,将所述子数据段确定为差异数据段。
S205、根据所述当前待写入数据信息确定所述差异数据段的数据段信息,所述数据段信息包括所述差异数据段的数据内容及存储位置。
在本步骤中,所确定的差异数据段的数量可以为一个或多个。当差异数据段的数量为多个时,可以在某一差异数据段确定完成后即确定该差异数据段的数据段信息;也可以在当前待写入数据的所有差异数据段均确定完成后,再确定各差异数据段的数据段信息,本实施例不对此进行限制。其中,在确定某一个差异数据段的数据段信息时,可以基于当前待写入数据确定差异数据段的数据内容,并根据当前待写入数据的当前写入位置确定该差异数据段在当前页中的存储位置。
S206、根据所述数据段信息生成所述差异数据段的修改日志,以得到所述当前页的子差异数据信息。
本实施例中,当当前待写入数据中的差异数据段为多个时,可以在某一差异数据段的数据段信息确定完成后即生成该差异数据段的修改日志;也可以在当前待写入数据中的所有差异数据段的差异数据信息均确定完成后再生成各差异数据段修改日志,本实施例不对此进行限制。在此,所生成的修改日志可以包括但不限于差异数据段的数据段信息,具体可根据需要进行调整。例如,参考表1(表中第二行为相应项所占据的字节数),所生成的修改日志可以包括修改日志的长度Log_rec_len、差异数据段所属文件的文件标识File_id、差异数据段所属数据页的页号Page_no、差异数据段的页内起始偏移Data_start_offset、差异数据段的数据长度Data_len以及差异数据段的数据内容。
表1修改日志的格式
Log_rec_len | File_id | Page_no | Data_start_offset | Data_len | Data |
2 | 4 | 4 | 2 | 2 | Data_len |
S207、判断所述待写入数据是否对比完成,若是,则执行S209;若否,则执行S208;
S208、将下一数据页确定为当前页,并返回执行S203。
S209、将所得到的各子差异数据信息确定为差异数据信息。
S210、将所述差异数据信息发送给分布式系统的从节点,以使所述从节点根据所述差异数据信息修改所述从节点中的对应数据。
在本步骤中,差异数据信息中包含一个或多个差异数据段的修改日志。当差异数据信息包含多个差异数据段的修改日志时,可以将各差异数据段的修改日志一起发送至从节点,以减少差异数据信息的发送次数;也可以将各差异数据段的修改日志依次发送给从节点,以提高从节点的数据修改速度。
相应的,从节点在接收到主节点发送的修改日志后,可以读取修改日志中的信息,根据修改日志中的File_id和Page_no在缓存器中获取对应的数据页,并根据修改日志中的Data_start_offse、Data_len和Data将要写入的数据写入到该数据页的对应位置。在此,如果缓存器中不存在对应的数据页,可以首先将存储器中存储的对应数据页复制到缓存器中,然后再在缓存器中获取该对应的数据页。
在上述方案中,本端在接收到数据写入请求后,可以将所确定的待写入数据写入至目标文件的对应位置,也可以将所确定的差异数据写入至目标文件的对应位置,本实施例不对此进行限制。为了减少本端所需写入的数据的数量,优选的,可以仅将差异数据写入至目标文件的对应文件。此时,本实施例提供的分布式系统的数据写入方法还可以包括:根据所述差异数据信息修改所述原始数据。其中,当差异数据信息由多个差异数据段信息构成时,优选在每一个差异数据段信息确认完成后,即将该差异数据段信息所包含的差异数据段的数据内容写入至本端对应的存储位置处,即在确定下一差异数据段信息的同时,即将当前已经确定完成的差异数据段的数据内容写入至目标文件的对应存储位置,从而进一步提高本端中待写入数据的写入速度。
示例性的,参考图3,本实施例提供的分布式系统的数据写入方法可以描述为:接收数据写入请求;解析获取待写入数据以及待写入数据的文件号file_id、文件内偏移offset以及待写入的数据长度to_write_len;将起始页确定为当前页,计算获得待写入数据的起始页号page_no及在起始页的页内起始偏移page_off,并令剩余写入长度left_len=to_write_len,其中,page_no=offset/PAGE_SIZE,page_off=offset%PAGE_SIZE;判断left_len是否大于0,若是,则计算获得当前页内要写入的数据(即当前待写入数据)的长度:real_write_len=min(left_len,PAGE_SIZE–page_off),根据file_id和page_no获取数据缓存页(即当前原始数据);比较当前页待写入的数据与原始数据相应的部分,生成数据修改的日志(即修改日志)到当前任务的日志缓存;修改当前页的数据;令left_len-=real_write_len,page_no++,page_off=0,并返回执行判断left_len是否大于0的操作;若否,则将当前任务日志缓存中的修改日志加入到待同步的日志队列。从而,本端当按照顺序处理待同步的日志队列中的修改日志时,即会将该修改日志发送给分布式系统中当从节点。其中,PAGE_SIZE为数据页的大小。
以三副本的分布式系统以及表1所述的修改日志的格式为例,假设其按8K进行分页,即每个数据页的大小为8K,若某一次操作以供修改了256个页,每个页中只修改了100Byte,现有技术将这些数据写入到文件时,就需要修改2M的数据(8K*256),而主节点需要将这些修改同步到两个从节点,那么就一共要发送4M的数据。然而,采用上述方案后,256个数据页的修改只需要产生(14+100)*256不足30K的日志数据,发送给两个从副本节点共需要60K的网络通信,大大减小了写入数据时主从节点之间的数据传输量。并且,对于每个数据页修改的数据量很大甚至是整页修改的情况,由于本实施例中每个日志记录所额外增加的数据很少,也并不会额外增加很大的网络通信量。
在上述示例性的描述中,假设预设比较步长为DTA_CMP_STEP_LEN(如可预设为4字节),修改日志的最大长度为MAX_LOG_LEN(如可预设为8188字节),当前页待写入的起始偏移为page_off,当前待写入数据的长度为write_len,当前待写入的数据为data,参见图4(图中未给出各步骤的标号),“比较当前页待写入的数据与原始数据相应的部分,生成数据修改的日志(即修改日志)”可以进一步描述为:
c1、令p_data=page_data+page_off,s_off=d_off=0。
c2、判断d_off是否小于write_len,若是,则执行c3;若否,则执行c13。
c3、令cmp_len=min(DTA_CMP_STEP_LEN,write_len-d_off)。
即,令cmp_len为DTA_CMP_STEP_LEN与write_len-d_off中的较小值。
c4、Cmp(p_data+d_off,data+d_off,cmp_len)。
即比较起始位置为p_data+d_off、长度为cmp_len的原始数据与起始位置为data+d_off、长度为cmp_len的当前待写入数据。
c5、确定比较的数据是否相同,若相同,则执行c6;若不相同,则执行c9。
c6、判断s_off是否小于d_off,若是,则执行c7;若否,则执行c8。
c7、生成修改日志。
即,将s_off与d_off之间的数据确定为异常数据段,确定该异常数据段的数据段信息,并生成该异常数据段的修改日志。
c8、令s_off=d_off+cmp_len,执行c12。
c9、判断日志是否超长,若是,则执行c10;若否,则执行c12。
即,判断将s_off与d_off之间的数段作为异常数据段生成日志时,日志的长度是否达到MAX_LOG_LEN或即将达到MAX_LOG_LEN(即d_off+cmp_len达到MAX_LOG_LEN)。
c10、生成修改日志。
c11、令s_off=d_off。
c12、令d_off+=cmp_len,并返回执行c2。
即将d_off与cmp_len之和赋值给d_off。
c13、判断s_off是否小于d_off,若是,则执行c14;若否,则结束操作。
在此,结束操作指的是结束当前页的日志生成操作。
c14、生成修改日志,结束操作。
其中,p_data表征当前待写入数据对应的原始数据,page_data为当前页中首字节的位置,p_data=page_data+page_off的含义为原始数据为page_data+page_off的数据;s_off为差异数据段的起始位置(即差异数据段的首字节的位置),d_off为差异数据段的结束位置(即位于差异数据段之后且与差异数据段的最后一个字节相邻的字节位置),cmp_len为本次实际比较的数据长度;相应的,修改日志中差异数据段的起始页内偏移为page_off+s_off,差异数据段的长度为d_off–s_off。
本发明实施例二提供的分布式系统的数据写入方法,以由连续的差异字节组成的差异数据段为单位确定差异数据段信息并生成修改日志,可以减少修改日志额外的空间消耗,进一步减少写入数据时分布式系统主节点与从节点之间的数据传输量,提高分布式系统的性能。
实施例三
本发明实施例三提供一种分布式系统的数据写入装置,该装置可以由软件和/或硬件实现,一般可集成在分布式系统的系统节点中,典型的,可以集成在分布式系统的主节点中,可通过执行分布式系统的数据写入方法写入数据。图5为本发明实施例三提供的一种分布式系统的数据写入装置的结构框图,如图5所示,该装置包括待写入信息确定模块501、差异信息确定模块502和差异信息发送模块503,其中,
待写入信息确定模块501,用于在接收到数据写入请求时,根据所述数据写入请求确定待写入数据信息,所述待写入数据信息包括待写入数据和写入位置;
差异信息确定模块502,用于根据所述待写入数据信息确定所述待写入数据与所述待写入数据对应的原始数据之间的差异数据信息,所述差异数据信息包括差异数据和差异位置;
差异信息发送模块503,用于将所述差异数据信息发送给分布式系统的从节点,以使所述从节点根据所述差异数据信息修改所述从节点中的对应数据。
本发明实施例三提供的分布式系统的数据写入方法,首先,通过待写入信息确定模块在接收到数据写入请求时,根据该数据写入请求确定待写入数据信息,然后,通过差异信息确定模块根据该待写入数据信息确定待写入数据与本端存储的与待写入数据对应的原始数据之间的差异数据信息,并通过差异信息发送模块将该差异数据信息发送给分布式系统的从节点,从而使得各从节点可以根据所接收到的差异数据信息修改自身存储的对应数据。本实施例通过采用上述技术方案,仅将待写入数据与原始数据之间的差异数据信息发送给从节点,能够减少写入数据时分布式系统主节点与从节点之间的数据传输量,提高分布式系统的性能。
在上述方案中,所述差异信息确定模块502可以包括:起始页确定单元,用于根据所述写入位置确定本次写入数据的起始数据页,作为当前页;当前待写入信息确定单元,根据所述待写入数据信息确定所述当前页的当前待写入数据信息,所述当前待写入信息包括当前待写入数据和所述当前待写入数据在所述当前页中的当前写入位置;子差异信息确定单元,用于对比所述当前待写入数据与所述当前待写入数据对应的当前原始数据,得到所述当前页的子差异数据,并确定所述子差异数据的子差异位置,以得到所述当前页的子差异数据信息;判断单元,用于判断所述待写入数据是否对比完成,若是,则将所得到的各子差异数据信息确定为差异数据信息;若否,则将下一数据页确定为当前页,并调用当前待写入信息确定单元,直至所述待写入数据对比完成为止。
在上述方案中,所述子差异信息确定单元可以包括:差异数据段确定子单元,用于按照设定比较步长对比所述当前待写入数据与所述当前待写入数据对应的当前原始数据,得到所述当前待写入数据中与所述当前原始数据存在差异的目标数据段,并基于所述目标数据段确定所述当前待写入数据中的差异数据段,所述目标数据段由连续的差异字节组成;数据段信息确定子单元,用于根据所述当前待写入数据信息确定所述差异数据段的数据段信息,所述数据段信息包括所述差异数据段的数据内容及存储位置,以得到所述当前页的子差异数据信息。
在上述方案中,所述子差异信息确定单元还可以包括:修改日志生成子单元,用于在所述根据所述当前待写入数据信息确定所述差异数据段的数据段信息之后,根据所述数据段信息生成所述差异数据段的修改日志。
在上述方案中,所述根据所述目标数据段得到所述当前待写入数据中的差异数据段,可以包括:如果所述目标数据段的数据长度大于预设长度阈值,则将所述目标数据段分割为至少两个数据长度小于或等于预设长度阈值的子数据段,将所述子数据段确定为差异数据段。
进一步地,所述分布式系统的数据写入装置还可以包括:数据修改模块,用于根据所述差异数据信息修改所述原始数据。
本发明实施例三提供的分布式系统的数据写入装置可执行本发明任意实施例提供的分布式系统的数据写入方法,具备执行分布式系统的数据写入方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的分布式系统的数据写入方法。
实施例四
图6为本发明实施例四提供的一种计算机设备的结构示意图,如图6所示,该计算机设备包括处理器60和存储器61,还可以包括缓存器62;计算机设备中处理器60的数量可以是一个或多个,图6中以一个处理器60为例;计算机设备中的处理器60、存储器61和缓存器62可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器61作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的分布式系统的数据写入方法对应的程序指令/模块(例如,分布式系统的数据写入装置中的待写入信息确定模块501、差异信息确定模块502和差异信息发送模块503)。处理器60通过运行存储在存储器61中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的分布式系统的数据写入方法。
存储器61可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器61可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器61可进一步包括相对于处理器60远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
缓存器62可用于缓存待写入数据需写入的目标文件和/或所生成的修改日志。
本发明实施例四还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种分布式系统的数据写入方法,该方法包括:
在接收到数据写入请求时,根据所述数据写入请求确定待写入数据信息,所述待写入数据信息包括待写入数据和写入位置;
根据所述待写入数据信息确定所述待写入数据与所述待写入数据对应的原始数据之间的差异数据信息,所述差异数据信息包括差异数据和差异位置;
将所述差异数据信息发送给分布式系统的从节点,以使所述从节点根据所述差异数据信息修改所述从节点中的对应数据。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的分布式系统的数据写入方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述分布式系统的数据写入装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种分布式系统的数据写入方法,其特征在于,包括:
在接收到数据写入请求时,根据所述数据写入请求确定待写入数据信息,所述待写入数据信息包括待写入数据和写入位置;
根据所述待写入数据信息确定所述待写入数据与所述待写入数据对应的原始数据之间的差异数据信息,所述差异数据信息包括差异数据和差异位置;
将所述差异数据信息发送给分布式系统的从节点,以使所述从节点根据所述差异数据信息修改所述从节点中的对应数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述待写入数据信息确定所述待写入数据与所述待写入数据对应的原始数据之间的差异数据信息,包括:
根据所述写入位置确定本次写入数据的起始数据页,作为当前页;
根据所述待写入数据信息确定所述当前页的当前待写入数据信息,所述当前待写入信息包括当前待写入数据和所述当前待写入数据在所述当前页中的当前写入位置;
对比所述当前待写入数据与所述当前待写入数据对应的当前原始数据,得到所述当前页的子差异数据,并确定所述子差异数据的子差异位置,以得到所述当前页的子差异数据信息;
判断所述待写入数据是否对比完成,若是,则将所得到的各子差异数据信息确定为差异数据信息;若否,则将下一数据页确定为当前页,并返回执行所述根据所述待写入数据信息确定所述当前页的当前待写入数据信息的操作,直至所述待写入数据对比完成为止。
3.根据权利要求2所述的方法,其特征在于,所述对比所述当前待写入数据与所述当前待写入数据对应的当前原始数据,得到所述当前页的子差异数据,并确定所述子差异数据的子差异位置,包括:
按照设定比较步长对比所述当前待写入数据与所述当前待写入数据对应的当前原始数据,得到所述当前待写入数据中与所述当前原始数据存在差异的目标数据段,并基于所述目标数据段确定所述当前待写入数据中的差异数据段,所述目标数据段由连续的差异字节组成;
根据所述当前待写入数据信息确定所述差异数据段的数据段信息,所述数据段信息包括所述差异数据段的数据内容及存储位置。
4.根据权利要求3所述的方法,其特征在于,在所述根据所述当前待写入数据信息确定所述差异数据段的数据段信息之后,还包括:
根据所述数据段信息生成所述差异数据段的修改日志。
5.根据权利要求4所述的方法,其特征在于,所述根据所述目标数据段得到所述当前待写入数据中的差异数据段,包括:
如果所述目标数据段的数据长度大于预设长度阈值,则将所述目标数据段分割为至少两个数据长度小于或等于预设长度阈值的子数据段,将所述子数据段确定为差异数据段。
6.根据权利要求1-5任一所述的方法,其特征在于,还包括:
根据所述差异数据信息修改所述原始数据。
7.一种分布式系统的数据写入装置,其特征在于,包括:
待写入信息确定模块,用于在接收到数据写入请求时,根据所述数据写入请求确定待写入数据信息,所述待写入数据信息包括待写入数据和写入位置;
差异信息确定模块,用于根据所述待写入数据信息确定所述待写入数据与所述待写入数据对应的原始数据之间的差异数据信息,所述差异数据信息包括差异数据和差异位置;
差异信息发送模块,用于将所述差异数据信息发送给分布式系统的从节点,以使所述从节点根据所述差异数据信息修改所述从节点中的对应数据。
8.根据权利要求7所述的装置,其特征在于,所述差异信息确定模块包括:
起始页确定单元,用于根据所述写入位置确定本次写入数据的起始数据页,作为当前页;
当前待写入信息确定单元,根据所述待写入数据信息确定所述当前页的当前待写入数据信息,所述当前待写入信息包括当前待写入数据和所述当前待写入数据在所述当前页中的当前写入位置;
子差异信息确定单元,用于对比所述当前待写入数据与所述当前待写入数据对应的当前原始数据,得到所述当前页的子差异数据,并确定所述子差异数据的子差异位置,以得到所述当前页的子差异数据信息;
判断单元,用于判断所述待写入数据是否对比完成,若是,则将所得到的各子差异数据信息确定为差异数据信息;若否,则将下一数据页确定为当前页,并调用当前待写入信息确定单元,直至所述待写入数据对比完成为止。
9.一种计算机设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述分布式系统的数据写入方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的分布式系统的数据写入方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910651537.7A CN110389986A (zh) | 2019-07-18 | 2019-07-18 | 分布式系统的数据写入方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910651537.7A CN110389986A (zh) | 2019-07-18 | 2019-07-18 | 分布式系统的数据写入方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110389986A true CN110389986A (zh) | 2019-10-29 |
Family
ID=68286692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910651537.7A Pending CN110389986A (zh) | 2019-07-18 | 2019-07-18 | 分布式系统的数据写入方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110389986A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113014662A (zh) * | 2021-03-11 | 2021-06-22 | 联想(北京)有限公司 | 数据处理方法及基于NVMe-oF协议的存储系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572178A (zh) * | 2014-12-19 | 2015-04-29 | 南昌市科陆智能电网科技有限公司 | 电能表嵌入式软件远程差异化升级方法及升级系统 |
CN108696595A (zh) * | 2018-05-28 | 2018-10-23 | 郑州云海信息技术有限公司 | 分布式集群数据同步方法、主节点、从节点、系统及介质 |
CN109683948A (zh) * | 2018-12-13 | 2019-04-26 | 深圳创维-Rgb电子有限公司 | 系统数据导入方法、装置、电子产品及存储介质 |
US10353780B1 (en) * | 2015-03-31 | 2019-07-16 | EMC IP Holding Company LLC | Incremental backup in a distributed block storage environment |
-
2019
- 2019-07-18 CN CN201910651537.7A patent/CN110389986A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572178A (zh) * | 2014-12-19 | 2015-04-29 | 南昌市科陆智能电网科技有限公司 | 电能表嵌入式软件远程差异化升级方法及升级系统 |
US10353780B1 (en) * | 2015-03-31 | 2019-07-16 | EMC IP Holding Company LLC | Incremental backup in a distributed block storage environment |
CN108696595A (zh) * | 2018-05-28 | 2018-10-23 | 郑州云海信息技术有限公司 | 分布式集群数据同步方法、主节点、从节点、系统及介质 |
CN109683948A (zh) * | 2018-12-13 | 2019-04-26 | 深圳创维-Rgb电子有限公司 | 系统数据导入方法、装置、电子产品及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113014662A (zh) * | 2021-03-11 | 2021-06-22 | 联想(北京)有限公司 | 数据处理方法及基于NVMe-oF协议的存储系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10397139B2 (en) | Storage device in which forwarding-function-equipped memory nodes are mutually connected and data processing method | |
CN107209644B (zh) | 一种数据处理方法以及NVMe存储器 | |
US20190347167A1 (en) | Primary Node-Standby Node Data Transmission Method, Control Node, and Database System | |
CN107506135B (zh) | 一种数据处理方法、装置及系统 | |
CN104184664A (zh) | 路由转发表项生成方法及装置 | |
CN106936662A (zh) | 一种实现心跳机制的方法、装置及系统 | |
CN107329704A (zh) | 一种缓存镜像方法及控制器 | |
CN109783589A (zh) | 电子地图解析地址的方法、装置及存储介质 | |
CN107547400B (zh) | 一种虚拟机迁移方法和装置 | |
US7325236B2 (en) | Electronic device, apparatus using the same, and method of reading out data | |
CN110389986A (zh) | 分布式系统的数据写入方法、装置、设备和存储介质 | |
US20180018361A1 (en) | Index Table Update Method, and Device | |
CN109783462B (zh) | 一种基于分布式文件系统的数据访问方法和装置 | |
US20060143313A1 (en) | Method for accessing a storage device | |
US20070214326A1 (en) | Storage control apparatus, storage control method, computer product, and information processing apparatus | |
CN111600929A (zh) | 传输线路探测方法、路由策略生成方法及代理服务器 | |
CN109992197B (zh) | 一种数据读写方法、装置、电子设备和存储介质 | |
CN114401072B (zh) | 一种基于hinoc协议的拆帧重排序队列的动态缓存控制方法及系统 | |
CN113923061B (zh) | 基于智能网卡的gpu网络通信方法、智能网卡、介质、设备 | |
CN109995678A (zh) | 报文传输方法及装置 | |
CN108446144A (zh) | 一种应用程序启动方法、装置、终端及存储介质 | |
CN105765542A (zh) | 访问文件的方法、分布式存储系统和存储节点 | |
CN111865794B (zh) | 一种逻辑端口的关联方法、系统、设备及数据传输系统 | |
CN103457864A (zh) | 处理路由下一跳的方法、装置及网络设备 | |
CN115794366A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191029 |
|
RJ01 | Rejection of invention patent application after publication |