CN117255101B - 分布式存储系统的数据处理方法、装置、设备及介质 - Google Patents

分布式存储系统的数据处理方法、装置、设备及介质 Download PDF

Info

Publication number
CN117255101B
CN117255101B CN202311531857.1A CN202311531857A CN117255101B CN 117255101 B CN117255101 B CN 117255101B CN 202311531857 A CN202311531857 A CN 202311531857A CN 117255101 B CN117255101 B CN 117255101B
Authority
CN
China
Prior art keywords
node
write request
standby
information
cache
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.)
Active
Application number
CN202311531857.1A
Other languages
English (en)
Other versions
CN117255101A (zh
Inventor
汪正洋
张在贵
张凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202311531857.1A priority Critical patent/CN117255101B/zh
Publication of CN117255101A publication Critical patent/CN117255101A/zh
Application granted granted Critical
Publication of CN117255101B publication Critical patent/CN117255101B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供了一种分布式存储系统的数据处理方法、装置、设备及介质,涉及分布式存储技术领域,该方法包括:向至少两个备节点分别申请第一缓存;第一缓存用于供第一主节点对至少两个备节点进行远程内存访问;在第一主节点接收到写请求的情况下,将写请求写入至少两个备节点对应的第一缓存以及第一主节点的第二缓存;在第一主节点发生故障的情况下,将第一备节点确定为第二主节点,并获取第二主节点对应的第一操作日志信息以及第二备节点对应的第二操作日志信息;基于第一操作日志信息以及第二操作日志信息,通过远程内存访问技术同步第二主节点与第二备节点的数据,提高了分布式存储系统的稳定性,降低了处理器开销以及写请求的处理时延。

Description

分布式存储系统的数据处理方法、装置、设备及介质
技术领域
本发明涉及分布式存储技术领域,尤其涉及一种分布式存储系统的数据处理方法、装置、设备及介质。
背景技术
随着大数据和信息产业的发展,需要保存和处理的数据量越来越大。分布式存储系统已成为数据中心的重要部分。
相关的分布式存储系统缓存机制中,主写缓存服务器(主节点)向备写缓存服务器(备节点)复制数据的情况下,往往基于传输控制协议(TCP)或基于远程直接访问内存RDMA(Remote Direct Memory Access)技术进行双边操作,将数据复制给备写缓存服务器。但这种方式往往需要备写缓存服务器的处理器全程参与数据复制过程,业务IO数据(如应用程序发送的写请求)的处理时延以及开销较大。
发明内容
为克服相关技术中存在的问题,本发明提供了一种分布式存储系统的数据处理方法、装置、设备及介质。
第一方面,本发明提供了一种分布式存储系统的数据处理方法,所述分布式存储系统包括主节点以及至少两个备节点,所述主节点包括第一主节点;所述方法包括:
向所述至少两个备节点分别申请第一缓存;所述第一缓存用于供所述第一主节点对所述至少两个备节点进行远程内存访问;
在所述第一主节点接收到写请求的情况下,将所述写请求写入所述至少两个备节点对应的第一缓存以及所述第一主节点的第二缓存;
在所述第一主节点发生故障的情况下,将第一备节点确定为第二主节点,并获取所述第二主节点对应的第一操作日志信息以及第二备节点对应的第二操作日志信息;所述第二备节点为所述至少两个备节点中除第一备节点外的备节点;
基于所述第一操作日志信息以及所述第二操作日志信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的数据。
可选地,所述向所述至少两个备节点分别申请第一缓存,包括:
向所述分布式存储系统中的至少两个备节点分别发送缓存申请请求;
在接收到所述至少两个备节点发送的反馈信息的情况下,针对任一备节点发送的反馈信息,基于所述反馈信息携带的所述备节点从全部缓存空间中划分的缓存空间的起止地址,确定所述备节点对应的第一缓存。
可选地,所述分布式存储系统中还包括协议客户端以及协议接入节点,所述协议接入节点用于在接收到所述协议客户端发送的目标写请求的情况下,向所述第一主节点发送所述写请求;所述目标写请求中携带有目标文件地址。
可选地,所述协议接入节点还用于:
基于所述目标文件地址确定目标文件,并将所述目标文件进行切分,得到多个对象;
针对所述多个对象中的任一对象,基于所述对象的对象标识,确定所述对象对应的目标分区;所述目标分区与所述第一主节点以及所述备节点相对应;
向所述第一主节点发送所述写请求。
可选地,所述基于所述对象的对象标识,确定所述对象对应的目标分区,包括:
确定所述对象对应的对象标识的目标哈希值;
基于所述目标哈希值以及所述分布式存储系统中的总分区数量,确定分区标识;所述分区标识用于指示所述分布式存储系统中唯一的目标分区;
基于所述分区标识,从所述分布式存储系统中的多个分区中确定所述目标分区。
可选地,所述方法还包括:
在接收到所述至少两个备节点发送的回调消息后,通过所述第一主节点向所述协议接入节点发送响应消息;所述响应消息用于通知所述协议接入节点所述第一主节点完成将所述写请求写入所述第一主节点以及所述至少两个备节点的操作;
在向协议接入节点发送响应消息后,通过所述第一主节点向所述至少两个备节点发送通知消息;所述通知消息携带有所述写请求在所述至少两个备节点的第一缓存中对应的地址信息。
可选地,所述分布式存储系统还包括管理节点;所述在所述第一主节点发生故障的情况下,将第一备节点确定为第二主节点,包括:
在检测到所述第一主节点故障的情况下,将初始节点视图中的所述第一主节点删除,得到第一节点视图;
通过所述管理节点将所述第一节点视图发送至所述备节点,并确定所述至少两个备节点中的第一备节点为所述第二主节点。
可选地,所述获取所述第二主节点对应的第一操作日志信息以及第二备节点对应的第二操作日志信息,包括:
在所述第二备节点接收到所述第二主节点发送的消息获取请求的情况下,通过解析所述第二备节点的第一缓存中的写请求,获取所述第二备节点对应的第二操作日志信息;
通过解析所述第二主节点对应的第一缓存中的写请求,获取所述第二主节点对应的第一操作日志信息。
可选地,所述第二操作日志信息中包括第二写请求信息;所述通过解析所述第二备节点的第一缓存中的写请求,获取所述第二备节点对应的第二操作日志信息,包括:
依次读取所述第二备节点的第一缓存中的多个写请求,并获取所述多个写请求对应的第二写请求信息。
可选地,所述第一操作日志信息中包括第一写请求信息;所述通过解析所述第二主节点对应的第一缓存中的写请求,获取所述第二主节点对应的第一操作日志信息,包括:
依次读取所述第二主节点的第一缓存中的多个写请求,并获取所述多个写请求对应的第一写请求信息。
可选地,所述基于所述第一操作日志信息以及所述第二操作日志信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的数据,包括:
将所述第一写请求信息以及所述第二写请求信息进行对比;
获取第一写请求信息与所述第二写请求信息的写请求信息交集;
基于所述写请求信息交集、所述第一写请求信息以及所述第二写请求信息,确定所述第二主节点与所述第二备节点之间需要进行同步的目标信息;
基于所述目标信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的写请求。
可选地,所述目标信息包括第一目标信息以及第二目标信息;所述基于所述写请求信息交集、所述第一写请求信息以及所述第二写请求信息,确定所述第二主节点与所述第二备节点之间需要进行同步的目标信息,包括:
将所述第一写请求信息中除所述写请求信息交集外的写请求信息确定为第一目标信息;
将所述第二写请求信息中除所述写请求信息交集外的写请求信息确定为第二目标信息;
所述基于所述目标信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的写请求,包括:
基于所述第一目标信息以及所述第二目标信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的写请求。
可选地,所述第一目标信息用于表征需要同步至所述第二备节点的写请求信息,所述第二目标信息用于表征需要同步至所述第二主节点的写请求信息。
可选地,所述基于所述第一目标信息以及所述第二目标信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的写请求,包括:
通过远程内存访问技术将所述第一目标信息写入所述第二备节点中的第三缓存;
通过所述第二主节点获取所述第二备节点的第二目标信息,并将所述第二目标信息写入所述第二主节点对应的第一缓存。
可选地,所述将所述写请求写入所述至少两个备节点对应的第一缓存,包括:
针对所述至少两个备节点中的任一备节点,基于所述第一主节点的第一网卡获取写请求;
基于所述第一网卡将所述写请求发送至所述备节点的第二网卡;所述第二网卡用于在接收到所述写请求的情况下,将所述写请求写入所述第一缓存。
可选地,所述第二网卡还用于在将所述写请求写入所述第一缓存后向所述第一网卡发送回调消息。
可选地,所述第一写请求信息以及所述第二写请求信息中包括写请求对应的版本信息、对象标识、偏移量信息以及长度信息。
第二方面,本发明提供了一种分布式存储系统的数据处理装置,所述装置包括:
第一申请模块,用于向所述至少两个备节点分别申请第一缓存;所述第一缓存用于供所述第一主节点对所述至少两个备节点进行远程内存访问;
第一写入模块,用于在所述第一主节点接收到写请求的情况下,将所述写请求写入所述至少两个备节点对应的第一缓存以及所述第一主节点的第二缓存;
第一确定模块,用于在所述第一主节点发生故障的情况下,将第一备节点确定为第二主节点,并获取所述第二主节点对应的第一操作日志信息以及第二备节点对应的第二操作日志信息;所述第二备节点为所述至少两个备节点中除第一备节点外的备节点;
第一同步模块,用于基于所述第一操作日志信息以及所述第二操作日志信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的数据。
第三方面,本发明提供一种电子设备,包括:处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述第一方面中任一项所述的分布式存储系统的数据处理方法。
第四方面,本发明提供一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述第一方面中任一项实施例中的分布式存储系统的数据处理方法中的步骤。
本发明实施例中,通过向至少两个备节点分别申请第一缓存,以供第一主节点可以直接对至少两个备节点进行远程内存访问,这样,在后续第一主节点接收到写请求的情况下,可直接远程对第一缓存进行写操作,即将写请求直接写入备节点的第一缓存,无需备节点的处理器参与,提高了对分布式存储系统中业务IO数据的处理速度,具体地,提高了向备节点进行写入操作的速度。同时,在第一主节点发生故障的情况下,分布式存储系统可以将第一备节点确定为第二主节点,并获取第二主节点对应的第一操作日志信息以及第二备节点对应的第二操作日志信息,基于第一操作日志信息以及第二操作日志信息,同步第二主节点与第二备节点的数据。这样,可以在第一主节点出现故障的情况下,及时确定第二主节点替代第一主节点,并且由于第一主节点在将写请求写入至少两个备节点的第一缓存的过程中可能存在并行操作,即同时向至少两个备节点的第一缓存写入多个写请求,在第一主节点故障的情况下,至少两个备节点中已写入的写请求可能存在差异,则需要通过远程内存访问技术对第二主节点(第一备节点)以及第二备节点中的数据进行同步,以确保第二主节点(第一备节点)以及第二备节点中的数据一致性,提高了分布式存储系统的稳定性,降低了写入过程中数据丢失的风险,同时也一定程度上降低了处理器开销,并且降低了写请求的处理时延。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种分布式存储系统的数据处理方法的步骤流程图;
图2是本发明实施例提供的一种分布式存储系统的具体架构示意图;
图3是本发明实施例提供的一种分布式存储系统的数据处理方法的具体步骤流程图;
图4是本发明实施例提供的一种另一种分布式存储系统的数据处理方法的具体步骤流程图;
图5是本发明实施例提供的一种分布式存储系统的数据处理装置的结构图;
图6是本发明实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的一种分布式存储系统的数据处理方法的步骤流程图,应用于分布式存储系统,所述分布式存储系统包括主节点以及至少两个备节点,所述主节点包括第一主节点。
本发明实施例中,在现有的分布式存储系统中,可以将一个大文件进行拆分并缓存在多个不同的节点上,分布式存储系统中可以包括主节点以及至少两个备节点,在分布式存储系统的缓存机制中,为确保数据的安全性,往往会选择至少两个备节点进行备份缓存,提高缓存的可靠性。其中,节点可以指缓存服务器或缓存节点。主节点可以包括第一主节点,第一主节点可以是预先针对分布式存储系统中的缓存节点进行定义的,相应的,第一主节点对应的至少两个备节点也可以是预先针对分布式存储系统中的缓存节点进行定义的。
如图1所示,该方法可以包括:
步骤101、向所述至少两个备节点分别申请第一缓存;所述第一缓存用于供所述第一主节点对所述至少两个备节点进行远程内存访问。
本发明实施例中,向至少两个备节点分别申请第一缓存,第一缓存可以是备节点中的保电内存,或固态硬盘(SSD)等存储空间,保电内存的硬件类型可以包括电池备份单元(batteryback-upunit,BBU)、非易失随机访问存储器(Non-Volatile Random AccessMemory,NVRAM)、傲腾内存等。第一缓存可以是备节点中全部或部分缓存空间,第一缓存用于供第一主节点对至少两个备节点进行远程内存访问,也就是说,第一主节点在将数据写入第一缓存的情况下,可以绕开备节点的处理器,直接对第一缓存进行访问。
步骤102、在所述第一主节点接收到写请求的情况下,将所述写请求写入所述至少两个备节点对应的第一缓存以及所述第一主节点的第二缓存。
本发明实施例中,分布式存储系统中可以包括协议接入节点,在第一主节点接收到协议接入节点发送的写请求的情况下,将写请求基于远程内存访问技术写入至少两个备节点对应的第一缓存。具体的,第一主节点在接收到协议接入节点发送的写请求的情况下,通过第一主节点中的RDMA网卡将写请求发送至备节点中的RDMA网卡,备节点中的RDMA网卡在接收到写请求的情况下,将写请求写入第一缓存,并向第一主节点的RDMA网卡返回回调消息,并由第一主节点的RDMA网卡通知第一主节点的处理器本次写操作完成。第一主节点还需要将写请求写入本节点的第二缓存,第二缓存可以是第一主节点的保电内存或固态硬盘(SSD)等存储空间,保电内存的硬件类型可以包括电池备份单元(batteryback-upunit,BBU)、非易失随机访问存储器(Non-Volatile Random Access Memory,NVRAM)、傲腾内存等。第二缓存可以是第一主节点中全部或部分缓存空间,具体可以根据实际需求划分,本发明实施例对此不做限制。可以理解的是,第一主节点在接收到写请求的情况下,可以先将写请求写入第二缓存也可以在接收到备节点的RDMA网卡发送的回调消息后,再将写请求写入第二缓存,本发明实施例对于将写请求写入第一缓存以及第二缓存的顺序不做限制。
示例性的,在第一主节点将写请求写入至少两个备节点对应的第一缓存的过程中,针对任一备节点,假设第一主节点向该备节点申请了32MB的第一缓存,第一主节点将第一个写请求:写请求1写入第一缓存,写请求1的大小为100k,则写请求1在第一缓存中的地址信息为0~100k,同理,第一主节点将第二个写请求:写请求2继续写入第一缓存,写请求2的大小为100k,则写请求2在第一缓存中的地址信息为100k~200k。
步骤103、在所述第一主节点发生故障的情况下,将第一备节点确定为第二主节点,并获取所述第二主节点对应的第一操作日志信息以及第二备节点对应的第二操作日志信息;所述第二备节点为所述至少两个备节点中除第一备节点外的备节点。
本发明实施例中,在第一主节点发生故障的情况下,表征第一主节点无法承担主节点功能,需要重新制定一个节点替代第一主节点。因此,可以将至少两个备节点中的第一备节点确定为第二主节点,并将至少两个备节点中除第一备节点外的备节点确定为第二备节点。示例性的,在主节点为节点1,至少两个备节点包括节点2、节点3的情况下,若节点1故障,则可以将备节点中的节点2确定为第二主节点,则相应的,将节点3确定为第二备节点。获取第二主节点对应的第一操作日志信息,其中,第一操作日志信息可以是基于对原第一备节点对应的第一缓存中的写请求进行解析得到的,第二操作日志信息可以是基于对第二备节点对应的第一缓存中的写请求进行解析得到的。第一操作日志信息中可以包括第一写请求信息,第一写请求信息中包含第一备节点对应的第一缓存中的全部写请求对应的写请求信息。第二操作日志信息中可以包括第二写请求信息,第二写请求信息中包含第二备节点对应的第一缓存中的全部写请求对应的写请求信息。其中,写请求信息可以包括写请求对应的版本信息、对象标识(oid)、偏移量信息(offset)以及长度信息(len)。针对任一写请求,版本信息可以是该写请求对应的版本号,对象标识可以是该写请求携带的对象对应的对象标识,偏移量信息可以是该写请求对应的起始缓存位置,长度信息可以是该写请求的大小。写入第一缓存的每个写请求均对应有版本信息、对象标识、偏移量信息以及长度信息。
步骤104、基于所述第一操作日志信息以及所述第二操作日志信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的数据。
本发明实施例中,由于第一操作日志信息是基于对原第一备节点对应的第一缓存中的写请求进行解析得到的,第二操作日志信息可以是基于对第二备节点对应的第一缓存中的写请求进行解析得到的,则在原第一备节点被确定为第二主节点后,为确保第二主节点与第二备节点之间的数据一致性,可以基于第一操作日志信息以及第二操作日志信息,再次基于RDMA技术同步第二主节点与第二备节点之间的数据(写请求)。示例性的,可以基于第一操作日志信息以及第二操作日志信息,确定第二主节点相对于第二备节点对应的写请求差异以及第二备节点相对于第二主节点对应的写请求差异,并通过第二主节点的RDMA网卡与第二备节点的RDMA网卡,基于两种写请求差异进行数据同步。
综上所述,本发明实施例中,通过向至少两个备节点分别申请第一缓存,以供第一主节点可以直接对至少两个备节点进行远程内存访问,这样,在后续第一主节点接收到写请求的情况下,可直接远程对第一缓存进行写操作,即将写请求直接写入备节点的第一缓存,无需备节点的处理器参与,提高了对分布式存储系统中业务IO数据的处理速度,具体地,提高了向备节点进行写入操作的速度。同时,在第一主节点发生故障的情况下,分布式存储系统可以将第一备节点确定为第二主节点,并获取第二主节点对应的第一操作日志信息以及第二备节点对应的第二操作日志信息,基于第一操作日志信息以及第二操作日志信息,同步第二主节点与第二备节点的数据。这样,可以在第一主节点出现故障的情况下,及时确定第二主节点替代第一主节点,并且由于第一主节点在将写请求写入至少两个备节点的第一缓存的过程中可能存在并行操作,即同时向至少两个备节点的第一缓存写入多个写请求,在第一主节点故障的情况下,至少两个备节点中已写入的写请求可能存在差异,则需要通过远程内存访问技术对第二主节点(第一备节点)以及第二备节点中的数据进行同步,以确保第二主节点(第一备节点)以及第二备节点中的数据一致性,提高了分布式存储系统的稳定性,降低了写入过程中数据丢失的风险,同时也一定程度上降低了处理器开销,并且降低了写请求的处理时延。
可选地,步骤101可以包括以下步骤:
步骤201、向所述分布式存储系统中的至少两个备节点分别发送缓存申请请求。
本发明实施例中,在第一主节点进程启动后,通过第一主节点向分布式存储系统中的至少两个备节点分别发送缓存申请请求。其中,缓存申请请求用于向至少两个备节点预申请第一缓存。
步骤202、在接收到所述至少两个备节点发送的反馈信息的情况下,针对任一备节点发送的反馈信息,基于所述反馈信息携带的所述备节点从全部缓存空间中划分的缓存空间的起止地址,确定所述备节点对应的第一缓存。
本发明实施例中,针对任一备节点,备节点在接收到缓存申请请求的情况下,从该备节点对应的全部缓存空间中划分全部或部分缓存空间,作为第一缓存,并向第一主节点发送反馈信息,该反馈信息携带有第一缓存对应的起止地址,即分配给第一主节点的起始位置以及终止位置。其中,备节点对应的全部缓存空间可以是保电内存或固态硬盘(SSD)。
本发明实施例中,通过第一主节点向备节点发送缓存申请请求确定第一缓存,可以使得第一主节点可以直接基于远程内存访问技术对第一缓存进行访问,一定程度上提高了缓存效率。同时,第一主节点通过向至少两个备节点进行一次预申请第一缓存的操作,可以在后续将写请求写入第一缓存的过程中,无需重复获取第一缓存,一定程度上降低了缓存操作的时延。
可选地,所述分布式存储系统中还包括协议客户端以及协议接入节点,所述协议接入节点用于在接收到所述协议客户端发送的目标写请求的情况下,向所述第一主节点发送所述写请求;所述目标写请求中携带有目标文件地址。
本发明实施例中,分布式存储系统还包括协议客户端以及协议接入节点,协议客户端与协议接入节点进行通信,协议客户端可以向协议接入节点发送目标写请求,该目标写请求用于指示将目标文件进行存储,目标写请求中可以携带有目标文件对应的目标文件地址。协议接入节点在接受到目标写请求的情况下,向第一主节点发送写请求。
可选地,在“协议接入节点接受到目标写请求的情况下,向第一主节点发送写请求”的步骤中,协议接入节点还用于执行以下步骤:
步骤301、基于所述目标文件地址确定目标文件,并将所述目标文件进行切分,得到多个对象。
本发明实施例中,协议接入节点基于目标写请求中携带的目标文件地址,确定目标文件地址对应的目标文件。将目标文件进行拆分,得到多个对象。示例性的,可以将目标文件按照固定大小切分为多个对象,其中,固定大小的具体数值可以根据实际需求设定,本发明实施例对此不做限制。例如:可以将一个10MB的目标文件按照固定大小为4MB进行切分,即得到的多个对象包括:0~4MB为对象0,4MB~8MB为对象1,8MB~10MB为对象2。
步骤302、针对所述多个对象中的任一对象,基于所述对象的对象标识,确定所述对象对应的目标分区;所述目标分区与所述第一主节点以及所述备节点相对应。
本发明实施例中,由于目标文件可能较大,可以将一个大文件的缓存在多个不同的节点上,因此针对切分得到多个对象,可以依次进行缓存。为了保证缓存数据的一致性和可靠性,可以对分布式存储系统对应的分布式集群内的缓存节点划分分区,得到多个目标分区,一个目标分区可以对应一个第一主节点以及至少两个备节点。针对多个对象中的任一对象,基于该对象对应的对象标识,确定得到目标分区对应的分区标识。一个目标分区对应唯一一个分区标识,也就是说,针对每个对象,均可以确定一个对应的目标分区。根据分区标识以及分布式集群中的分区视图,可以确定该目标分区对应的第一主节点以及至少两个备节点的信息。
可选地,步骤302可以包括以下步骤:
步骤3021、确定所述对象对应的对象标识的目标哈希值。
本发明实施例中,根据对象对应的对象标识,计算该对象标识的目标哈希值。
步骤3022、基于所述目标哈希值以及所述分布式存储系统中的总分区数量,确定分区标识;所述分区标识用于指示所述分布式存储系统中唯一的目标分区。
本发明实施例中,基于目标哈希值以及分布式存储系统中划分的总分区数量,计算得到分区标识。其中,分区标识用于指示分布式存储系统中唯一的目标分区。示例性的,可以将目标哈希值以及总分区数量做除法,并获取取余结果,将该取余结果确定为分区标识。例如:目标哈希值为7,分布式存储系统中的总分区数量为3,则对应的取余结果为1,分区标识即为1。
步骤3023、基于所述分区标识,从所述分布式存储系统中的多个分区中确定所述目标分区。
本发明实施例中,基于分区标识,从分布式存储系统中的多个分区中确定出该分区标识对应的唯一目标分区。示例性的,可以根据分区标识以及分布式集群中的分区视图,确定目标分区。
图2示出了一种分布式存储系统的具体架构示意图,如图2所示,将目标文件按照固定大小划分为3个对象,同时针对分布式存储系统中的3个缓存节点,对其划分得到3个分区,即分区1、分区2、分区3,分区1对应的第一主节点为节点1,备节点为节点2以及节点3,分区2对应的第一主节点为节点2,备节点为节点1以及节点3,分区3对应的第一主节点为节点3,备节点为节点1以及节点2。针对每个划分得到的对象,根据对象标识对应的哈希值以及总分区数量,确定对应的分区标识,则可以确定该对象对应的目标分区。
步骤303、向所述第一主节点发送所述写请求。
本发明实施例中,针对每个对象确定出其对应的目标分区后,向目标分区对应的第一主节点发送写请求,该写请求中携带有该对象对应的对象标识。
本发明实施例中,协议接入节点通过将目标文件进行划分,并针对划分得到的每个对象,确定对应的目标分区、第一主节点以及至少两个备节点,可以实现对目标文件的缓存,同时一定程度上减轻了各缓存节点的负载。
可选地,本发明实施例还可以包括以下步骤:
步骤401、在接收到所述至少两个备节点发送的回调消息后,通过所述第一主节点向所述协议接入节点发送响应消息;所述响应消息用于通知所述协议接入节点所述第一主节点完成所述写请求对应的写入操作。
本发明实施例中,在第一主节点接受到至少两个备节点发送的回调消息后,可以通过第一主节点向协议接入节点发送响应消息,以表明第一主节点已完成将写请求写入第一主节点以及至少两个备节点的操作。
步骤402、在向协议接入节点发送响应消息后,通过所述第一主节点向所述至少两个备节点发送通知消息;所述通知消息携带有所述写请求在所述至少两个备节点的第一缓存中对应的地址信息。
本发明实施例中,在第一主节点向协议接入节点发送响应消息后,第一主节点向至少两个备节点的处理器发送异步通知消息,该异步通知消息用于通知至少两个备节点已将写请求写入备节点对应的第一缓存中,异步通知消息可以携带有写请求在至少两个备节点的第一缓存中对应的地址信息,用于供至少两个备节点管理第一缓存中的写请求。
本发明实施例中,在第一主节点完成将写请求写入第一主节点以及至少两个备节点的写入操作后,向至少两个备节点发送通知消息,这样,在写入过程中无需备节点处理器的参与,而是在写入操作完成后通知备节点写请求在第一缓存中对应的地址信息,以便于被请求对写请求进行管理,提高了缓存效率的同时,确保了备节点中的数据安全性。
可选地,所述分布式存储系统还包括管理节点,步骤103可以包括:
步骤501、在检测到所述第一主节点故障的情况下,将初始节点视图中的所述第一主节点删除,得到第一节点视图。
本发明实施例中,管理节点在检测到第一主节点故障的情况下,更新初始节点视图,初始节点视图中可以包括在初始状态下,分布式存储系统中包含的全部缓存节点。在第一主节点故障的情况下,需要更新初始节点视图,示例性的,可以将初始节点视图中的第一主节点删除,得到第一节点视图。
步骤502、通过所述管理节点将所述第一节点视图发送至所述备节点,并确定所述至少两个备节点中的第一备节点为所述第二主节点。
本发明实施例中,管理节点可以将第一节点视图发送至备节点,并将至少两个备节点中的第一备节点为第二主节点。可以理解的是,将至少两个备节点中的第一备节点确定为第二主节点的操作可以是管理节点在基于对至少两个备节点的分析后,确定出将至少两个备节点中的哪一备节点作为第二主节点,也可以是至少两个备节点在接受到第一节点视图后,基于预设的主备节点切换规则,判断自身是否需要切换为第二主节点,其中,主备节点切换规则可以根据实际需求自行设定,本发明实施例对此不做限制。
本发明实施例中,通过管理节点更新初始节点视图得到第一节点视图,可以在第一主节点故障的情况下,及时确定第二主节点,以维持分布式存储系统的缓存机制的正常运行。
可选地,步骤103可以包括以下步骤:
步骤601、在所述第二备节点接收到所述第二主节点发送的消息获取请求的情况下,通过解析所述第二备节点的第一缓存中的写请求,获取所述第二备节点对应的第二操作日志信息。
本发明实施例中,在将第一备节点确定为第二主节点的情况下,可以通过第二主节点向第二备节点发送消息获取请求,其中,消息获取请求可以是GetLogInfo消息。消息获取请求用于查询第二备节点对应的第二操作日志信息。第二备节点在接收到第二主节点发送的消息获取请求的情况下,对第二备节点对应的第一缓存中的写请求进行解析,并获取对应的写请求信息,得到第二操作日志信息。第二备节点向第二主节点发送回响应消息,回响应消息中可以包含第二操作日志信息。第二操作日志信息中可以包括第二写请求信息,第二写请求信息可以是第二备节点的第一缓存中的全部写请求对应的写请求信息。第二写请求信息中可以包括写请求对应的版本信息、对象标识、偏移量信息以及长度信息。
相应的,步骤601可以包括:
步骤6011、依次读取所述第二备节点的第一缓存中的多个写请求,并获取所述多个写请求对应的第二写请求信息。
本发明实施例中,从第二备节点的第一缓存中依次读取多个写请求,并分别获取多个写请求对应的第二写请求信息。示例性的,第二备节点可以通过从第二备节点对应的第一缓存的起始位置开始解析,读取第一缓存中的全部写请求并解析得到对应的写请求信息,得到第二写请求信息。
步骤602、通过解析所述第二主节点对应的第一缓存中的写请求,获取所述第二主节点对应的第一操作日志信息。
本发明实施例中,第二主节点在接收到第二备节点发送的第二操作日志信息的情况相爱,解析自身节点对应的第一缓存中的写请求,并获取对应的写请求信息,作为第一操作日志信息。第一操作日志信息中可以包括第一写请求信息,第一写请求信息可以是第二主节点的第一缓存中的全部写请求对应的写请求信息。第一写请求信息中可以包括写请求对应的版本信息、对象标识、偏移量信息以及长度信息。
相应的,步骤602可以包括:
步骤6021、依次读取所述第二主节点的第一缓存中的多个写请求,并获取所述多个写请求对应的第一写请求信息。
本发明实施例中,从第二主节点的第一缓存中依次读取多个写请求,并分别获取多个写请求对应的第一写请求信息。示例性的,第二主节点可以通过从第二主节点对应的第一缓存的起始位置开始解析,读取第一缓存中的全部写请求并解析得到对应的写请求信息,得到第一写请求信息。
本发明实施例中,第二主节点作为主备节点切换后的主节点,需要获取第二备节点对应的第二操作日志信息以及自身节点对应的第一操作日志信息,以进行第二备节点与第二主节点的数据同步。
在一种可能的实施方式中,第一操作日志信息中还可以包括第一版本号信息、第二版本号信息,其中,第一版本号信息是基于第二主节点(第一备节点)接收到的第一主节点发送的最新通知消息确定的,具体的,第一主节点在故障前最后一次写完成并向协议接入节点发送响应消息后,会向第二主节点(也即第一备节点)发送最新通知消息,最新通知消息中包含本次写完成的写请求在第二主节点(也即第一备节点)的第一缓存中的地址信息,基于该地址信息,解析写请求,可以获取最后一次写完成的写请求对应的版本号信息。第二版本号信息可以是基于对第二主节点(第一备节点)的第一缓存进行读取,得到的第二主节点(第一备节点)的第一缓存中写入的最新写请求的版本信息,也就是说,第二版本号信息为第二主节点(第一备节点)的第一缓存中写入的最新写请求对应的版本信息。示例性的,假设第二主节点(第一备节点)的第一缓存中包含写请求1、写请求2、写请求3、写请求5、写请求6,第一主节点针对写请求1、写请求2、写请求3均写完成,并向至少两个备节点(包括第一备节点)发送通知消息,则第一版本信息为写请求3对应的版本信息,第二版本信息为写请求6对应的版本信息。
相应的,第二操作日志信息中还可以包括第三版本号信息、第四版本号信息,其中,第三版本号信息是基于第二备节点接收到的第一主节点发送的最新通知消息确定的,具体的,第一主节点在故障前最后一次写完成并向协议接入节点发送响应消息后,会向第二备节点发送最新通知消息,最新通知消息中包含本次写完成的写请求在第二备节点的第一缓存中的地址信息,基于该地址信息,解析写请求,可以获取最后一次写完成的写请求对应的版本号信息。第四版本号信息可以是基于对第二备节点的第一缓存进行读取,得到的第二备节点的第一缓存中写入的最新写请求的版本信息,也就是说,第四版本号信息为第二备节点的第一缓存中写入的最新写请求对应的版本信息。
可选地,步骤104可以包括以下步骤:
步骤701、将所述第一写请求信息以及所述第二写请求信息进行对比。
本发明实施例中,获取第一操作日志信息中的第一写请求信息以及获取第二操作日志信息中的第二写请求信息。将第一写请求信息与第二写请求信息进行对比。由于第一写请求信息为第二主节点对应的第一缓存中的全部写请求信息,也即第一写请求信息可以表征第二主节点对应的第一缓存中的全部写请求,相应的,第二写请求信息为第二备节点对应的第一缓存中的全部写请求信息,也即第一写请求信息可以表征第二备节点对应的第一缓存中的全部写请求,因此,将第一写请求信息与第二写请求信息进行对比,可以确定第二主节点与第二备节点在缓存过程中由于并行缓存写入操作导致的写请求差异。
步骤702、获取第一写请求信息与所述第二写请求信息的写请求信息交集。
本发明实施例中,第一写请求信息中可以包含多个写请求信息,第二写请求信息汇总可以包括多个写请求信息,获取第一写请求信息与第二写请求信息中的交集,得到写请求信息交集,写请求信息集合中可以包括至少一个写请求信息,该至少一个写请求信息可以是在第一主节点出现故障之前,第一主节点同时向至少两个备节点(包括第一备节点(第二主节点)以及第二备节点)对应的第一缓存完成写入写请求的操作后,即在至少两个备节点的第一缓存中写完成的写请求信息。
步骤703、基于所述写请求信息交集、所述第一写请求信息以及所述第二写请求信息,确定所述第二主节点与所述第二备节点之间需要进行同步的目标信息。
本发明实施例中,目标信息为第二主节点与第二备节点之间需要同步的写请求信息,也即,目标信息用于表征第二主节点的第一缓存与第二备节点的第一缓存之间具有的不同的写请求信息。目标信息可以包括第一目标信息以及第二目标信息。
相应的,步骤703可以包括以下步骤:
步骤7031、将所述第一写请求信息中除所述写请求信息交集外的写请求信息确定为第一目标信息。
本发明实施例中,将第一写请求信息中除写请求信息交集外的写请求信息,确定为第一目标信息,第一目标信息用于表征已写入第二主节点(第一备节点)对应的第一缓存,但并未写入第二备节点对应的第一缓存的写请求信息。
步骤7032、将所述第二写请求信息中除所述写请求信息交集外的写请求信息确定为第二目标信息。
本发明实施例中,将第二写请求信息中除写请求信息交集外的写请求信息,确定为第二目标信息,第二目标信息用于表征已写入第二备节点对应的第一缓存,但并未写入第二主节点(第一备节点)对应的第一缓存的写请求信息。也就是说,第一目标信息为第一写请求信息相对于第二写请求信息中的差异写请求信息,第二目标信息为第二写请求信息相对于第一写请求信息中的差异写请求信息。
示例性的,假设第一写请求信息中包括写请求1、写请求2、写请求3、写请求5、写请求7,第二写请求信息中包括写请求1、写请求2、写请求3、写请求4、写请求6、写请求8,将第一写请求信息与第二写请求信息进行对比,则第一写请求信息与第二写请求信息的写请求信息交集包括:写请求1、写请求2、写请求3。目标信息可以包括:写请求4、写请求5、写请求6、写请求7、写请求8,第一目标信息可以包括:写请求5、写请求7,第二目标信息可以包括:写请求4、写请求6、写请求8。
步骤704、基于所述目标信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的写请求。
步骤704可以包括以下步骤:
步骤7033、基于所述第一目标信息以及所述第二目标信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的写请求。
本发明实施例中,基于第一目标信息以及第二目标信息,同步第二主节点与第二备节点的写请求。也即,将未写入第二备节点对应的第一缓存的写请求信息,即第一目标信息写入第二备节点,并且将未写入第二主节点(第一备节点)对应的第一缓存的写请求信息,即第二目标信息写入第二主节点,以实现第二主节点与第二备节点中的数据同步。
本发明实施例中,通过对第一写请求信息以及第二写请求信息取交集处理,并确定第一目标信息以及第二目标信息,可以快速确定第二主节点以及第二备节点之间的并未同步的写请求信息,进而可以根据第一目标信息以及第二目标信息,实现第二主节点与第二备节点中的数据同步。
可选地,步骤7033可以包括以下步骤:
步骤801、通过远程内存访问技术将所述第一目标信息写入所述第二备节点中的第三缓存。
本发明实施例中,在确定第一目标信息以及第二目标信息后,可以将第一目标信息写入第二备节点中的第一缓存。示例性的,第二主节点可以向第二备节点申请第三缓存,第三缓存可以包括第一缓存的全部缓存空间,例如,第三缓存可以与第一缓存相同。也就是说,第二主节点需要向第二备节点申请对第三缓存(包括第一缓存)的远程内存访问权限,以便将第一目标信息再次通过远程内存访问技术写入第二备节点。具体的,将第一目标信息中的写请求写入第二备节点对应的第三缓存的步骤与步骤102中将写请求写入至少两个备节点对应的第一缓存的步骤类似,本发明实施例对此不做限制。
步骤802、通过所述第二主节点获取所述第二备节点的第二目标信息,并将所述第二目标信息写入所述第二主节点对应的第一缓存。
本发明实施例中,第二主节点可以拉取第二备节点中的第二目标信息,在得到第二目标信息后,将第二目标信息写入自身节点对应的第一缓存。在完成数据同步后,第二主节点对应的第一缓存中的写请求与第二备节点对应的第三缓存中的写请求相同。
本发明实施例中,通过远程内存访问技术可以将第一目标信息写入第二备节点的第三缓存,并且将第二目标信息写入第二主节点对应的第一缓存,可以实现第二主节点与第二备节点的数据同步,并且,在数据同步的过程中,无需第二备节点的处理器参与,降低了处理器开销,并且降低了数据同步过程的处理时延。
可选地,步骤102可以包括以下步骤:
步骤901、针对所述至少两个备节点中的任一备节点,基于所述第一主节点的第一网卡获取写请求。
本发明实施例中,在第一主节点接收到写请求的情况下,需要将写请求写入至少两个备节点中的第一缓存,具体的,第一主节点基于第一网卡从协议接入节点获取写请求。第一网卡可以是RDMA网卡。
步骤902、基于所述第一网卡将所述写请求发送至所述备节点的第二网卡;所述第二网卡用于在接收到所述写请求的情况下,将所述写请求写入所述第一缓存。
本发明实施例中,基于第一网卡将写请求发送至备节点的第二网卡,第一网卡与第二网卡之间基于网络协议可以进行通信,第二网卡在接收到写请求的情况下,将该写请求写入第一缓存中。整个写入过程无需该备节点的处理器参与。第二网卡可以是RDMA网卡。
本发明实施例中,基于第一主节点的第一网卡以及备节点的第二网卡进行数据传输,可以直接在用户态执行数据传输,不需要在内核态与用户态之间做上下文切换,也无需穿越多层网络协议栈,实现了跨节点数据传输的数据零拷贝,提高了较高的带宽利用率,减少了处理器开销。
图3示出了一种分布式存储系统的数据处理方法的具体步骤流程图,如图3所示,协议接入节点接收到协议客户端发送的目标写请求,对目标写请求对应的目标文件进行拆分处理,得到拆分得到的对象对应的第一主节点,并向该第一主节点发送写请求。第一主节点预先向备节点1以及备节点2申请第一缓存,并在接收到协议接入节点发送的写请求的情况下,将写请求分别写入备节点1对应的第一缓存以及备节点2对应的第一缓存,并且将写请求写入自身(第一主节点)的第二缓存。第一主节点在收到备节点1以及备节点2的回调消息后,向协议接入节点发送响应消息,并向备节点1以及备节点2分别发送异步通知消息。
图4示出了另一种分布式存储系统的数据处理方法的具体步骤流程图,如图4所示,管理节点在检测到第一主节点故障的情况下,更新初始节点视图,得到第一节点视图,并向第一备节点以及第二备节点发送第一节点视图。第一备节点在接收到第一节点视图的情况下,根据预设的主备节点切换规则,确定本节点需要切换为主节点,即将第一备节点确定为第二主节点。第二主节点向第二备节点发送消息获取请求,第二备节点在接收到消息获取请求的情况下,解析第二备节点的第一缓存中的写请求,得到第二操作日志信息,并将第二操作日志信息发送给第二主节点。第二主节点解析本节点的第一缓存中的写请求,得到第一操作日志信息。基于第一操作日志信息以及第二操作日志信息,通过远程内存访问技术同步第二主节点与第二备节点的数据。
图5是本发明实施例提供的一种分布式存储系统的数据处理装置的结构示意图,如图5所示,应用于分布式存储系统,所述分布式存储系统包括主节点以及至少两个备节点,所述主节点包括第一主节点以及第二主节点,该装置具体可以包括:
第一申请模块1001,用于向所述至少两个备节点分别申请第一缓存;所述第一缓存用于供所述第一主节点对所述至少两个备节点进行远程内存访问;
第一写入模块1002,用于在所述第一主节点接收到写请求的情况下,将所述写请求写入所述至少两个备节点对应的第一缓存以及所述第一主节点的第二缓存;
第一确定模块1003,用于在所述第一主节点发生故障的情况下,将第一备节点确定为第二主节点,并获取所述第二主节点对应的第一操作日志信息以及第二备节点对应的第二操作日志信息;所述第二备节点为所述至少两个备节点中除第一备节点外的备节点;
第一同步模块1004,用于基于所述第一操作日志信息以及所述第二操作日志信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的数据。
可选地,第一申请模块1001包括:
第一发送模块,用于向所述分布式存储系统中的至少两个备节点分别发送缓存申请请求;
第二确定模块,用于在接收到所述至少两个备节点发送的反馈信息的情况下,针对任一备节点发送的反馈信息,基于所述反馈信息携带的所述备节点从全部缓存空间中划分的缓存空间的起止地址,确定所述备节点对应的第一缓存。
可选地,所述分布式存储系统中还包括协议客户端以及协议接入节点,所述协议接入节点用于在接收到所述协议客户端发送的目标写请求的情况下,向所述第一主节点发送所述写请求;所述目标写请求中携带有目标文件地址。
可选地,该装置还包括:
第一切分模块,用于基于所述目标文件地址确定目标文件,并将所述目标文件进行切分,得到多个对象;
第三确定模块,用于针对所述多个对象中的任一对象,基于所述对象的对象标识,确定所述对象对应的目标分区;所述目标分区与所述第一主节点以及所述备节点相对应;
第二发送模块,用于向所述第一主节点发送所述写请求。
可选地,所述第三确定模块,包括:
第一确定子模块,用于确定所述对象对应的对象标识的目标哈希值;
第二确定子模块,用于基于所述目标哈希值以及所述分布式存储系统中的总分区数量,确定分区标识;所述分区标识用于指示所述分布式存储系统中唯一的目标分区;
第三确定子模块,用于基于所述分区标识,从所述分布式存储系统中的多个分区中确定所述目标分区。
可选地,该装置还包括:
第三发送模块,用于在接收到所述至少两个备节点发送的回调消息后,通过所述第一主节点向所述协议接入节点发送响应消息;所述响应消息用于通知所述协议接入节点所述第一主节点完成将所述写请求写入所述第一主节点以及所述至少两个备节点的操作;
第四发送模块,用于在向协议接入节点发送响应消息后,通过所述第一主节点向所述至少两个备节点发送通知消息;所述通知消息携带有所述写请求在所述至少两个备节点的第一缓存中对应的地址信息。
可选地,所述分布式存储系统还包括管理节点,第一确定模块1003包括:
第一删除模块,用于在检测到所述第一主节点故障的情况下,将初始节点视图中的所述第一主节点删除,得到第一节点视图;
第四确定子模块,用于通过所述管理节点将所述第一节点视图发送至所述备节点,并确定所述至少两个备节点中的第一备节点为所述第二主节点。
可选地,第一确定模块1003还包括:
第一获取模块,用于在所述第二备节点接收到所述第二主节点发送的消息获取请求的情况下,通过解析所述第二备节点的第一缓存中的写请求,获取所述第二备节点对应的第二操作日志信息;
第二获取模块,用于通过解析所述第二主节点对应的第一缓存中的写请求,获取所述第二主节点对应的第一操作日志信息。
可选地,所述第二操作日志信息中包括第二写请求信息;第一获取模块包括:
第一获取子模块,用于依次读取所述第二备节点的第一缓存中的多个写请求,并获取所述多个写请求对应的第二写请求信息。
可选地,所述第一操作日志信息中包括第一写请求信息;第二获取模块包括:
第二获取子模块,用于依次读取所述第二主节点的第一缓存中的多个写请求,并获取所述多个写请求对应的第一写请求信息。
可选地,第一同步模块1004包括:
第一对比模块,用于将所述第一写请求信息以及所述第二写请求信息进行对比;
第三获取模块,用于获取第一写请求信息与所述第二写请求信息的写请求信息交集;
第四确定模块,用于基于所述写请求信息交集、所述第一写请求信息以及所述第二写请求信息,确定所述第二主节点与所述第二备节点之间需要进行同步的目标信息;
第一同步子模块,用于基于所述目标信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的写请求。
可选地,所述目标信息包括第一目标信息以及第二目标信息;第四确定模块包括:
第五确定子模块,用于将所述第一写请求信息中除所述写请求信息交集外的写请求信息确定为第一目标信息;
第六确定子模块,用于将所述第二写请求信息中除所述写请求信息交集外的写请求信息确定为第二目标信息;
第一同步子模块包括:
第二同步子模块,用于基于所述第一目标信息以及所述第二目标信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的写请求。
可选地,所述第一目标信息用于表征需要同步至所述第二备节点的写请求信息,所述第二目标信息用于表征需要同步至所述第二主节点的写请求信息。
可选地,第二同步子模块包括:
第二写入模块,用于通过远程内存访问技术将所述第一目标信息写入所述第二备节点中的第三缓存;
第三写入模块,用于通过所述第二主节点获取所述第二备节点的第二目标信息,并将所述第二目标信息写入所述第二主节点对应的第一缓存。
可选地,第一写入模块1002包括:
第四获取模块,用于针对所述至少两个备节点中的任一备节点,基于所述第一主节点的第一网卡获取写请求;
第五发送模块,用于基于所述第一网卡将所述写请求发送至所述备节点的第二网卡;所述第二网卡用于在接收到所述写请求的情况下,将所述写请求写入所述第一缓存。
可选地,所述第二网卡还用于在将所述写请求写入所述第一缓存后向所述第一网卡发送回调消息。
可选地,所述第一写请求信息以及所述第二写请求信息中包括写请求对应的版本信息、对象标识、偏移量信息以及长度信息。
本发明还提供了一种电子设备,参见图6,包括:处理器1101、存储器1102以及存储在所述存储器上并可在所述处理器上运行的计算机程序11021,所述处理器执行所述程序时实现前述实施例的分布式存储系统的数据处理方法。
本发明还提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述实施例的分布式存储系统的数据处理方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明的排序设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
需要指出的是,本申请中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (19)

1.一种分布式存储系统的数据处理方法,其特征在于,所述分布式存储系统包括主节点以及至少两个备节点,所述主节点包括第一主节点;所述方法包括:
向所述至少两个备节点分别申请第一缓存;所述第一缓存用于供所述第一主节点对所述至少两个备节点进行远程内存访问;
在所述第一主节点接收到写请求的情况下,将所述写请求写入所述至少两个备节点对应的第一缓存以及所述第一主节点的第二缓存;
在所述第一主节点发生故障的情况下,将第一备节点确定为第二主节点,并获取所述第二主节点对应的第一操作日志信息以及第二备节点对应的第二操作日志信息;所述第二备节点为所述至少两个备节点中除第一备节点外的备节点;
基于所述第一操作日志信息以及所述第二操作日志信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的数据;
所述基于所述第一操作日志信息以及所述第二操作日志信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的数据,包括:
将第一写请求信息以及第二写请求信息进行对比;所述第一操作日志信息中包括所述第一写请求信息,所述第二操作日志信息中包括所述第二写请求信息;
获取所述第一写请求信息与所述第二写请求信息的写请求信息交集;
基于所述写请求信息交集、所述第一写请求信息以及所述第二写请求信息,确定所述第二主节点与所述第二备节点之间需要进行同步的目标信息;
基于所述目标信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的写请求。
2.根据权利要求1所述的方法,其特征在于,所述向所述至少两个备节点分别申请第一缓存,包括:
向所述分布式存储系统中的至少两个备节点分别发送缓存申请请求;
在接收到所述至少两个备节点发送的反馈信息的情况下,针对任一备节点发送的反馈信息,基于所述反馈信息携带的所述备节点从全部缓存空间中划分的缓存空间的起止地址,确定所述备节点对应的第一缓存。
3.根据权利要求1所述的方法,其特征在于,所述分布式存储系统中还包括协议客户端以及协议接入节点,所述协议接入节点用于在接收到所述协议客户端发送的目标写请求的情况下,向所述第一主节点发送所述写请求;所述目标写请求中携带有目标文件地址。
4.根据权利要求3所述的方法,其特征在于,所述协议接入节点还用于:
基于所述目标文件地址确定目标文件,并将所述目标文件进行切分,得到多个对象;
针对所述多个对象中的任一对象,基于所述对象的对象标识,确定所述对象对应的目标分区;所述目标分区与所述第一主节点以及所述备节点相对应;
向所述第一主节点发送所述写请求。
5.根据权利要求4所述的方法,其特征在于,所述基于所述对象的对象标识,确定所述对象对应的目标分区,包括:
确定所述对象对应的对象标识的目标哈希值;
基于所述目标哈希值以及所述分布式存储系统中的总分区数量,确定分区标识;所述分区标识用于指示所述分布式存储系统中唯一的目标分区;
基于所述分区标识,从所述分布式存储系统中的多个分区中确定所述目标分区。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在接收到所述至少两个备节点发送的回调消息后,通过所述第一主节点向所述协议接入节点发送响应消息;所述响应消息用于通知所述协议接入节点所述第一主节点完成将所述写请求写入所述第一主节点以及所述至少两个备节点的操作;
在向协议接入节点发送响应消息后,通过所述第一主节点向所述至少两个备节点发送通知消息;所述通知消息携带有所述写请求在所述至少两个备节点的第一缓存中对应的地址信息。
7.根据权利要求1所述的方法,其特征在于,所述分布式存储系统还包括管理节点;所述在所述第一主节点发生故障的情况下,将第一备节点确定为第二主节点,包括:
在检测到所述第一主节点故障的情况下,将初始节点视图中的所述第一主节点删除,得到第一节点视图;
通过所述管理节点将所述第一节点视图发送至所述备节点,并确定所述至少两个备节点中的第一备节点为所述第二主节点。
8.根据权利要求1所述的方法,其特征在于,所述获取所述第二主节点对应的第一操作日志信息以及第二备节点对应的第二操作日志信息,包括:
在所述第二备节点接收到所述第二主节点发送的消息获取请求的情况下,通过解析所述第二备节点的第一缓存中的写请求,获取所述第二备节点对应的第二操作日志信息;
通过解析所述第二主节点对应的第一缓存中的写请求,获取所述第二主节点对应的第一操作日志信息。
9.根据权利要求8所述的方法,其特征在于,所述通过解析所述第二备节点的第一缓存中的写请求,获取所述第二备节点对应的第二操作日志信息,包括:
依次读取所述第二备节点的第一缓存中的多个写请求,并获取所述多个写请求对应的第二写请求信息。
10.根据权利要求9所述的方法,其特征在于,所述通过解析所述第二主节点对应的第一缓存中的写请求,获取所述第二主节点对应的第一操作日志信息,包括:
依次读取所述第二主节点的第一缓存中的多个写请求,并获取所述多个写请求对应的第一写请求信息。
11.根据权利要求1所述的方法,其特征在于,所述目标信息包括第一目标信息以及第二目标信息;所述基于所述写请求信息交集、所述第一写请求信息以及所述第二写请求信息,确定所述第二主节点与所述第二备节点之间需要进行同步的目标信息,包括:
将所述第一写请求信息中除所述写请求信息交集外的写请求信息确定为第一目标信息;
将所述第二写请求信息中除所述写请求信息交集外的写请求信息确定为第二目标信息;
所述基于所述目标信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的写请求,包括:
基于所述第一目标信息以及所述第二目标信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的写请求。
12.根据权利要求11所述的方法,其特征在于,所述第一目标信息用于表征需要同步至所述第二备节点的写请求信息,所述第二目标信息用于表征需要同步至所述第二主节点的写请求信息。
13.根据权利要求11所述的方法,其特征在于,所述基于所述第一目标信息以及所述第二目标信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的写请求,包括:
通过远程内存访问技术将所述第一目标信息写入所述第二备节点中的第三缓存;
通过所述第二主节点获取所述第二备节点的第二目标信息,并将所述第二目标信息写入所述第二主节点对应的第一缓存。
14.根据权利要求1所述的方法,其特征在于,所述将所述写请求写入所述至少两个备节点对应的第一缓存,包括:
针对所述至少两个备节点中的任一备节点,基于所述第一主节点的第一网卡获取写请求;
基于所述第一网卡将所述写请求发送至所述备节点的第二网卡;所述第二网卡用于在接收到所述写请求的情况下,将所述写请求写入所述第一缓存。
15.根据权利要求14所述的方法,其特征在于,所述第二网卡还用于在将所述写请求写入所述第一缓存后向所述第一网卡发送回调消息。
16.根据权利要求1所述的方法,其特征在于,所述第一写请求信息以及所述第二写请求信息中包括写请求对应的版本信息、对象标识、偏移量信息以及长度信息。
17.一种分布式存储系统的数据处理装置,其特征在于,所述分布式存储系统包括主节点以及至少两个备节点,所述主节点包括第一主节点以及第二主节点,所述装置包括:
第一申请模块,用于向所述至少两个备节点分别申请第一缓存;所述第一缓存用于供所述第一主节点对所述至少两个备节点进行远程内存访问;
第一写入模块,用于在所述第一主节点接收到写请求的情况下,将所述写请求写入所述至少两个备节点对应的第一缓存以及所述第一主节点的第二缓存;
第一确定模块,用于在所述第一主节点发生故障的情况下,将第一备节点确定为第二主节点,并获取所述第二主节点对应的第一操作日志信息以及第二备节点对应的第二操作日志信息;所述第二备节点为所述至少两个备节点中除第一备节点外的备节点;
第一同步模块,用于基于所述第一操作日志信息以及所述第二操作日志信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的数据;
所述第一同步模块,包括:
第一对比模块,用于将第一写请求信息以及第二写请求信息进行对比;所述第一操作日志信息中包括所述第一写请求信息,所述第二操作日志信息中包括所述第二写请求信息;
第三获取模块,用于获取所述第一写请求信息与所述第二写请求信息的写请求信息交集;
第四确定模块,用于基于所述写请求信息交集、所述第一写请求信息以及所述第二写请求信息,确定所述第二主节点与所述第二备节点之间需要进行同步的目标信息;
第一同步子模块,用于基于所述目标信息,通过远程内存访问技术同步所述第二主节点与所述第二备节点的写请求。
18.一种电子设备,其特征在于,包括:
处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1-16中任一所述的分布式存储系统的数据处理方法。
19.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行权利要求1-16中任一所述的分布式存储系统的数据处理方法。
CN202311531857.1A 2023-11-16 2023-11-16 分布式存储系统的数据处理方法、装置、设备及介质 Active CN117255101B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311531857.1A CN117255101B (zh) 2023-11-16 2023-11-16 分布式存储系统的数据处理方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311531857.1A CN117255101B (zh) 2023-11-16 2023-11-16 分布式存储系统的数据处理方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN117255101A CN117255101A (zh) 2023-12-19
CN117255101B true CN117255101B (zh) 2024-02-20

Family

ID=89131713

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311531857.1A Active CN117255101B (zh) 2023-11-16 2023-11-16 分布式存储系统的数据处理方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN117255101B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105739924A (zh) * 2016-01-29 2016-07-06 华为技术有限公司 基于缓存集群的缓存方法和系统
CN107329708A (zh) * 2017-07-04 2017-11-07 郑州云海信息技术有限公司 一种分布式存储系统实现缓存数据的方法及系统
CN110691062A (zh) * 2018-07-06 2020-01-14 浙江大学 一种数据写入方法、装置及其设备
CN113852656A (zh) * 2020-06-28 2021-12-28 华为技术有限公司 一种数据传输方法、处理器系统及内存访问系统
CN113987064A (zh) * 2021-09-23 2022-01-28 阿里云计算有限公司 数据处理方法、系统及设备
CN114185815A (zh) * 2021-12-09 2022-03-15 建信金融科技有限责任公司 用于实现内存键值存储的方法、设备和系统
CN115202925A (zh) * 2021-04-13 2022-10-18 上海交通大学 基于rdma的支持细粒度容错的共识方法及系统
CN115640353A (zh) * 2022-09-01 2023-01-24 阿里云计算有限公司 数据读取方法、计算机存储介质和电子设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105739924A (zh) * 2016-01-29 2016-07-06 华为技术有限公司 基于缓存集群的缓存方法和系统
CN107329708A (zh) * 2017-07-04 2017-11-07 郑州云海信息技术有限公司 一种分布式存储系统实现缓存数据的方法及系统
CN110691062A (zh) * 2018-07-06 2020-01-14 浙江大学 一种数据写入方法、装置及其设备
CN113852656A (zh) * 2020-06-28 2021-12-28 华为技术有限公司 一种数据传输方法、处理器系统及内存访问系统
CN115202925A (zh) * 2021-04-13 2022-10-18 上海交通大学 基于rdma的支持细粒度容错的共识方法及系统
CN113987064A (zh) * 2021-09-23 2022-01-28 阿里云计算有限公司 数据处理方法、系统及设备
CN114185815A (zh) * 2021-12-09 2022-03-15 建信金融科技有限责任公司 用于实现内存键值存储的方法、设备和系统
CN115640353A (zh) * 2022-09-01 2023-01-24 阿里云计算有限公司 数据读取方法、计算机存储介质和电子设备

Also Published As

Publication number Publication date
CN117255101A (zh) 2023-12-19

Similar Documents

Publication Publication Date Title
JP7378870B2 (ja) ファイルシステムデータアクセス方法およびファイルシステム
US10831741B2 (en) Log-shipping data replication with early log record fetching
EP2879040B1 (en) Data storage method, data storage apparatus, and storage device
JP2019519025A (ja) 分散システムにおける範囲の分割および移動
CN111694791B (zh) 一种分布式基础框架中的数据存取方法及装置
US9075722B2 (en) Clustered and highly-available wide-area write-through file system cache
CN109561151B (zh) 数据存储方法、装置、服务器和存储介质
CN115599747B (zh) 一种分布式存储系统的元数据同步方法、系统及设备
CN112988680B (zh) 数据加速方法、缓存单元、电子设备及存储介质
CN113282564B (zh) 数据存储方法、系统、节点和存储介质
CN111225003B (zh) 一种nfs节点配置方法和装置
US10620871B1 (en) Storage scheme for a distributed storage system
CN113010549A (zh) 基于异地多活系统的数据处理方法、相关设备及存储介质
CN111198845A (zh) 一种数据迁移方法、可读存储介质及计算设备
CN106873902B (zh) 一种文件存储系统、数据调度方法及数据节点
CN114461593B (zh) 日志写入方法及其装置、电子设备及存储介质
CN111399760B (zh) Nas集群元数据处理方法、装置、nas网关及介质
CN111399753A (zh) 写入图片的方法和装置
CN113467719A (zh) 数据写入方法及装置
CN117255101B (zh) 分布式存储系统的数据处理方法、装置、设备及介质
CN111274176B (zh) 一种信息处理方法、电子设备、系统及存储介质
CN114490540A (zh) 数据存储方法、介质、装置和计算设备
CN115905115A (zh) 文件存储方法、读取方法及装置、电子设备与存储介质
US11379147B2 (en) Method, device, and computer program product for managing storage system
US20240338143A1 (en) Method, electronic device and computer program product for data replication

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