CN114237497B - 一种分布式存储方法及装置 - Google Patents

一种分布式存储方法及装置 Download PDF

Info

Publication number
CN114237497B
CN114237497B CN202111448843.4A CN202111448843A CN114237497B CN 114237497 B CN114237497 B CN 114237497B CN 202111448843 A CN202111448843 A CN 202111448843A CN 114237497 B CN114237497 B CN 114237497B
Authority
CN
China
Prior art keywords
class
data
slave nodes
node
offset
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
CN202111448843.4A
Other languages
English (en)
Other versions
CN114237497A (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.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information 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 Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202111448843.4A priority Critical patent/CN114237497B/zh
Publication of CN114237497A publication Critical patent/CN114237497A/zh
Application granted granted Critical
Publication of CN114237497B publication Critical patent/CN114237497B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (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/3,解决了使用一致性协议构建的分布式存储集群占用带宽和存储资源过高的问题。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本申请实施例提供的一种分布式存储方法的步骤流程图;
图2是本申请实施例提供的一种常规的三节点分布式存储集群的结构图;
图3是本申请实施例提供的一种包含二类从节点的分布式存储集群的结构图;
图4是本申请实施例提供的另一种分布式存储方法的步骤流程图;
图5是本申请实施例提供的又一种分布式存储方法的步骤流程图;
图6是本申请实施例提供的再一种分布式存储方法的步骤流程图;
图7是本申请实施例提供的一种分布式存储集群构建方法的步骤流程图;
图8是本申请实施例提供的一种分布式存储装置的框图;
图9是本申请实施例提供的另一种分布式存储装置的框图;
图10是本申请实施例提供的一种分布式存储集群构建装置的框图
图11是本申请一个实施例的电子设备的逻辑框图;
图12是本申请另一个实施例的电子设备的逻辑框图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
本申请实施例提供了一种分布式存储方法,应用于分布式存储集群中的主节点,分布式存储集群基于一致性协议构建,分布式存储集群还包括一类从节点和二类从节点。
图1是本申请实施例提供的一种分布式存储方法的步骤流程图,如图1所示,该方法可以包括:
步骤101,在接收到目标数据的情况下,将所述目标数据存储在主节点本地,并将所述目标数据发送至所述一类从节点,以使所述一类从节点对所述目标数据进行冗余备份。
一致性协议是一种维护分布式存储集群中,各个节点数据一致性的协议。常见的一致性协议包括Raft、Paxos、Zab等。通过一致性协议可以构建包含多个节点的分布式存储集群,在一致性协议构建的分布式存储集群中,存在一个主节点(通常也被称为领导者节点、leader节点等),和其他若干一类从节点(通常也被称为追随者节点、follower节点等)。主节点通过在集群中定期广播心跳消息以向其它节点表明自己处于可用状态,此时,集群中的其他节点会接受主节点的领导,当集群中的其它节点超过一段时间没有接收到主节点发送的心跳消息时,集群中的一类从节点会自发转换为候选者节点,并向其他节点发送票选信息,其他节点接收到候选者节点发送的票选信息后返回赞成或不赞成的票选结果,获得赞成票超过集群中半数节点数量的候选者节点会当选成为新的主节点。
参照图2,图2是本申请实施例提供的一种常规的三节点分布式存储集群的结构图,如图2所示,集群中包含一个主节点A、一个一类从节点B和一个一类从节点C,其中,主节点A可以通过指令(例如logentry)向一类从节点B和一类从节点C中写入对应的目标数据。
在基于一致性协议建立的分布式存储集群中,只有主节点可以与客户端进行通讯,因此,当客户端有需要存储的目标数据时,只有主节点可以接收到由客户端传输的目标数据。
主节点可以接收客户端发送的数据,并将该数据存储在主节点中,同时主节点会向集群中的所有节点发送针对该数据的存储指令(例如logentry),以使集群中的其它节点对该数据进行同步存储,完成存储的节点会向主节点返回存储结果,如果主节点收到的存储结果可以指示半数以上的节点都成功存储了该数据,则会向客户端返回数据存储成功的消息。需要说明的是,在判断是否超过半数以上的节点都成功存储了该数据时,会计算主节点本身。如图2所示,主节点A存储了客户端发送的数据并接收到一类从节点B返回的存储成功的指示,此时,假设一类从节点B掉线,未能成功存储数据,则主节点可以确定集群中已经有两个节点成功存储了数据,也就是说存储成功的节点数量超过半数,则主节点A会向客户端返回指示存储成功的消息。
在上述描述的过程中,无论在票选新主节点还是在数据同步存储的过程中,均需要节点中半数以上的节点同意或完成,因此,由一致性协议构建的集群中节点数量必须超过两个,且为奇数个才能提供一定的冗余功能,否则当一个节点出现故障时集群不能继续正常运行。举例来说,如果集群中置存在两个节点,当一个节点存储失败时,集群中无论如何也不会有超过半数的节点存储成功,则此时集群会发生故障,并且,当主节点掉线后,即使一类从节点转变为候选者节点,其最多只能接收到1个选票,无法当选成为新的主节点,导致集群无法正常和客户端通信。
一致性协议除了实现自主选主和同步存储之外,还可以提供其他一些实用功能。但由于一致性协议的特性限制,最少需要布置三个节点才能使用一致性协议构建分布式存储集群,而对于某些数据吞吐量较大且对一致性要求不高的业务,采用双节点同步存储的方案可以实现收益和成本的最优配置,三节点同步存储的方案会消耗大量的带宽和存储资源,通常无法使用一致性协议,为了降低一致性协议构建的分布式存储集群对带宽和存储资源的消耗量,可以将传统的三节点集群中的一个一类从节点替换为二类从节点。可以理解的,由于一致性协议的节点数量必须为奇数,因此,一致性协议构建分布式存储集群也不能实现4副本、6副本等偶数个副本的备份操做,可以将5节点集群中的一个一类从节点替换为二类从节点,从而实现4副本备份,将7节点集群中的一个一类从节点替换为二类从节点,从而实现6副本备份,以此类推。
参照图3,图3是本申请实施例提供的一种包含二类从节点的分布式存储集群的结构图,如图3所示,集群中包含一个主节点A、一个一类从节点B和一个二类从节点D,其中,主节点A可以通过指令(例如logentry)向一类从节点B写入待存储的目标数据。需要说明的是,一类从节点的数量并不限定为1个,一类从节点的数量可以是1、3、5等偶数个。
在一致性协议中,只有主节点可以与客户端进行通讯,因此,当客户端有需要存储的目标数据时,只有主节点可以接收到由客户端传输的目标数据。主节点在获取到待存储的目标数据后,可以将目标数据存储在主节点本地,并向集群中的所有一类从节点发送目标数据,使集群中的所有一类从节点对目标数据进行备份。
步骤102,确定所述二类从节点对应的第一数据偏移量;其中,所述第一数据偏移量用于指示目标数据在所述二类从节点中存储条目的变化量。
在基于一致性协议构建的分布式存储集群中,每个节点在对目标数据进行存储时,需要针对目标数据存储对应的数据偏移量,数据偏移量随着节点中目标数据的条目数量越来越多而逐渐增大。数据偏移量是一致性协议中各个节点标记目标数据条目的值,通过数据偏移量,一致性协议可以实现诸如各个节点中的数据进行同步、对新主节点的选举以及其他功能。
因此,主节点在接收到一条目标数据后,可以根据二类从节点的当前数据偏移量确定二类从节点在存储这条目标数据时需要存储的第一数据偏移量,其中二类从节点的当前数据偏移量是指二类从节点最新存储的偏移量。
步骤103,向所述二类从节点发送所述第一数据偏移量,以使得所述二类从节点存储所述第一数据偏移量。
由于二类从节点是基于一致性协议构建的分布式存储集群中的节点,虽然在本申请实施例中,二类从节点无需对目标数据进行存储,但为了确保一致性协议的其他功能可以正常运行,实现诸如各个节点中的数据进行同步、对新主节点的选举以及其他功能,因此主节点还需要将二类从节点对应的第一数据偏移量发送至二类从节点,以使二类从节点可以仅对第一数据偏移量进行存储,而无需存储目标数据。
由于第一数据偏移量仅为一个数值,传输和存储第一数据偏移量所占用的带宽和存储空间极小。因此,采用本申请实施例中的分布式存储集群构架对数据进行冗余备份,可以在保证实现一致性协议的同时,极大降低分布式存储集群所消耗的带宽及存储空间,使对备份副本量需求较小的业务也可以采用一致性协议来保证各副本之间数据的一致性,提高了应用一致性协议的适用范围。
在本申请实施例中,公开了另一种分布式存储方法,包括:在接收到目标数据的情况下,将目标数据存储在主节点本地,并将目标数据发送至一类从节点,以使一类从节点对目标数据进行冗余备份;确定二类从节点对应的第一数据偏移量;其中,第一数据偏移量用于指示目标数据在二类从节点中存储条目的变化量;向二类从节点发送第一数据偏移量,以使得二类从节点存储第一数据偏移量。可以在基于一致性协议构建的分布式存储集群中包含一个二类从节点,并使二类从节点仅对数据偏移量进行存储,而无需同步存储目标数据,在确保满足一致性协议节点数量要求的情况下,降低了数据同步存储所需的带宽和存储资源消耗量,使集群要求的最低带宽和存储资源最多可以下降1/3,解决了使用一致性协议构建的分布式存储集群占用带宽和存储资源过高的问题。
图4是本申请实施例提供的另一种分布式存储方法的步骤流程图,如图4所示,该方法可以包括:
步骤201,在接收到由所述二类从节点发送的初始数据偏移量的情况下,生成包含集群元数据的初始化信息;其中,所述初始数据偏移量为所述二类从节点在建立时最初预设的数据偏移量,所述集群元数据包括所述主节点的当前数据偏移量和所述分布式存储集群的节点信息,所述节点信息包括所述分布式存储集群的节点数量和各个节点的节点类型中至少一项。
当分布式存储集群中接入新的二类从节点时,还没有存储任何第一数据偏移量,因此,当新接入的二类从节点收到主节点发送的偏移量请求后,可以向主节点返回初始数据偏移量,以告知主节点需要进行初始化,初始数据偏移量的值可以为特殊值,例如初始数据偏移量可以取0。
进一步的,由于新接入的二类从节点中并没有存储分布式存储集群的节点信息,因此,其并不清楚分布式存储集群中哪个节点为主节点,为了使主节点可以接收到初始数据偏移量,可以在分布式存储集群中以广播的形式发送初始数据偏移量。
主节点接收到新接入的二类从节点返回的数据偏移量时,可以根据数据偏移量的值判断二类从节点是否为新接入节点,如果确定其为新接入节点,则可以向其发送初始化信息,以使新接入的二类从节点根据初始化信息进行初始化。
具体的,主节点接收到二类从节点返回的数据偏移量时,判断该数据偏移量的值是否为初始值(例如0),如果该数据偏移量的值为0,则确定该数据偏移量为初始数据偏移量,二类从节点为新接入节点,同时根据自身的当前数据偏移量和所在分布式存储集群的节点信息生成初始化信息,其中,节点信息包括集群中节点数量、节点类型、节点状态、节点识别信息、节点地址信息、节点当前偏移量信息等至少一项。
步骤202,将所述初始化信息发送至所述二类从节点,以使得所述二类从节点根据所述初始化信息进行初始化。
主节点生成初始化信息后,将初始化信息发送给新接入的二类从节点,以使新接入的二类从节点可以得知所在集群的基本情况,并将自身的当前数据偏移量更新到与主节点的当前数据偏移量相同的值,完成自身的初始化。
在本申请实施例中,二类从节点接入集群后,主节点可以向其发送集群节点的基本信息和主节点对应的当前数据偏移量,使其完成初始化,而不会发送自身或一类从节点已经备份好的目标数据,从而可以降低二类从节点进行初始化时所占用的带宽以及所消耗的存储资源。
步骤203,在接收到目标数据的情况下,将所述目标数据存储在主节点本地,并将所述目标数据发送至所述一类从节点,以使所述一类从节点对所述目标数据进行冗余备份。
在基于一致性协议构建的分布式存储集群中,每个节点在对目标数据进行存储时,需要针对目标数据存储对应的数据偏移量,数据偏移量随着节点中目标数据的条目数量越来越多而逐渐增大。数据偏移量是一致性协议中各个节点标记目标数据条目的值,通过数据偏移量,一致性协议可以实现诸如各个节点中的数据进行同步、对新主节点的选举以及其他功能。
因此,主节点在接收到一条目标数据后,需要根据主节点的当前数据偏移量确定主节点在存储这条目标数据时需要存储的第二数据偏移量,根据一类从节点的当前数据偏移量确定一类从节点在存储这条目标数据时需要存储的第三数据偏移量,根据二类从节点的当前数据偏移量确定二类从节点在存储这条目标数据时需要存储的第一数据偏移量。也就是说,对于需要同步的同一条目标数据,主节点向每个节点发送的该目标数据对应的数据偏移量可能是不同的。
可选的,步骤203还可以包括:
子步骤2031,确定所述主节点对应的第二数据偏移量和所述一类从节点对应的第三数据偏移量;其中,所述第二数据偏移量用于指示目标数据在所述主节点中存储条目的变化量,所述第三数据偏移量用于指示目标数据在所述一类从节点中存储条目的变化量。
可选的,子步骤2031还可以包括:
子步骤A1,对所述主节点对应的当前数据偏移量进行预设数量的递增处理,得到所述第二数据偏移量。
主节点可以直接对本地存储的数据进行查询,并读取最近存储的目标数据对应的数据偏移量作为主节点的当前数据偏移量,再对主节点的当前数据偏移量进行预设数量的递增处理,得到主节点对应的第二数据偏移量,其中,预设数量可以是任何正整数,本申请实施例在此不做具体限定。优选的,在通常的一致性协议中,为方便计算,一般将预设数量的值设置为1。
子步骤A2,对所述一类从节点对应的当前数据偏移量进行预设数量的递增处理,得到所述第三数据偏移量。
主节点可以向一类从节点发送偏移量查询请求,一类从节点接收到主节点发送的偏移量查询请求后,可以对本地存储数据进行查询,并读取最近存储的目标数据对应的数据偏移量作为该一类从节点的当前数据偏移量,再将该一类从节点对应的当前数据偏移量发送给主节点,主节点对该一类从节点的当前数据偏移量进行预设数量的递增处理,得到该一类从节点对应的第三数据偏移量。
子步骤2032,将所述第二数据偏移量、所述目标数据、以及所述第二数据偏移量和所述目标数据的映射关系存储在主节点本地。
子步骤2033,向所述一类从节点发送所述第三数据偏移量、所述目标数据、以及所述第三数据偏移量与所述目标数据的映射关系。
如图3所示,集群中包含一个主节点A、一个一类从节点B和一个二类从节点D,其中,主节点A可以通过指令(例如logentry)向一类从节点B写入对应的第三数据偏移量和目标数据。
通过上述操作,可以将主节点可以实现对接收到的目标数据的备份操作,将目标数据存储在主节点和一类从节点中,同时,在主节点和一类从节点中存储目标数据时,还对应存储了主节点和一类从节点针对该目标数据的数据偏移量,使得基于一致性协议建立的分布式存储集群可以正常工作。
步骤204,确定所述二类从节点对应的第一数据偏移量;其中,所述第一数据偏移量用于指示目标数据在所述二类从节点中存储条目的变化量。
可选的,步骤204还可以包括:
子步骤2041,对所述二类从节点对应的当前数据偏移量进行预设数量的递增处理,得到所述第一数据偏移量。
主节点可以向二类从节点发送偏移量查询请求,二类从节点接收到主节点发送的偏移量查询请求后,可以对本地存储数据进行查询,并读取最近存储的目标数据对应的数据偏移量作为该二类从节点的当前数据偏移量,再将该二类从节点对应的当前数据偏移量发送给主节点,主节点对该二类从节点的当前数据偏移量进行预设数量的递增处理,得到该二类从节点对应的第一数据偏移量。
步骤205,确定所述目标数据的数据类型,所述数据类型包括配置变更数据和非配置变更数据;其中,所述配置变更数据用于调整所述分布式存储集群的设置。
一般来说,集群中的节点会对两种类型的数据进行存储,一种类型是非配置变更数据,该数据类型的数据可以理解为普通的数据,节点仅对其进行存储,例如可以是需要备份的图片、视频、运行日志等数据。另一种类型是配置变更数据,配置变更数据可以调整集群中各个节点的配置设置,各个节点在接收到配置变更数据后需要响应配置变更数据以完成对自身配置设置的变更操作。因此,对于数据类型为配置变更数据的目标数据,主节点不能仅向二类从节点发送第一数据偏移量,还需要同步发送目标数据,以使第二从节点可以根据配置变更数据对自身的配置设置进行调整。
具体的,主节点在接收到目标数据后,可以首先判断目标数据的数据类型,并根据目标数据类型的不同,选择不同的发送策略向第二从节点发送目标数据。
步骤206,在所述目标数据的数据类型为所述非配置变更数据的情况下,向所述二类从节点发送所述第一数据偏移量。
如果主节点对目标数据的判断结果为非配置变更数据,则可以只向二类从节点发送该目标数据对应的第一数据偏移量,以节省集群消耗的带宽和存储空间。
如图3所示,主节点A可以通过指令(例如log index)向二类从节点写入对应的第一数据偏移量。
可选的,步骤206还可以包括:
子步骤2061,根据所述目标数据和所述第一数据偏移量生成第一数据包。
由于本申请实施例中的分布式存储集群构架是基于对一致性协议建立的分布式存储集群进行改进而获得的。因此,为了提升主节点和二类从节点对一致性协议的兼容性,需要尽可能降低对一致性协议框架的改动幅度。
为了达到上述目的,在本申请实施例中,主节点向二类从节点发送目标数据之前,可以先根据目标数据和第一数据偏移量生成第一数据包,其中第一数据包包含有目标数据和第一数据偏移量。
子步骤2062,清空所述第一数据包中的所述目标数据,得到第二数据包。
子步骤2063,将所述第二数据包发送至所述二类从节点,以使得所述二类从节点存储所述第一数据偏移量。
由于第二数据包是在删除第一数据包中目标数据得到的,第二数据包中剩余的数据仅为第一数据偏移量,而第一数据偏移量相较于目标数据所占用的空间会小很多,因此,将第二数据包发送给二类从节点可以大幅节省传统的基于一致性协议建立的分布式存储集群的带宽和存储空间消耗量。
在本申请实施例中,主节点通过向二类从节点发送由第一数据包删除其中的目标数据得到的第二数据包,使得包括主节点和二类从节点在内的各个节点与一致性协议的兼容度较高。
步骤207,在所述目标数据的数据类型为所述配置变更数据的情况下,向所述二类从节点发送所述第一数据偏移量、所述目标数据、以及所述第一数据偏移量和所述目标数据的映射关系。
如果主节点对目标数据的判断结果为配置变更数据,则可以直接将第一数据偏移量和目标数据发送至二类从节点,以使二类从节点可以根据配置变更数据进行配置设置的调整,确保分布式存储集群可以正常运行。
在本申请实施例中,公开了一种分布式存储方法,包括:在接收到目标数据的情况下,将目标数据存储在主节点本地,并将目标数据发送至一类从节点,以使一类从节点对目标数据进行冗余备份;确定二类从节点对应的第一数据偏移量;其中,第一数据偏移量用于指示目标数据在二类从节点中存储条目的变化量;向二类从节点发送第一数据偏移量,以使得二类从节点存储第一数据偏移量。可以在基于一致性协议构建的分布式存储集群中包含一个二类从节点,并使二类从节点仅对数据偏移量进行存储,而无需同步存储目标数据,在确保满足一致性协议节点数量要求的情况下,降低了数据同步存储所需的带宽和存储资源消耗量,使集群要求的最低带宽和存储资源最多可以下降1/3,解决了使用一致性协议构建的分布式存储集群占用带宽和存储资源过高的问题。
本申请实施例提供了又一种分布式存储方法,应用于分布式存储集群中的二类从节点,分布式存储集群基于一致性协议构建,分布式存储集群还包括主节点和一类从节点。
图5是本申请实施例提供的又一种分布式存储方法的步骤流程图,如图5所示,该方法可以包括:
步骤301,在第一次接收到由所述主节点发送的偏移量获取指令的情况下,向所述主节点发送初始数据偏移量;其中,所述初始数据偏移量为所述二类从节点在建立时最初预设的数据偏移量。
当分布式存储集群中接入新的二类从节点时,还没有存储任何目标数据,也没有存储任何第一数据偏移量,新接入的二类从节点中并不存在当前数据偏移量,因此当新接入的二类从节点收到主节点发送的偏移量请求后,可以向主节点返回初始数据偏移量,以告知主节点需要进行初始化,使主节点可以根据数据偏移量的值判断二类从节点是否为新接入节点,并向新接入的二类从节点发送初始化信息,以使新接入的二类从节点根据初始化信息进行初始化。
由于主节点在向各个节点发送目标数据前时,会先向各个从节点发送偏移量获取指令,以获取各个节点的当前数据偏移量,并且新接入的二类从节点在第一次获取到偏移量获取指令之前,并没有存储过数据偏移量,不存在对应的当前数据偏移量。因此,二类从节点在第一次获取到偏移量获取指令时,需要通知主节点向其传输初始化信息,以进行初始化。
步骤302,接收所述主节点根据所述初始数据偏移量反馈的包含集群元数据的初始化信息,并基于所述初始化信息进行初始化;其中,所述集群元数据包括所述主节点的当前数据偏移量和所述分布式存储集群的节点信息,所述节点信息包括所述分布式存储集群的节点数量和各个节点的节点类型中至少一项。
主节点生成初始化信息后,将初始化信息发送给新接入的二类从节点,以使新接入的二类从节点可以得知所在集群的基本情况,并将自身的当前数据偏移量更新到与主节点的当前数据偏移量相同的值,完成自身的初始化。
在本申请实施例中,二类从节点接入集群后,主节点可以向其发送集群节点的基本信息和主节点的当前数据偏移量,使其完成初始化,而不会发送自身或一类从节点已经备份好的目标数据,从而可以降低二类从节点进行初始化时所占用的带宽以及所消耗的存储资源。
步骤303,接收由所述主节点生成并发送的第一数据偏移量,其中,所述主节点用于向所述一类从节点发送目标数据,并向所述二类从节点发送第一数据偏移量;其中,所述第一数据偏移量用于指示目标数据在所述二类从节点中存储条目的变化量。
由于二类从节点是基于一致性协议构建的分布式存储集群中的节点,虽然在本申请实施例中,二类从节点无需对目标数据进行存储,但为了确保一致性协议的其他功能可以正常运行,实现诸如各个节点中的数据进行同步、对新主节点的选举以及其他功能,因此可以使二类从节点仅接收主节点发送的二类从节点对应的第一数据偏移量,以使二类从节点可以仅对第一数据偏移量进行存储,而无需存储目标数据。
由于第一数据偏移量仅为一个数值,传输和存储第一数据偏移量所占用的带宽和存储空间极小。因此,采用本申请实施例中的分布式存储集群构架对数据进行冗余备份,可以在保证实现一致性协议的同时,极大降低分布式存储集群所消耗的带宽及存储空间,使对备份副本量需求较小的业务也可以采用一致性协议来保证各副本之间数据的一致性,提高了应用一致性协议的适用范围。
步骤304,对所述第一数据偏移量进行存储。
步骤305,在所述目标数据的数据类型为配置变更数据的情况下,接收由所述主节点发送的第一数据偏移量、目标数据、以及所述第一数据偏移量和所述目标数据的映射关系。
一般来说,集群中的节点会对两种类型的数据进行存储,一种类型是非配置变更数据,该数据类型的数据可以理解为普通的数据,节点仅对其进行存储,例如可以是需要备份的图片、视频、运行日志等数据。另一种类型是配置变更数据,配置变更数据可以调整集群中各个节点的配置设置,各个节点在接收到配置变更数据后需要响应配置变更数据以完成对自身配置设置的变更操作。因此,对于数据类型为配置变更数据的目标数据,二类从节点不仅需要主节点发送的获取第一数据偏移量,还需要获取主节点发送的目标数据。
步骤306,在所述目标数据的数据类型为配置变更数据的情况下,将所述第一数据偏移量和所述目标数据对应存储。
步骤307,监听由所述主节点广播的心跳消息。
在基于一致性协议建立的分布式存储集群中,主节点通过在集群中定期广播心跳消息以向其它节点表明自己处于可用状态,当集群中的其它节点超过一段时间没有接收到主节点发送的心跳消息时,集群中的一类从节点会随机自发转换为候选者节点,并向其他节点发送票选信息,其他节点接收到候选者节点发送的票选信息后返回赞成或不赞成的票选结果,获得赞成票超过集群中半数节点数量的候选者节点会当选成为新的主节点。
因此,二类从节点可以通过监听主节点广播的心跳消息,确认主节点当前是否发生故障。
步骤308,在未监听到所述心跳消息的时间超过第一预设时长的情况下,向所述一类从节点发送赞成消息;其中,所述赞成消息用于票选所述一类从节点成为新的主节点。
由于二类从节点不能实际存储目标数据,在基于分布式协议的集群中,主节点还有在其他节点故障并恢复后,向其他节点发送错失目标数据,以使各个节点中的数据保持一致性的功能,因此二类从节点也不具有转变为候选者节点的功能,但需要使二类从节点保留投票权,以使二类从节点在主节点发生故障时向一类从节点投票,票选出新的主节点,保证分布式存储集群可以正常运行。
可选的,步骤308还可以包括:
子步骤3081,获取所述一类从节点的当前数据偏移量和所述二类从节点的当前数据偏移量;其中,所述当前数据偏移量用于表征对应节点中已存储的数据条目。
由于主节点根据自身存储的目标数据保证其他节点中目标数据的一致性,因此,主节点中的目标数据应尽可能齐全。在二类从节点票选一类从节点成为主节点时,可以根据自身的当前数据偏移量和一类从节点的当前数据偏移量,并根据这两个当前数据偏移量判断一类从节点中的目标数据是否足够齐全,以便采取不同的投票策略。
子步骤3082,在所述一类从节点的当前数据偏移量大于或等于所述二类从节点的当前数据偏移量,且未监听到所述心跳消息的时间超过第一预设时长的情况下,向所述一类从节点发送赞成消息。
二类从节点可以将一类从节点的当前数据偏移量和自身的当前数据偏移量进行比对,如果比对结果指示一类从节点的当前数据偏移量大于或等于自身的当前数据偏移量,则说明一类从节点中存储的数据条目不少于自身存储的数据条目,可以确定第一从节点中的目标数据足够齐全,此时可以直接向第一从节点发送赞成消息,以对第一从节点投出选票。
子步骤3083,在所述一类从节点的当前数据偏移量小于所述二类从节点的当前数据偏移量,且未监听到所述心跳消息的时间超过第二预设时长的情况下,向所述一类从节点发送赞成消息;其中,所述第二预设时长大于所述第一预设时长。
二类从节点可以将一类从节点的当前数据偏移量和自身的当前数据偏移量进行比对,如果比对结果指示一类从节点的当前数据偏移量小于自身的当前数据偏移量,则说明一类从节点中存储的数据条目少于自身存储的数据条目,可以确定第一从节点中的目标数据不够齐全,此时可以不直接向第一从节点发送赞成消息,而是继续监听主节点的心跳消息,并持续计算未监听到心跳消息的时间,等待故障的主节点恢复。在未监听到心跳消息的时间达到第二预设时长后,再向第一从节点发送赞成消息,以对第一从节点投出选票。
这样,第二从节点可以在第一从节点存储的目标数据不够齐全时,等待故障的主节点恢复正常,可以在第一从节点存储的目标数据足够齐全时,直接向第一从节点投票。可以尽可能保证集群中的主节点拥有较为齐全的目标数据,使集群中节点存储的目标数据保持较高的一致程度。
在本申请实施例中,公开了又一种分布式存储方法,包括:接收由所述主节点生成并发送的第一数据偏移量,其中,所述主节点用于向所述一类从节点发送目标数据,并向所述二类从节点发送第一数据偏移量;其中,所述第一数据偏移量用于指示目标数据在所述二类从节点中存储条目的变化量;对所述第一数据偏移量进行存储。可以在基于一致性协议构建的分布式存储集群中包含一个二类从节点,并使二类从节点仅对数据偏移量进行存储,而无需同步存储目标数据,在确保满足一致性协议节点数量要求的情况下,降低了数据同步存储所需的带宽和存储资源消耗量,使集群要求的最低带宽和存储资源最多可以下降1/3,解决了使用一致性协议构建的分布式存储集群占用带宽和存储资源过高的问题。
本申请实施例提供了再一种分布式存储方法,分布式存储集群基于一致性协议构建,分布式存储集群还包括主节点、一类从节点和二类从节点。
图6是本申请实施例提供的再一种分布式存储方法的步骤流程图,如图6所示,该方法可以包括:
步骤401,主节点在接收到目标数据的情况下,将所述目标数据存储在主节点本地,并将所述目标数据发送至所述一类从节点,以使所述一类从节点对所述目标数据进行冗余备份。
步骤402,主节点确定所述二类从节点对应的第一数据偏移量;其中,所述第一数据偏移量用于指示目标数据在所述二类从节点中存储条目的变化量。
步骤403,主节点向所述二类从节点发送所述第一数据偏移量,以使得所述二类从节点存储所述第一数据偏移量。
步骤404,二类从节点接收由所述主节点生成并发送的第一数据偏移量,其中,所述主节点用于向所述一类从节点发送目标数据,并向所述二类从节点发送第一数据偏移量;其中,所述第一数据偏移量用于指示目标数据在所述二类从节点中存储条目的变化量。
步骤405,二类从节点对所述第一数据偏移量进行存储。
步骤406,二类从节点在第一次接收到由所述主节点发送的偏移量获取指令的情况下,向所述主节点发送初始数据偏移量;其中,所述初始数据偏移量为所述二类从节点在建立时最初预设的数据偏移量。
步骤407,主节点在接收到由所述二类从节点发送的初始数据偏移量的情况下,生成包含集群元数据的初始化信息;其中,所述初始数据偏移量为所述二类从节点在建立时最初预设的数据偏移量,所述集群元数据包括所述主节点的当前数据偏移量和所述分布式存储集群的节点信息,所述节点信息包括所述分布式存储集群的节点数量和各个节点的节点类型中至少一项。
步骤408,主节点将所述初始化信息发送至所述二类从节点,以使得所述二类从节点根据所述初始化信息进行初始化。
步骤409,二类从节点接收所述主节点根据所述初始数据偏移量反馈的包含集群元数据的初始化信息,并基于所述初始化信息进行初始化;其中,所述集群元数据包括所述主节点的当前数据偏移量和所述分布式存储集群的节点信息,所述节点信息包括所述分布式存储集群的节点数量和各个节点的节点类型中至少一项。
步骤410,二类从节点监听由所述主节点广播的心跳消息。
步骤411,二类从节点在未监听到所述心跳消息的时间超过第一预设时长的情况下,向所述一类从节点发送赞成消息;其中,所述赞成消息用于票选所述一类从节点成为新的主节点。
在本申请实施例中,公开了再一种分布式存储方法,可以在基于一致性协议构建的分布式存储集群中包含一个二类从节点,并使二类从节点仅对数据偏移量进行存储,而无需同步存储目标数据,在确保满足一致性协议节点数量要求的情况下,降低了数据同步存储所需的带宽和存储资源消耗量,使集群要求的最低带宽和存储资源最多可以下降1/3,解决了使用一致性协议构建的分布式存储集群占用带宽和存储资源过高的问题。
本申请实施例提供了一种分布式存储集群构建方法,应用于分布式存储集群构建设备,参照图7,图7是本申请实施例提供的一种分布式存储集群构建方法的步骤流程图,如图8所示,分布式存储集群构建方法包括:
步骤501,基于一致性协议构建由主节点、一类从节点和二类从节点构成的目标分布式存储集群,或者,获取基于一致性协议构建的初始分布式存储集群,所述初始分布式存储集群包括一个第一一类从节点、至少一个第二一类从节点和一个主节点,将所述第一一类从节点替换为二类从节点,得到由所述主节点、所述第二一类从节点和所述二类从节点构成的目标分布式存储集群。
可以通过分布式存储集群构建设备(例如Meta服务器)将已经构建好的初始分布式存储集群中的一个第一一类从节点进行替换为二类从节点,得到目标分布式存储集群。其中,第一一类从节点是指所选定的将要被替换为二类从节点的一类从节点,在初始分布式存储集群中,第一一类从节点和第二一类从节点的合集构成初始分布式存储集群的所有一类从节点。
此外,也可以在构建目标分布式存储集群时,直接将其中一个节点构建为二类从节点,直接得到包含二类从节点的目标分布式存储集群。
可选的,步骤501还可以包括:
子步骤5011,向所述主节点发送配置变更信息,以使所述主节点根据所述配置变更信息在所述初始分布式存储集群的节点信息中增加二类从节点信息,并将所述二类从节点信息同步在所述初始分布式存储集群的所有一类从节点中。
在对初始分布式存储集群进行节点改造时,可以首先将需要增加的二类从节点的节点信息发送至集群中的各个节点,以使集群中的各个节点存储有该二类从节点的节点信息,进而集群中的各个节点可以根据存储的该二类从节点的节点信息,在二类从节点接入集群后对其正常识别,并正常与其进行通信。
由于集群中的主节点才能与其他设备进行通讯,因此,可以将包含二类从节点的节点信息的配置变更信息发送给主节点,由主节点对配置变更信息进行存储,并将该配置变更信息转发至节点中的其他节点,以完成对配置变更信息的同步。
子步骤5012,获取初始分布式存储集群的所有一类从节点对应的当前数据偏移量,并将所述当前数据偏移量最小的一类从节点确定为第一一类从节点;其中,所述当前数据偏移量用于表征对应节点中已存储的数据条目;。
由于一类从节点的当前数据偏移量可以反映该一类从节点中存储的目标数据的完整性,当一个一类从节点的当前数据偏移量较高时,说明其存储的目标数据的条目数较多,数据完整性较高,当一个一类从节点的当前数据偏移量较低时,说明其存储的目标数据的条目数较少,数据完整性较差。
因此,通过确定出当前数据偏移量最小的一类从节点,可以从集群中的所有一类从节点中确定出数据完整性最差的一类从节点,可以将该数据完整性最差的一类从节点作为第一一类从节点,并在后续步骤中将其替换为二类从节点。
子步骤5013,将所述第一一类从节点替换为二类从节点。
在本申请实施例中,在对初始分布式存储集群中的一类从节点进行替换时,可以首先获取集群中所有一类从节点对应的当前数据偏移量,并确定所有一类从节点对应的当前数据偏移量中最小的当前数据偏移量对应的第一一类从节点,由于第一一类从节点的当前数据偏移量最小,则其存储的目标数据的完整度最差,进而将第一一类从节点从初始分布式存储集群中删除,再向初始分布式存储集群中添加一个二类从节点,从而得到由主节点、一类从节点和二类从节点构成的分布式存储集群。保证了在向初始分布式存储集群进行节点改造时,可以保留集群中数据完整度较高的一类从节点,使添加了二类从节点后的集群可以保持较好的数据完整性。
综上,在本申请实施例中,公开了一种分布式存储集群构建方法,包括:基于一致性协议构建由主节点、一类从节点和二类从节点构成的目标分布式存储集群,或者,从基于一致性协议构建的初始分布式存储集群中确定出第一一类从节点,通过二类从节点替换第一一类从节点,以得到由主节点、一类从节点和二类从节点构成的分布式存储集群;其中,主节点,用于在接收到目标数据的情况下,将目标数据存储在主节点本地,并将目标数据发送至一类从节点,确定二类从节点对应的第一数据偏移量,向二类从节点发送第一数据偏移量;二类从节点,用于接收由主节点生成并发送的第一数据偏移量,对第一数据偏移量进行存储。不仅可以构建新的由主节点、一类从节点和二类从节点构成的分布式存储集群,还可以对初始分布式存储集群进行改造,从而得到由主节点、一类从节点和二类从节点构成的分布式存储集群,可以在不破坏初始分布式存储集群的情况下使其减少副本的备份量,从而降低分布式存储节点的带宽和存储空间消耗量。
图8是本申请实施例提供的一种分布式存储装置的框图,如图8所示,包括:
存储模块801,被配置为在接收到目标数据的情况下,将所述目标数据存储在主节点本地,并将所述目标数据发送至所述一类从节点,以使所述一类从节点对所述目标数据进行冗余备份;
偏移量模块802,被配置为确定所述二类从节点对应的第一数据偏移量;其中,所述第一数据偏移量用于指示目标数据在所述二类从节点中存储条目的变化量;
发送模块803,被配置为向所述二类从节点发送所述第一数据偏移量,以使得所述二类从节点存储所述第一数据偏移量。
在一种可选的实施方式中,所述发送模块,包括:
第一数据包子模块,被配置为根据所述目标数据和所述第一数据偏移量生成第一数据包;
第二数据包子模块,被配置为清空所述第一数据包中的所述目标数据,得到第二数据包;
第一发送子模块,被配置为将所述第二数据包发送至所述二类从节点,以使得所述二类从节点存储所述第一数据偏移量。
在一种可选的实施方式中,所述发送模块包括:
数据类型子模块,被配置为确定所述目标数据的数据类型,所述数据类型包括配置变更数据和非配置变更数据;其中,所述配置变更数据用于调整所述分布式存储集群的设置;
判定子模块,被配置为在所述目标数据的数据类型为所述非配置变更数据的情况下,向所述二类从节点发送所述第一数据偏移量;
关系发送子模块,被配置为在所述目标数据的数据类型为所述配置变更数据的情况下,向所述二类从节点发送所述第一数据偏移量、所述目标数据、以及所述第一数据偏移量和所述目标数据的映射关系。
在一种可选的实施方式中,所述装置还包括:
初始信息模块,被配置为在接收到由所述二类从节点发送的初始数据偏移量的情况下,生成包含集群元数据的初始化信息;其中,所述初始数据偏移量为所述二类从节点在建立时最初预设的数据偏移量,所述集群元数据包括所述主节点的当前数据偏移量和所述分布式存储集群的节点信息,所述节点信息包括所述分布式存储集群的节点数量和各个节点的节点类型中至少一项;
初始信息发送模块,被配置为将所述初始化信息发送至所述二类从节点,以使得所述二类从节点根据所述初始化信息进行初始化。
在一种可选的实施方式中,所述存储模块包括:
偏移量确定子模块,被配置为确定所述主节点对应的第二数据偏移量和所述一类从节点对应的第三数据偏移量;其中,所述第二数据偏移量用于指示目标数据在所述主节点中存储条目的变化量,所述第三数据偏移量用于指示目标数据在所述一类从节点中存储条目的变化量;
主节点存储子模块,被配置为将所述第二数据偏移量、所述目标数据、以及所述第二数据偏移量和所述目标数据的映射关系存储在主节点本地;
从节点存储子模块,被配置为向所述一类从节点发送所述第三数据偏移量、所述目标数据、以及所述第三数据偏移量与所述目标数据的映射关系。
在一种可选的实施方式中,所述偏移量确定子模块,包括:
第二偏移量子模块,被配置为对所述主节点对应的当前数据偏移量进行预设数量的递增处理,得到所述第二数据偏移量;
第三偏移量子模块,被配置为对所述一类从节点对应的当前数据偏移量进行预设数量的递增处理,得到所述第三数据偏移量;
所述确定所述二类从节点对应的第一数据偏移量,包括:
第一偏移量子模块,被配置为对所述二类从节点对应的当前数据偏移量进行预设数量的递增处理,得到所述第一数据偏移量。
综上所述,本申请实施例提供的一种分布式存储装置,包括:在接收到目标数据的情况下,将目标数据存储在主节点本地,并将目标数据发送至一类从节点,以使一类从节点对目标数据进行冗余备份;确定二类从节点对应的第一数据偏移量;其中,第一数据偏移量用于指示目标数据在二类从节点中存储条目的变化量;向二类从节点发送第一数据偏移量,以使得二类从节点存储第一数据偏移量。可以在基于一致性协议构建的分布式存储集群中包含一个二类从节点,并使二类从节点仅对数据偏移量进行存储,而无需同步存储目标数据,在确保满足一致性协议节点数量要求的情况下,降低了数据同步存储所需的带宽和存储资源消耗量,使集群要求的最低带宽和存储资源最多可以下降1/3,解决了使用一致性协议构建的分布式存储集群占用带宽和存储资源过高的问题。
图9是本申请实施例提供的另一种分布式存储装置的框图,如图9所示,包括:
接收模块901,被配置为接收由所述主节点生成并发送的第一数据偏移量,其中,所述主节点用于向所述一类从节点发送目标数据,并向所述二类从节点发送第一数据偏移量;其中,所述第一数据偏移量用于指示目标数据在所述二类从节点中存储条目的变化量;
偏移量存储模块902,被配置为对所述第一数据偏移量进行存储。
在一种可选的实施方式中,所述装置还包括:
初始数据偏移量发送模块,被配置为在第一次接收到由所述主节点发送的偏移量获取指令的情况下,向所述主节点发送初始数据偏移量;其中,所述初始数据偏移量为所述二类从节点在建立时最初预设的数据偏移量;
初始化模块,被配置为接收所述主节点根据所述初始数据偏移量反馈的包含集群元数据的初始化信息,并基于所述初始化信息进行初始化;其中,所述集群元数据包括所述主节点的当前数据偏移量和所述分布式存储集群的节点信息,所述节点信息包括所述分布式存储集群的节点数量和各个节点的节点类型中至少一项。
在一种可选的实施方式中,所述装置还包括:
监听模块,被配置为监听由所述主节点广播的心跳消息;
投票模块,被配置为在未监听到所述心跳消息的时间超过第一预设时长的情况下,向所述一类从节点发送赞成消息;其中,所述赞成消息用于票选所述一类从节点成为新的主节点。
在一种可选的实施方式中,所述投票模块包括:
当前偏移量获取子模块,被配置为获取所述一类从节点的当前数据偏移量和所述二类从节点的当前数据偏移量;其中,所述当前数据偏移量用于表征对应节点中已存储的数据条目;
投票第一子模块,被配置为在所述一类从节点的当前数据偏移量大于或等于所述二类从节点的当前数据偏移量,且未监听到所述心跳消息的时间超过第一预设时长的情况下,向所述一类从节点发送赞成消息;
投票第二子模块,被配置为在在所述一类从节点的当前数据偏移量小于所述二类从节点的当前数据偏移量,且未监听到所述心跳消息的时间超过第二预设时长的情况下,向所述一类从节点发送赞成消息;其中,所述第二预设时长大于所述第一预设时长。
综上所述,本申请实施例提供的另一种分布式存储装置,包括:接收由所述主节点生成并发送的第一数据偏移量,其中,所述主节点用于向所述一类从节点发送目标数据,并向所述二类从节点发送第一数据偏移量;其中,所述第一数据偏移量用于指示目标数据在所述二类从节点中存储条目的变化量;对所述第一数据偏移量进行存储。可以在基于一致性协议构建的分布式存储集群中包含一个二类从节点,并使二类从节点仅对数据偏移量进行存储,而无需同步存储目标数据,在确保满足一致性协议节点数量要求的情况下,降低了数据同步存储所需的带宽和存储资源消耗量,使集群要求的最低带宽和存储资源最多可以下降1/3,解决了使用一致性协议构建的分布式存储集群占用带宽和存储资源过高的问题。
图10是本申请实施例提供的一种分布式存储集群构建装置的框图,如图10所示,包括:
构建模块1001,被配置为基于一致性协议构建由主节点、一类从节点和二类从节点构成的目标分布式存储集群,
或者,
获取基于一致性协议构建的初始分布式存储集群,所述初始分布式存储集群包括一个第一一类从节点、至少一个第二一类从节点和一个主节点,将所述第一一类从节点替换为二类从节点,得到由所述主节点、所述第二一类从节点和所述二类从节点构成的目标分布式存储集群;
其中,所述主节点,用于在接收到目标数据的情况下,将所述目标数据存储在主节点本地,并将所述目标数据发送至所述一类从节点,确定所述二类从节点对应的第一数据偏移量,向所述二类从节点发送所述第一数据偏移量;所述二类从节点,用于接收由所述主节点生成并发送的第一数据偏移量,对所述第一数据偏移量进行存储。
在一种可选的实施方式中,所述构建模块包括:
变更信息子模块,被配置为向所述主节点发送配置变更信息,以使所述主节点根据所述配置变更信息在所述初始分布式存储集群的节点信息中增加二类从节点信息,并将所述二类从节点信息同步在所述初始分布式存储集群的所有一类从节点中;
第一一类从节点子模块,被配置为获取初始分布式存储集群的所有一类从节点对应的当前数据偏移量,并将所述当前数据偏移量最小的一类从节点确定为第一一类从节点;其中,所述当前数据偏移量用于表征对应节点中已存储的数据条目;
替换子模块,被配置为将所述第一一类从节点替换为二类从节点。
综上所述,在本申请实施例中,公开了一种分布式存储集群构建装置,不仅可以构建新的由主节点、一类从节点和二类从节点构成的分布式存储集群,还可以对初始分布式存储集群进行改造,从而得到由主节点、一类从节点和二类从节点构成的分布式存储集群,可以在不破坏初始分布式存储集群的情况下使其减少副本的备份量,从而降低初始分布式存储节点的带宽和存储空间消耗量。
图11是根据一示例性实施例示出的一种电子设备600的框图。例如,电子设备600可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图11,电子设备600可以包括以下一个或多个组件:处理组件602,存储器604,电力组件606,多媒体组件608,音频组件610,输入/输出(I/O)的接口612,传感器组件614,以及通信组件616。
处理组件602通常控制电子设备600的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件602可以包括一个或多个处理器620来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理组件602可以包括多媒体模块,以方便多媒体组件608和处理组件602之间的交互。
存储器604用于存储各种类型的数据以支持在电子设备600的操作。这些数据的示例包括用于在电子设备600上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,多媒体等。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件606为电子设备600的各种组件提供电力。电源组件606可以包括电源管理系统,一个或多个电源,及其他与为电子设备600生成、管理和分配电力相关联的组件。
多媒体组件608包括在所述电子设备600和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的分界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件608包括一个前置摄像头和/或后置摄像头。当电子设备600处于操作模式,如拍摄模式或多媒体模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件610用于输出和/或输入音频信号。例如,音频组件610包括一个麦克风(MIC),当电子设备600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。
I/O接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件614包括一个或多个传感器,用于为电子设备600提供各个方面的状态评估。例如,传感器组件614可以检测到电子设备600的打开/关闭状态,组件的相对定位,例如所述组件为电子设备600的显示器和小键盘,传感器组件614还可以检测电子设备600或电子设备600一个组件的位置改变,用户与电子设备600接触的存在或不存在,电子设备600方位或加速/减速和电子设备600的温度变化。传感器组件614可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件614还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件614还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件616用于便于电子设备600和其他设备之间有线或无线方式的通信。电子设备600可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件616经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件616还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备600可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于实现本申请实施例提供的一种分布式存储方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器604,上述指令可由电子设备600的处理器620执行以完成上述方法。例如,所述非临时性存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图12是根据一示例性实施例示出的一种电子设备700的框图。例如,电子设备700可以被提供为一服务器。参照图12,电子设备700包括处理组件722,其进一步包括一个或多个处理器,以及由存储器732所代表的存储器资源,用于存储可由处理组件722的执行的指令,例如应用程序。存储器732中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件722被配置为执行指令,以执行本申请实施例提供的一种分布式存储方法。
电子设备700还可以包括一个电源组件726被配置为执行电子设备700的电源管理,一个有线或无线网络接口750被配置为将电子设备700连接到网络,和一个输入输出(I/O)接口758。电子设备700可以操作基于存储在存储器732的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本申请实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现所述的分布式存储方法。
本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (21)

1.一种分布式存储方法,其特征在于,应用于分布式存储集群中的主节点,所述分布式存储集群基于一致性协议构建,所述分布式存储集群还包括一类从节点和二类从节点,所述分布式存储方法包括:
在接收到目标数据的情况下,将所述目标数据存储在主节点本地,并将所述目标数据发送至所述一类从节点,以使所述一类从节点对所述目标数据进行冗余备份;
确定所述二类从节点对应的第一数据偏移量;其中,所述第一数据偏移量用于指示目标数据在所述二类从节点中存储条目的变化量;
向所述二类从节点发送所述第一数据偏移量,以使得所述二类从节点存储所述第一数据偏移量;
其中,所述向所述二类从节点发送所述第一数据偏移量,包括:
确定所述目标数据的数据类型,所述数据类型包括配置变更数据和非配置变更数据;其中,所述配置变更数据用于调整所述分布式存储集群的设置;
在所述目标数据的数据类型为所述非配置变更数据的情况下,向所述二类从节点发送所述第一数据偏移量;
在所述目标数据的数据类型为所述配置变更数据的情况下,向所述二类从节点发送所述第一数据偏移量、所述目标数据、以及所述第一数据偏移量和所述目标数据的映射关系。
2.根据权利要求1所述的分布式存储方法,其特征在于,所述向所述二类从节点发送所述第一数据偏移量,包括:
根据所述目标数据和所述第一数据偏移量生成第一数据包;
清空所述第一数据包中的所述目标数据,得到第二数据包;
将所述第二数据包发送至所述二类从节点,以使得所述二类从节点存储所述第一数据偏移量。
3.根据权利要求1所述的分布式存储方法,其特征在于,所述分布式存储方法还包括:
在接收到由所述二类从节点发送的初始数据偏移量的情况下,生成包含集群元数据的初始化信息;其中,所述初始数据偏移量为所述二类从节点在建立时最初预设的数据偏移量,所述集群元数据包括所述主节点的当前数据偏移量和所述分布式存储集群的节点信息,所述节点信息包括所述分布式存储集群的节点数量和各个节点的节点类型中至少一项;
将所述初始化信息发送至所述二类从节点,以使得所述二类从节点根据所述初始化信息进行初始化。
4.根据权利要求1所述的分布式存储方法,其特征在于,所述将所述目标数据存储在主节点本地,并将所述目标数据发送至所述一类从节点,包括:
确定所述主节点对应的第二数据偏移量和所述一类从节点对应的第三数据偏移量;其中,所述第二数据偏移量用于指示目标数据在所述主节点中存储条目的变化量,所述第三数据偏移量用于指示目标数据在所述一类从节点中存储条目的变化量;
将所述第二数据偏移量、所述目标数据、以及所述第二数据偏移量和所述目标数据的映射关系存储在主节点本地;
向所述一类从节点发送所述第三数据偏移量、所述目标数据、以及所述第三数据偏移量与所述目标数据的映射关系。
5.根据权利要求4所述的分布式存储方法,其特征在于,所述确定所述主节点对应的第二数据偏移量和所述一类从节点对应的第三数据偏移量,包括:
对所述主节点对应的当前数据偏移量进行预设数量的递增处理,得到所述第二数据偏移量;
对所述一类从节点对应的当前数据偏移量进行预设数量的递增处理,得到所述第三数据偏移量;
所述确定所述二类从节点对应的第一数据偏移量,包括:
对所述二类从节点对应的当前数据偏移量进行预设数量的递增处理,得到所述第一数据偏移量。
6.一种分布式存储方法,其特征在于,应用于分布式存储集群中的二类从节点,所述分布式存储集群基于一致性协议构建,所述分布式存储集群还包括主节点和一类从节点,所述分布式存储方法包括:
接收由所述主节点生成并发送的第一数据偏移量,其中,所述主节点用于向所述一类从节点发送目标数据,并向所述二类从节点发送第一数据偏移量;其中,所述第一数据偏移量用于指示目标数据在所述二类从节点中存储条目的变化量;
对所述第一数据偏移量进行存储;
在第一次接收到由所述主节点发送的偏移量获取指令的情况下,向所述主节点发送初始数据偏移量;其中,所述初始数据偏移量为所述二类从节点在建立时最初预设的数据偏移量;
接收所述主节点根据所述初始数据偏移量反馈的包含集群元数据的初始化信息,并基于所述初始化信息进行初始化;其中,所述集群元数据包括所述主节点的当前数据偏移量和所述分布式存储集群的节点信息,所述节点信息包括所述分布式存储集群的节点数量和各个节点的节点类型中至少一项。
7.根据权利要求6所述的分布式存储方法,其特征在于,所述分布式存储方法还包括:
监听由所述主节点广播的心跳消息;
在未监听到所述心跳消息的时间超过第一预设时长的情况下,向所述一类从节点发送赞成消息;其中,所述赞成消息用于票选所述一类从节点成为新的主节点。
8.根据权利要求7所述的分布式存储方法,其特征在于,所述向所述一类从节点发送赞成消息,包括:
获取所述一类从节点的当前数据偏移量和所述二类从节点的当前数据偏移量;其中,所述当前数据偏移量用于表征对应节点中已存储的数据条目;
在所述一类从节点的当前数据偏移量大于或等于所述二类从节点的当前数据偏移量,且未监听到所述心跳消息的时间超过第一预设时长的情况下,向所述一类从节点发送赞成消息;
在所述一类从节点的当前数据偏移量小于所述二类从节点的当前数据偏移量,且未监听到所述心跳消息的时间超过第二预设时长的情况下,向所述一类从节点发送赞成消息;其中,所述第二预设时长大于所述第一预设时长。
9.一种分布式存储集群构建方法,其特征在于,应用于分布式存储集群构建设备,所述分布式存储方法包括:
基于一致性协议构建由主节点、一类从节点和二类从节点构成的目标分布式存储集群,
或者,
获取基于一致性协议构建的初始分布式存储集群,所述初始分布式存储集群包括一个第一一类从节点、至少一个第二一类从节点和一个主节点,将所述第一一类从节点替换为二类从节点,得到由所述主节点、所述第二一类从节点和所述二类从节点构成的目标分布式存储集群;
其中,所述主节点,用于在接收到目标数据的情况下,将所述目标数据存储在主节点本地,并将所述目标数据发送至所述一类从节点,以使所述一类从节点对所述目标数据进行冗余备份;确定所述二类从节点对应的第一数据偏移量;其中,所述第一数据偏移量用于指示目标数据在所述二类从节点中存储条目的变化量;向所述二类从节点发送所述第一数据偏移量,以使得所述二类从节点存储所述第一数据偏移量;
其中,所述将所述第一一类从节点替换为二类从节点,包括:
向所述主节点发送配置变更信息,以使所述主节点根据所述配置变更信息在所述初始分布式存储集群的节点信息中增加二类从节点信息,并将所述二类从节点信息同步在所述初始分布式存储集群的所有一类从节点中;
获取初始分布式存储集群的所有一类从节点对应的当前数据偏移量,并将所述当前数据偏移量最小的一类从节点确定为第一一类从节点;其中,所述当前数据偏移量用于表征对应节点中已存储的数据条目;
将所述第一一类从节点替换为二类从节点。
10.一种分布式存储装置,其特征在于,应用于分布式存储集群中的主节点,所述分布式存储集群基于一致性协议构建,所述分布式存储集群还包括一类从节点和二类从节点,所述分布式存储装置包括:
存储模块,被配置为在接收到目标数据的情况下,将所述目标数据存储在主节点本地,并将所述目标数据发送至所述一类从节点,以使所述一类从节点对所述目标数据进行冗余备份;
偏移量模块,被配置为确定所述二类从节点对应的第一数据偏移量;其中,所述第一数据偏移量用于指示目标数据在所述二类从节点中存储条目的变化量;
发送模块,被配置为向所述二类从节点发送所述第一数据偏移量,以使得所述二类从节点存储所述第一数据偏移量;
其中,所述发送模块包括:
数据类型子模块,被配置为确定所述目标数据的数据类型,所述数据类型包括配置变更数据和非配置变更数据;其中,所述配置变更数据用于调整所述分布式存储集群的设置;
判定子模块,被配置为在所述目标数据的数据类型为所述非配置变更数据的情况下,向所述二类从节点发送所述第一数据偏移量;
关系发送子模块,被配置为在所述目标数据的数据类型为所述配置变更数据的情况下,向所述二类从节点发送所述第一数据偏移量、所述目标数据、以及所述第一数据偏移量和所述目标数据的映射关系。
11.根据权利要求10所述的分布式存储装置,其特征在于,所述发送模块,包括:
第一数据包子模块,被配置为根据所述目标数据和所述第一数据偏移量生成第一数据包;
第二数据包子模块,被配置为清空所述第一数据包中的所述目标数据,得到第二数据包;
第一发送子模块,被配置为将所述第二数据包发送至所述二类从节点,以使得所述二类从节点存储所述第一数据偏移量。
12.根据权利要求10所述的分布式存储装置,其特征在于,所述装置还包括:
初始信息模块,被配置为在接收到由所述二类从节点发送的初始数据偏移量的情况下,生成包含集群元数据的初始化信息;其中,所述初始数据偏移量为所述二类从节点在建立时最初预设的数据偏移量,所述集群元数据包括所述主节点的当前数据偏移量和所述分布式存储集群的节点信息,所述节点信息包括所述分布式存储集群的节点数量和各个节点的节点类型中至少一项;
初始信息发送模块,被配置为将所述初始化信息发送至所述二类从节点,以使得所述二类从节点根据所述初始化信息进行初始化。
13.根据权利要求10所述的分布式存储装置,其特征在于,所述存储模块包括:
偏移量确定子模块,被配置为确定所述主节点对应的第二数据偏移量和所述一类从节点对应的第三数据偏移量;其中,所述第二数据偏移量用于指示目标数据在所述主节点中存储条目的变化量,所述第三数据偏移量用于指示目标数据在所述一类从节点中存储条目的变化量;
主节点存储子模块,被配置为将所述第二数据偏移量、所述目标数据、以及所述第二数据偏移量和所述目标数据的映射关系存储在主节点本地;
从节点存储子模块,被配置为向所述一类从节点发送所述第三数据偏移量、所述目标数据、以及所述第三数据偏移量与所述目标数据的映射关系。
14.根据权利要求13所述的分布式存储装置,其特征在于,所述偏移量确定子模块,包括:
第二偏移量子模块,被配置为对所述主节点对应的当前数据偏移量进行预设数量的递增处理,得到所述第二数据偏移量;
第三偏移量子模块,被配置为对所述一类从节点对应的当前数据偏移量进行预设数量的递增处理,得到所述第三数据偏移量;
所述确定所述二类从节点对应的第一数据偏移量,包括:
第一偏移量子模块,被配置为对所述二类从节点对应的当前数据偏移量进行预设数量的递增处理,得到所述第一数据偏移量。
15.一种分布式存储装置,其特征在于,应用于分布式存储集群中的二类从节点,所述分布式存储集群基于一致性协议构建,所述分布式存储集群还包括主节点和一类从节点,所述分布式存储装置包括:
接收模块,被配置为接收由所述主节点生成并发送的第一数据偏移量,其中,所述主节点用于向所述一类从节点发送目标数据,并向所述二类从节点发送第一数据偏移量;其中,所述第一数据偏移量用于指示目标数据在所述二类从节点中存储条目的变化量;
偏移量存储模块,被配置为对所述第一数据偏移量进行存储;
其中,所述装置还包括:
初始数据偏移量发送模块,被配置为在第一次接收到由所述主节点发送的偏移量获取指令的情况下,向所述主节点发送初始数据偏移量;其中,所述初始数据偏移量为所述二类从节点在建立时最初预设的数据偏移量;
初始化模块,被配置为接收所述主节点根据所述初始数据偏移量反馈的包含集群元数据的初始化信息,并基于所述初始化信息进行初始化;其中,所述集群元数据包括所述主节点的当前数据偏移量和所述分布式存储集群的节点信息,所述节点信息包括所述分布式存储集群的节点数量和各个节点的节点类型中至少一项。
16.根据权利要求15所述的分布式存储装置,其特征在于,所述装置还包括:
监听模块,被配置为监听由所述主节点广播的心跳消息;
投票模块,被配置为在未监听到所述心跳消息的时间超过第一预设时长的情况下,向所述一类从节点发送赞成消息;其中,所述赞成消息用于票选所述一类从节点成为新的主节点。
17.根据权利要求16所述的分布式存储装置,其特征在于,所述投票模块包括:
当前偏移量获取子模块,被配置为获取所述一类从节点的当前数据偏移量和所述二类从节点的当前数据偏移量;其中,所述当前数据偏移量用于表征对应节点中已存储的数据条目;
投票第一子模块,被配置为在所述一类从节点的当前数据偏移量大于或等于所述二类从节点的当前数据偏移量,且未监听到所述心跳消息的时间超过第一预设时长的情况下,向所述一类从节点发送赞成消息;
投票第二子模块,被配置为在在所述一类从节点的当前数据偏移量小于所述二类从节点的当前数据偏移量,且未监听到所述心跳消息的时间超过第二预设时长的情况下,向所述一类从节点发送赞成消息;其中,所述第二预设时长大于所述第一预设时长。
18.一种分布式存储集群构建装置,其特征在于,应用于分布式存储集群构建设备,所述装置包括:
构建模块,被配置为基于一致性协议构建由主节点、一类从节点和二类从节点构成的目标分布式存储集群,
或者,
获取基于一致性协议构建的初始分布式存储集群,所述初始分布式存储集群包括一个第一一类从节点、至少一个第二一类从节点和一个主节点,将所述第一一类从节点替换为二类从节点,得到由所述主节点、所述第二一类从节点和所述二类从节点构成的目标分布式存储集群;
其中,所述主节点,用于在接收到目标数据的情况下,将所述目标数据存储在主节点本地,并将所述目标数据发送至所述一类从节点,确定所述二类从节点对应的第一数据偏移量,向所述二类从节点发送所述第一数据偏移量;所述二类从节点,用于接收由所述主节点生成并发送的第一数据偏移量,对所述第一数据偏移量进行存储;
其中,所述构建模块包括:
变更信息子模块,被配置为向所述主节点发送配置变更信息,以使所述主节点根据所述配置变更信息在所述初始分布式存储集群的节点信息中增加二类从节点信息,并将所述二类从节点信息同步在所述初始分布式存储集群的所有一类从节点中;
第一一类从节点子模块,被配置为获取初始分布式存储集群的所有一类从节点对应的当前数据偏移量,并将所述当前数据偏移量最小的一类从节点确定为第一一类从节点;其中,所述当前数据偏移量用于表征对应节点中已存储的数据条目;
替换子模块,被配置为将所述第一一类从节点替换为二类从节点。
19.一种电子设备,其特征在于,包括:处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至9中任一项所述的方法。
20.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至9中任一项所述的方法。
21.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9任一项所述的方法。
CN202111448843.4A 2021-11-30 2021-11-30 一种分布式存储方法及装置 Active CN114237497B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111448843.4A CN114237497B (zh) 2021-11-30 2021-11-30 一种分布式存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111448843.4A CN114237497B (zh) 2021-11-30 2021-11-30 一种分布式存储方法及装置

Publications (2)

Publication Number Publication Date
CN114237497A CN114237497A (zh) 2022-03-25
CN114237497B true CN114237497B (zh) 2024-03-12

Family

ID=80752351

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111448843.4A Active CN114237497B (zh) 2021-11-30 2021-11-30 一种分布式存储方法及装置

Country Status (1)

Country Link
CN (1) CN114237497B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105426439A (zh) * 2015-11-05 2016-03-23 腾讯科技(深圳)有限公司 一种元数据的处理方法和装置
CN110502373A (zh) * 2019-07-26 2019-11-26 苏州浪潮智能科技有限公司 一种主从节点数据同步的方法、设备及可读介质
CN110688254A (zh) * 2019-09-06 2020-01-14 北京达佳互联信息技术有限公司 一种数据同步方法、装置、电子设备及存储介质
CN111368002A (zh) * 2020-03-05 2020-07-03 广东小天才科技有限公司 一种数据处理方法、系统、计算机设备和存储介质
CN112202687A (zh) * 2020-12-03 2021-01-08 苏州浪潮智能科技有限公司 一种节点同步方法、装置、设备及存储介质
CN113239013A (zh) * 2021-05-17 2021-08-10 北京青云科技股份有限公司 分布式系统及存储介质
CN113268472A (zh) * 2021-07-15 2021-08-17 北京华品博睿网络技术有限公司 一种分布式数据存储系统及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104283906B (zh) * 2013-07-02 2018-06-19 华为技术有限公司 分布式存储系统、集群节点及其区间管理方法
CN107295080B (zh) * 2017-06-19 2020-12-18 北京百度网讯科技有限公司 应用于分布式服务器集群的数据存储方法和服务器

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105426439A (zh) * 2015-11-05 2016-03-23 腾讯科技(深圳)有限公司 一种元数据的处理方法和装置
CN110502373A (zh) * 2019-07-26 2019-11-26 苏州浪潮智能科技有限公司 一种主从节点数据同步的方法、设备及可读介质
CN110688254A (zh) * 2019-09-06 2020-01-14 北京达佳互联信息技术有限公司 一种数据同步方法、装置、电子设备及存储介质
CN111368002A (zh) * 2020-03-05 2020-07-03 广东小天才科技有限公司 一种数据处理方法、系统、计算机设备和存储介质
CN112202687A (zh) * 2020-12-03 2021-01-08 苏州浪潮智能科技有限公司 一种节点同步方法、装置、设备及存储介质
CN113239013A (zh) * 2021-05-17 2021-08-10 北京青云科技股份有限公司 分布式系统及存储介质
CN113268472A (zh) * 2021-07-15 2021-08-17 北京华品博睿网络技术有限公司 一种分布式数据存储系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PluriHis : A Highly Scalable Scheme of Distributed Historical Data Storage and Access;JIN SHU等;《2016 China International Conference on Electricity Distribution (CICED 2016)》;论文第1-5页 *
分布式数据存储技术;zero__007;《https://blog.csdn.net/zero__007/article/details/118255017》;论文第1-11页 *

Also Published As

Publication number Publication date
CN114237497A (zh) 2022-03-25

Similar Documents

Publication Publication Date Title
EP3937426B1 (en) Master-slave server switching method, apparatus and storage medium
RU2652452C2 (ru) Устройство и способ представления информации о состоянии сети
CN108989062B (zh) 更新群成员数据的方法、装置、终端、系统及存储介质
CN114237497B (zh) 一种分布式存储方法及装置
CN113067757B (zh) 信息发送和存储方法、装置和介质
CN114339966B (zh) 用于数据传输的界面控制方法、装置、介质与电子设备
CN112017640B (zh) 唤醒决策方法、装置、电子设备及存储介质
CN111290882B (zh) 数据文件备份方法、数据文件备份装置及电子设备
CN111241134B (zh) 一种数据处理方法及装置
CN109948012B (zh) 序列号的生成方法、装置及存储介质
CN108509641B (zh) 文件备份的方法、装置、服务器以及系统
CN112769677A (zh) 数据同步方法、装置、电子设备、存储介质和程序产品
CN106992882B (zh) 路由器文件迁移方法和装置
CN116909760B (zh) 数据处理方法、装置、可读存储介质、电子设备
CN110716985B (zh) 一种节点信息处理方法、装置及介质
CN116016090A (zh) 一种网卡集群管理方法、装置、电子设备及可读存储介质
CN116709004B (zh) 一种图像处理方法和电子设备
CN116383199A (zh) 一种集群数据存储方法、装置、电子设备及存储介质
CN113157604B (zh) 基于分布式系统的数据获取方法、装置及相关产品
CN115037595B (zh) 网络恢复方法、装置、设备及存储介质
US20230216673A1 (en) Method and apparatus for synchronizing information, and storage medium
CN114489856A (zh) 应用程序配置文件获取方法、装置和设备
CN117472656A (zh) 热备式服务集群的权限转移方法、装置、设备及存储介质
CN116501515A (zh) 信息同步方法、装置、电子设备及存储介质
CN114090584A (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
GR01 Patent grant
GR01 Patent grant