CN111273859B - 分发模式下复制组成员的变更方法、装置、设备和介质 - Google Patents

分发模式下复制组成员的变更方法、装置、设备和介质 Download PDF

Info

Publication number
CN111273859B
CN111273859B CN202010037934.8A CN202010037934A CN111273859B CN 111273859 B CN111273859 B CN 111273859B CN 202010037934 A CN202010037934 A CN 202010037934A CN 111273859 B CN111273859 B CN 111273859B
Authority
CN
China
Prior art keywords
replication group
data
change
replication
version number
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
CN202010037934.8A
Other languages
English (en)
Other versions
CN111273859A (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 Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202010037934.8A priority Critical patent/CN111273859B/zh
Publication of CN111273859A publication Critical patent/CN111273859A/zh
Application granted granted Critical
Publication of CN111273859B publication Critical patent/CN111273859B/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/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]
    • 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

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

分发模式下复制组成员的变更方法、装置、设备和介质
技术领域
本申请实施例涉及计算机技术,尤其涉及数据存储技术,具体涉及一种分发模式下复制组成员的变更方法、装置、设备和介质。
背景技术
数据冗余策略是分布式存储系统为了保证数据可靠性,对目标数据进行冗余存储的机制,合理的冗余策略可以保证数据不会因为单节点故障丢失。目前分布式存储系统主流实现中,对于数据存储主要有3种模式:流水线模式、分发模式和树形模式。
不同数据存储模式下,复制组中部分结点可用性下降会导致复制组成员发生变更。尤其是在分发模式下,如果采用了权衡写入机制,则会剔除慢节点以优化写入性能,这就会造成频繁的复制组成员变更现象。然而,对于分发模式和权衡写入机制结合的情况,现有技术还有没有一种有效的复制组成员变更方法,这导致数据存储过程中若出现连续结点宕机则一定会影响数据可靠性。
发明内容
本申请实施例提供一种分发模式下复制组成员的变更方法、装置、设备和介质,可以解决分发模式下频繁的复制组成员变更影响数据可靠性的问题。
第一方面,本申请实施例公开了一种分发模式下复制组成员的变更方法,包括:
在向复制组写入分发数据时,如果检测到与所述复制组对应的复制组成员集合中的目标成员不满足可用条件,则确定新的变更成员;
从所述复制组成员集合的其他成员中选择同步成员,并控制所述变更成员从所述同步成员处同步所述复制组的存量数据;
同时向所述复制组成员集合和备选成员集合写入分发数据,所述备选成员集合包括所述复制组成员集合的其他成员和变更成员;
如果检测到所述变更成员完成存量数据的同步,且所述分发数据已成功写入至所述备选成员集合,则将所述备选成员集合更新为所述复制组的新的复制组成员集合,并将新的分发数据写入所述备选成员集合中。
上述申请中的一个实施例具有如下优点或有益效果:通过在向复制组写入分发数据时,若检测到复制组成员集合中的目标成员不满足可用条件,则确定新的变更成员,并控制变更成员从同步成员处同步复制组的存量数据;同时向复制组成员集合和备选成员集合写入分发数据,当变更成员完成存量数据的同步,且分发数据已成功写入至备选成员集合,则将备选成员集合更新为复制组的新的复制组成员集合,保证了各待存储数据的可靠性,且复制组成员变更过程中开销小,数据同步速度快。
可选的,确定新的变更成员,包括:
向主机端发送新复制组成员的申请请求,并接收所述主机端针对所述申请请求反馈的复制组成员的标识信息;
根据所述复制组成员的标识信息,确定所述新的变更成员;
其中,所述主机端在根据所述申请请求成功创建新复制组成员后,反馈创建的新复制组成员的标识信息。
上述申请中的一个实施例具有如下优点或有益效果:通过向主机端发送新复制组成员的申请请求,并接收主机端反馈的创建的新复制组成员的标识信息,并根据该标识信息确定新的变更成员,实现了当目标成员不满足可用条件时,确定用于替换该目标成员的变更成员的技术效果,并为后续控制变更成员从同步成员处同步复制组的存量数据,以及向变更成员所在的备选成员集合写入分发数据,奠定了基础。
可选的,控制变更成员从同步成员处同步复制组的存量数据,包括:
构造复制组成员变更请求,所述复制组成员变更请求中包括:复制组身份标识、复制组成员版本号、存量数据版本号、写者版本号以及同步成员的身份标识;
将所述复制组成员变更请求发送至所述变更成员,以使变更成员从同步成员处同步复制组的存量数据;
其中,所述变更成员在确定本地维护的复制组成员版本号以及写者版本号与所述复制组成员变更请求中的复制组成员版本号以及写者版本号相匹配时,根据所述复制组成员变更请求中的复制组身份标识、存量数据版本号和同步成员的身份标识,从同步成员处同步复制组的存量数据。
上述申请中的一个实施例具有如下优点或有益效果:通过将复制组成员变更请求发送至变更成员,以使变更成员将复制组成员变更请求中的复制组成员版本号以及写者版本号与本地维护的复制组成员版本号以及写者版本号相匹配,若匹配成功则根据复制组成员变更请求中的复制组身份标识、存量数据版本号和同步成员的身份标识,从同步成员处同步复制组的存量数据,实现了将复制组的存量数据同步至变更成员的技术效果,并保证了数据同步的正确性。
可选的,同时向复制组成员集合和备选成员集合写入分发数据,备选成员集合包括复制组成员集合的其他成员和变更成员,包括:
采用预设的权衡写入机制,同时向复制组成员集合和备选成员集合写入分发数据,备选成员集合包括复制组成员集合的其他成员和变更成员。
上述申请中的一个实施例具有如下优点或有益效果:通过采用预设的权衡写入机制,同时向复制组成员集合和备选成员集合写入分发数据,保证分发数据能够既写入了复制组成员集合,又写入了备选成员集合,使得无论后续目标成员是否重新满足可用条件,使得复制组成员集合和备选成员集合都满足数据的可靠性。
可选的,在采用预设的权衡写入机制,同时向复制组成员集合和备选成员集合写入分发数据,备选成员集合包括复制组成员集合的其他成员和变更成员之后,还包括:
实时统计复制组成员集合中发送成功写入响应的第一成员集合,以及备选成员集合中发送成功写入响应的第二成员集合;
所述第一成员集合与所述第二成员集合均满足与所述权衡写入机制对应的成员条件时,生成与所述分发数据匹配的复制组成功写入响应;
检测到分发数据已成功写入至备选成员集合,包括:
如果检测到所述复制组成功写入响应,则确定分发数据已成功写入至备选成员集合。
上述申请中的一个实施例具有如下优点或有益效果:通过实时统计复制组成员集合中发送成功写入响应的第一成员集合,以及备选成员集合中发送成功写入响应的第二成员集合,当第一成员集合与第二成员集合均满足与权衡写入机制对应的成员条件时,生成与分发数据匹配的复制组成功写入响应,并根据该响应确定分发数据已成功写入至备选成员集合,实现了检测分发数据是否已成功写入至备选成员集合的技术效果,为后续将备选成员集合更新为复制组的新的复制组成员集合,奠定了基础。
可选的,在向复制组写入分发数据之前,还包括:
向主机端发送的针对所述复制组的文件写入请求,接收所述主机端反馈的复制组成员版本号、写者版本号以及复制组成员集合;
根据所述复制组成员版本号以及写者版本号构造数据写请求发送至所述复制组成员集合中的各个成员;
其中,所述复制组成员集合中的成员如果确定本地维护的所述复制组成员版本号以及写者版本号与所述数据写请求中的复制组成员版本号以及写者版本号不匹配,则拒绝分发数据的写入。
上述申请中的一个实施例具有如下优点或有益效果:通过根据主机端反馈的复制组成员版本号以及写者版本号构造数据写请求,并发送至复制组成员集合中的各个成员,使得各个成员根据该复制组成员版本号以及写者版本号与本地维护的复制组成员版本号以及写者版本号进行匹配,若不匹配则拒绝分发数据的写入,保证了分发数据写入的正确性,避免了重复写入数据以及将分发数据写入错误位置的问题。
可选的,将备选成员集合更新为复制组的新的复制组成员集合,包括:
向复制组成员集合中的各成员发送复制组成员版本号更新请求;
在确定所述复制组成员集合成功更新所述复制组成员版本号后,将所述备选成员集合的信息发送至所述主机端;
其中,所述主机端用于将所述备选成员集合更新为复制组的新的复制组成员集合,并更新当前存储的复制组成员版本号,以使读节点感知到所述复制组的复制组成员的变化;
在检测到所述主机端反馈的复制组成员确认更新响应时,确定将备选成员集合更新为复制组的新的复制组成员集合。
上述申请中的一个实施例具有如下优点或有益效果:通过在主机端更新复制组成员版本号和复制组的新的复制组成员集合,使得当读节点利用旧的复制组成员版本号想要读取旧的复制组成员集合时,可以拒绝本次读取操作,并反馈给读节点新的复制组成员集合和更新后的复制组成员版本号,让读节点感知到所述复制组的复制组成员的变化,保证数据写入\读取的一致性和正确性。
可选的,在并将新的分发数据写入备选成员集合中之后,还包括:
在检测到完成向复制组写入分发数据后,向所述主机端反馈完成写入响应;
所述主机端用于根据所述完成写入响应更新所述写者版本号,并将更新后的所述写者版本号发送至各个复制组的复制组成员集合。
上述申请中的一个实施例具有如下优点或有益效果:通过在检测到完成向复制组写入分发数据后,向主机端反馈完成写入响应,主机端用于根据完成写入响应更新写者版本号,并将更新后的写者版本号发送至各个复制组的复制组成员集合,实现了复制组成员集合中写者版本号的更新,保证同一时刻只有一个写者来进行分发数据的写入。
可选的,在检测到变更成员完成存量数据的同步之前,还包括:
如果检测到所述目标成员重新满足可用条件,则仅向复制组成员集合写入所述分发数据。
上述申请中的一个实施例具有如下优点或有益效果:通过如果检测到目标成员重新满足可用条件,则仅向复制组成员集合写入所述分发数据,实现了回滚效果,避免了不必要的复制组成员的变更。
可选的,所述方法还包括:
如果接收所述主机端针对所述申请请求反馈的新复制组成员建立失败响应,则在向复制组写入分发数据的过程中,放弃变更复制组成员。
上述申请中的一个实施例具有如下优点或有益效果:通过如果接收主机端针对申请请求反馈的新复制组成员建立失败响应,则放弃变更复制组成员,避免了后续不必要的复制组成员的变更操作。
可选的,所述方法还包括:
如果接收到主机端发送的存量数据同步失败响应,则在向复制组写入分发数据的过程中,放弃变更复制组成员;
其中,所述主机端在接收到所述同步成员的拒绝同步响应时,生成所述存量数据同步失败响应。
上述申请中的一个实施例具有如下优点或有益效果:通过如果接收到主机端发送的存量数据同步失败响应,则在向复制组写入分发数据的过程中,放弃变更复制组成员,避免了后续不必要的复制组成员的变更操作。
第二方面,本申请实施例还公开了一种分发模式下复制组成员的变更装置,包括:
变更成员确定模块,用于在向复制组写入分发数据时,如果检测到与所述复制组对应的复制组成员集合中的目标成员不满足可用条件,则确定新的变更成员;
存量数据同步模块,用于从所述复制组成员集合的其他成员中选择同步成员,并控制所述变更成员从所述同步成员处同步所述复制组的存量数据;
分发数据写入模块,用于同时向所述复制组成员集合和备选成员集合写入分发数据,所述备选成员集合包括所述复制组成员集合的其他成员和变更成员;
复制组成员集合更新模块,用于如果检测到所述变更成员完成存量数据的同步,且所述分发数据已成功写入至所述备选成员集合,则将所述备选成员集合更新为所述复制组的新的复制组成员集合,并将新的分发数据写入所述备选成员集合中。
第三方面,本申请实施例还公开了一种设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请任意实施例所述的分发模式下复制组成员的变更方法。
第四方面,本申请实施例还公开了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本申请任意实施例所述的分发模式下复制组成员的变更方法。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请第一实施例的一种分发模式下复制组成员的变更方法的流程示意图;
图2是根据本申请第二实施例的一种分发模式下复制组成员的变更方法的流程示意图;
图3是根据本申请第三实施例的一种分发模式下复制组成员的变更装置的结构示意图;
图4是用来实现本申请实施例的分发模式下复制组成员的变更方法的设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
实施例一
图1为本申请实施例一提供的一种分发模式下复制组成员的变更方法的流程示意图。本实施例适用于在分发模式下进行数据存储时,需要对复制组成员进行变更的情况,可以由本申请实施例提供的分发模式下复制组成员的变更装置来执行,该装置可以采用软件和/或硬件的方式实现。如图1所示,该方法可以包括:
S101、在向复制组写入分发数据时,如果检测到与所述复制组对应的复制组成员集合中的目标成员不满足可用条件,则确定新的变更成员。
其中,复制组表示一个数据块的多副本备份,例如数据块A具有双副本备份:副本备份B和副本备份C,则副本备份B和副本备份C都称为复制组。分发数据指的是数据存储模式为分发模式时,客户端需要向各复制组写入的待存储数据。复制组成员表示存储复制组的数据节点,例如复制组A存储于数据节点B、数据节点C和数据节点D,则数据节点B、数据节点C和数据节点D都称为复制组A对应的复制组成员。变更成员表示若复制组成员集合中存在不满足可用条件的成员,为了保持复制组可用成员的数量不变,用来替换该不可用成员的数据节点。
具体的,客户端在向复制组写入分发数据时,实时检测该复制组对应的复制组成员集合中各成员是否满足可用条件,例如是否可以写入或者网络响应速度是否大于预设阈值等。若检测到有不满足可用条件的成员,则将该成员作为目标成员,并向主机端发送申请请求,以确定用于替换目标成员的新的变更成员。
可选的,S101中“确定新的变更成员”,包括:
向主机端发送新复制组成员的申请请求,并接收所述主机端针对所述申请请求反馈的复制组成员的标识信息;根据所述复制组成员的标识信息,确定所述新的变更成员。其中,所述主机端在根据所述申请请求成功创建新复制组成员后,反馈创建的新复制组成员的标识信息。
具体的,客户端生成新复制组成员的申请请求,并发送给主机端,主机端响应该申请请求,创建一个新的数据节点作为新复制组成员,并将该新复制组成员的标识信息反馈给客户端,其中标识信息包括但不限于物理地址信息或者访问路径信息等。客户端根据该标识信息,将主机端创建的新复制组成员作为新的变更成员。
通过当检测到复制组对应的复制组成员集合中的目标成员不满足可用条件,则确定新的变更成员,为后续控制变更成员从同步成员处同步复制组的存量数据奠定了基础,保证了数据写入性能。
S102、从所述复制组成员集合的其他成员中选择同步成员,并控制所述变更成员从所述同步成员处同步所述复制组的存量数据。
其中,其他成员指的是复制组成员集合中除去目标成员外的成员,而同步成员表示为变更成员提供用于同步存量数据的成员,同步成员可根据客户端预设的规则来进行选取。存量数据指的是当前分发数据写入之前,复制组中已写入的历史分发数据。
具体的,客户端根据预设的规则从除去目标成员的其他成员中,选择同步成员,例如选择其他成员中网络响应速度最大的成员作为同步成员,又例如随机选取其他成员中的某一个成员作为同步成员。本实施例对同步成员的选择方法并不做任何的限定,凡是满足可用条件的成员都可以作为同步成员。确定同步成员后,客户端向变更成员发送复制组成员变更请求,以使得变更成员对该复制组成员变更请求校验通过后,根据该复制组成员变更请求从同步成员处同步复制组的存量数据。其中,复制组成员变更请求包括校验信息以及存量数据的存储信息。
通过从复制组成员集合的其他成员中选择同步成员,并控制变更成员从同步成员处同步复制组的存量数据,实现了将不满足可用条件的目标成员替换为变更成员的技术效果,且变更成员中存储有存量数据,保证了满足可用条件成员的数量不变,维持了数据的可靠性。
S103、同时向所述复制组成员集合和备选成员集合写入分发数据,所述备选成员集合包括所述复制组成员集合的其他成员和变更成员。
具体的,写入分发数据的方式包括但不限于全写入机制或者权衡写入机制等。
示例性的,假设复制组成员集合为成员A、成员B和成员C,其中成员C为不满足可用条件的目标成员,成员A和成员B为其他成员,假设成员D为新的变更成员,则备选成员集合为成员A、成员B和成员D。则客户端同时向复制组成员集合和备选成员集合写入分发数据,即向“成员A、成员B和成员C”组成的集合和“成员A、成员B和成员D”组成的集合同时写入分发数据。
通过同时向复制组成员集合和备选成员集合写入分发数据,保证分发数据能够既写入了复制组成员集合,又写入了备选成员集合,使得无论后续目标成员是否重新满足可用条件,使得复制组成员集合和备选成员集合都满足数据的可靠性。
S104、如果检测到所述变更成员完成存量数据的同步,且所述分发数据已成功写入至所述备选成员集合,则将所述备选成员集合更新为所述复制组的新的复制组成员集合,并将新的分发数据写入所述备选成员集合中。
具体的,当变更成员完成存量数据的同步后,变更成员会生成成功同步响应并发送给客户端;并且,当客户端将分发数据成功写入备选成员集合后,客户端会生成成功写入响应。客户端对于成功同步响应和成功写入响应进行实时检测,若既检测到成功同步响应又检测到成功写入响应,则将备选成员集合作为复制组的新的复制组成员集合,此后客户端将新的分发数据写入到备选成员集合中,而不写入到旧的复制组成员集合中。
示例性的,假设复制组对应的旧的复制组成员集合包括成员A、成员B和成员C,假设备选成员集合包括成员A、成员B和成员D,则当客户端既检测到成功同步响应又检测到成功写入响应后,将备选成员集合作为复制组的新的复制组成员集合,则此后客户端将新的分发数据写入到“成员A、成员B和成员D”的集合中,而不写入到“成员A、成员B和成员C”的集合中。
通过将备选成员集合更新为复制组的新的复制组成员集合,并将新的分发数据写入备选成员集合中,实现了分发模式下复制组成员的变更的技术效果。
本申请实施例提供的技术方案,通过在向复制组写入分发数据时,若检测到复制组成员集合中的目标成员不满足可用条件,则确定新的变更成员,并控制变更成员从同步成员处同步复制组的存量数据;同时向复制组成员集合和备选成员集合写入分发数据,当变更成员完成存量数据的同步,且分发数据已成功写入至备选成员集合,则将备选成员集合更新为复制组的新的复制组成员集合,实现了分发模式下复制组成员的变更,同时保证了各待存储数据的可靠性,且复制组成员变更过程中开销小,数据同步速度快。
在上述实施例的基础上,S104中“如果检测到变更成员完成存量数据的同步”之前,还包括:
如果检测到所述目标成员重新满足可用条件,则仅向复制组成员集合写入所述分发数据。
具体的,客户端若检测到目标成员不满足可用条件后,还会对目标成员是否满足可用条件进行实时检测,若客户端在检测到变更成员发送的成功同步响应之前,检测到目标成员重新满足可用条件,则停止后续将备选成员集合更新为复制组的新的复制组成员集合的操作,并仅向复制组成员集合写入分发数据。
示例性的,假设复制组对应的旧的复制组成员集合包括成员A、成员B和成员C,假设备选成员集合包括成员A、成员B和成员D,则客户端在检测到变更成员D发送的成功同步响应之前,检测到目标成员C重新满足可用条件,则停止将备选成员集合更新为复制组的新的复制组成员集合的操作,并仅向“成员A、成员B和成员C”写入分发数据。
通过如果检测到目标成员重新满足可用条件,则仅向复制组成员集合写入所述分发数据,实现了回滚效果,避免了不必要的复制组成员的变更,提高了客户端的分发数据写入效率。
在上述实施例的基础上,所述方法还包括:
如果接收所述主机端针对所述申请请求反馈的新复制组成员建立失败响应,则在向复制组写入分发数据的过程中,放弃变更复制组成员。
具体的,当客户端向主机端发送新复制组成员的申请请求后,主机端响应该申请请求,并创建新复制组成员,若新复制组成员创建失败,例如系统可用资源匮乏无法创建新数据节点作为新复制组成员,又例如创建的数据节点依然不满足可用条件,无法作为新复制组成员。则向客户端反馈新复制组成员建立失败响应,客户端根据该失败响应在向复制组写入分发数据的过程中,放弃变更复制组成员。
通过如果接收主机端针对申请请求反馈的新复制组成员建立失败响应,则放弃变更复制组成员,避免了后续不必要的复制组成员的变更操作,提高了客户端的分发数据写入效率。
实施例二
图2为本申请实施例二提供的一种分发模式下复制组成员的变更方法的流程示意图。本实施例为上述实施例提供了一种具体实现方式,如图2所示,该方法可以包括:
S201、在向复制组写入分发数据时,如果检测到与所述复制组对应的复制组成员集合中的目标成员不满足可用条件,则确定新的变更成员。
S202、从所述复制组成员集合的其他成员中选择同步成员,并构造复制组成员变更请求,所述复制组成员变更请求中包括:复制组身份标识、复制组成员版本号、存量数据版本号、写者版本号以及同步成员的身份标识。
其中,复制组身份标识即复制组的数据块标识,复制组中各复制组成员共同维护同一数据块标识,复制组身份标识用于唯一标识一个复制组,例如复制组A的数据块标识为“001”,复制组A对应的复制组成员集合包括成员A、成员B和成员C,则复制组A的复制组身份标识为“001”,相应的,“成员A、成员B和成员C”对应的复制组身份标识也为“001”。
复制组成员版本号用于标识复制组中复制组成员的变更情况,每当复制组中发生一次复制组成员变更,则将此时的复制组成员版本号加一。
存量数据版本号用来标识复制组成员中的存量数据的数据位置,每当复制组成员中有新的分发数据写入后,则将存量数据版本号加一。
写者版本号表示:每当客户端需要向某一个复制组写入数据时,首先需要向主机端请求打开文件,并获取写者版本号,每完成一个数据写入,主机端以及各个复制组成员中维护的写者版本号加一,用于约束同一时刻只能有一个客户端写入分发数据。示例性的,一个客户端在数据写入过程中,与主机端的连接断开,但是与写入的复制组成员没有断开连接,主机端进而会首先关闭文件,控制主机端以及各个复制组成员中的写者版本号加一,并允许新的客户端写入数据,而前一客户端因为所维护的写者版本号小于各个复制组成员中的写者版本号,则各个复制组成员不会继续允许该前一客户端继续写入数据,以保证同一时刻只能有一个客户端写入分发数据。
同步成员的身份标识即为变更成员提供同步数据的同步成员的身份标识。
具体的,客户端根据存储的复制组的复制组身份标识、复制组成员版本号、存量数据版本号和写者版本号,以及从复制组成员集合的其他成员中选择同步成员后,确定的同步成员的身份标识,构造复制组成员变更请求。
S203、将所述复制组成员变更请求发送至所述变更成员,以使变更成员从同步成员处同步复制组的存量数据。
具体的,变更成员接收复制组成员变更请求后,首先对复制组成员变更请求进行校验,若校验通过后,则根据该复制组成员变更请求从同步成员处同步复制组的存量数据。
可选的,变更成员在确定本地维护的复制组成员版本号以及写者版本号与所述复制组成员变更请求中的复制组成员版本号以及写者版本号相匹配时,根据所述复制组成员变更请求中的复制组身份标识、存量数据版本号和同步成员的身份标识,从同步成员处同步复制组的存量数据。
具体的,将变更成员本地维护的复制组成员版本号与复制组成员变更请求中的复制组成员版本号进行匹配,并将变更成员本地维护的写者版本号与复制组成员变更请求中的写者版本号进行匹配,若两者都相匹配,则表示变更成员对复制组成员变更请求校验通过。进而,变更成员根据复制组成员变更请求中的复制组身份标识和同步成员的身份标识,访问同步成员,并根据存量数据版本号,从同步成员处同步复制组的存量数据。
通过将复制组成员变更请求发送至变更成员,以使变更成员将复制组成员变更请求中的复制组成员版本号以及写者版本号与本地维护的复制组成员版本号以及写者版本号相匹配,若匹配成功则根据复制组成员变更请求中的复制组身份标识、存量数据版本号和同步成员的身份标识,从同步成员处同步复制组的存量数据,实现了将复制组的存量数据同步至变更成员的技术效果,并保证了数据同步的正确性。
S204、采用预设的权衡写入机制,同时向复制组成员集合和备选成员集合写入分发数据,备选成员集合包括复制组成员集合的其他成员和变更成员。
其中,权衡写入机制是一种分布式系统中常用的数据读写机制,用来保证数据冗余和读写一致性的算法。权衡写入机制可简单描述如下:假设有N个副本,对于写操作而言,W个副本写入成功之后,才认为此次写入操作成功;对于读操作而言,至少需要读R个副本才能读到此次写入的数据;其中,W和R要满足的条件:(1)W+R>N,以保证W和R有交集;(2)W>N/2,以保证数据的串行化修改,同一份数据的副本不可能同时被两个写请求修改。
S205、实时统计复制组成员集合中发送成功写入响应的第一成员集合,以及备选成员集合中发送成功写入响应的第二成员集合,若所述第一成员集合与所述第二成员集合均满足与所述权衡写入机制对应的成员条件时,生成与所述分发数据匹配的复制组成功写入响应。
具体的,客户端采用权衡写入机制同时向复制组成员集合和备选成员集合写入分发数据,而复制组成员集合和备选成员集合中的各成员在成功写入分发数据后,会生成成功写入响应并发送至客户端,客户端分别对复制组成员集合和备选成员集合反馈的成功写入响应进行实时统计,当复制组成员集合中发送成功写入响应的第一成员集合满足权衡写入机制对应的成员条件,同时,备选成员集合中发送成功写入响应的第二成员集合满足权衡写入机制对应的成员条件,则生成与分发数据匹配的复制组成功写入响应。其中,权衡写入机制对应的成员条件为:成功写入的成员数量占总成员数量的一半以上。
示例性的,假设复制组成员集合包括成员A、成员B和成员C,备选成员集合包括成员A、成员B和成员D;假设复制组成员集合中发送成功写入响应的第一成员集合包括成员A和成员B,备选成员集合中发送成功写入响应的第二成员集合包括成员A和成员D,则此时第一成员集合与第二成员集合均满足与权衡写入机制对应的成员条件;假设复制组成员集合中发送成功写入响应的第一成员集合包括成员B和成员C,备选成员集合中发送成功写入响应的第二成员集合包括成员C和成员D,则此时第一成员集合与第二成员集合均满足与权衡写入机制对应的成员条件;假设复制组成员集合中发送成功写入响应的第一成员集合包括成员A和成员C,备选成员集合中发送成功写入响应的第二成员集合包括成员A,则此时第一成员集合与第二成员集合未均满足与权衡写入机制对应的成员条件。
S206、如果检测到所述变更成员完成存量数据的同步,且检测到所述复制组成功写入响应,则向复制组成员集合中的各成员发送复制组成员版本号更新请求。
具体的,如果客户端接收到变更成员发送的成功同步响应,则确定变更成员完成存量数据的同步。与此同时,如果检测到复制组成功写入响应,则确定分发数据已成功写入至备选成员集合。则向复制组成员集合中的各成员发送复制组成员版本号更新请求。
S207、在确定所述复制组成员集合成功更新所述复制组成员版本号后,将所述备选成员集合的信息发送至所述主机端,并在检测到所述主机端反馈的复制组成员确认更新响应时,确定将备选成员集合更新为复制组的新的复制组成员集合。
其中,更新复制组成员版本号表示对复制组当前的复制组成员版本号加一。备选成员集合的信息体现了备选成员集合包括了哪些成员。
具体的,根据权衡写入机制,复制组成员集合中若有超过一半的成员成功更新复制组成员版本号,则确定复制组成员集合成功更新复制组成员版本号,例如,复制组成员集合包括成员A、成员B和成员C,若成员A和成员B成功更新复制组成员版本号,则确定复制组成员集合成功更新复制组成员版本号;又例如,若仅成员A成功更新复制组成员版本号,则复制组成员集合当前没有成功更新复制组成员版本号。
在确定所述复制组成员集合成功更新所述复制组成员版本号后,将备选成员集合的信息发送至所述主机端,主机端将备选成员集合更新为复制组的新的复制组成员集合,并更新当前存储的复制组成员版本号,以使读节点感知到所述复制组的复制组成员的变化。示例性的,当一个复制组的复制组成员版本号发生变更时,各个复制组成员都会递增这个复制组成员版本号,当有针对该变更前复制组成员版本号的读操作(发送给该变更前复制组成员的复制组成员版本号比复制组成员自身维护的版本号小)时,对应的复制组成员会向相应的读操作发送设备反馈读拒绝响应,以使得该读操作发送设备感知到复制组的复制组成员的变化,进而使得读写的并行一致性。
最后,主机端反馈给客户端复制组成员确认更新响应,确定将备选成员集合更新为复制组的新的复制组成员集合。
通过在主机端更新复制组成员版本号和复制组的新的复制组成员集合,使得当读节点利用旧的复制组成员版本号想要读取旧的复制组成员集合时,可以拒绝本次读取操作,并反馈给读节点新的复制组成员集合和更新后的复制组成员版本号,让读节点感知到所述复制组的复制组成员的变化,保证数据写入\读取的一致性和正确性。
S208、将新的分发数据写入所述备选成员集合中。
本申请实施例提供的技术方案,通过构造复制组成员变更请求,并将复制组成员变更请求发送至变更成员,以使变更成员从同步成员处同步复制组的存量数据;并采用预设的权衡写入机制,同时向复制组成员集合和备选成员集合写入分发数据;如果检测到变更成员完成存量数据的同步,且检测到复制组成功写入响应,则向复制组成员集合中的各成员发送复制组成员版本号更新请求,在确定复制组成员集合成功更新复制组成员版本号后,将备选成员集合的信息发送至所述主机端,并在检测到所述主机端反馈的复制组成员确认更新响应时,确定将备选成员集合更新为复制组的新的复制组成员集合,保证了各待存储数据的可靠性,且复制组成员变更过程中开销小,数据同步速度快。
在上述实施例的基础上,S201中“在向复制组写入分发数据”之前,还包括:
向主机端发送的针对所述复制组的文件写入请求,接收所述主机端反馈的复制组成员版本号、写者版本号以及复制组成员集合;根据所述复制组成员版本号以及写者版本号构造数据写请求发送至所述复制组成员集合中的各个成员;其中,所述复制组成员集合中的成员如果确定本地维护的所述复制组成员版本号以及写者版本号与所述数据写请求中的复制组成员版本号以及写者版本号不匹配,则拒绝分发数据的写入。
通过根据主机端反馈的复制组成员版本号以及写者版本号构造数据写请求,并发送至复制组成员集合中的各个成员,使得各个成员根据该复制组成员版本号以及写者版本号与本地维护的复制组成员版本号以及写者版本号进行匹配,若不匹配则拒绝分发数据的写入,保证了分发数据写入的正确性,避免了重复写入数据以及将分发数据写入错误位置的问题。
在上述实施例的基础上,S208之后,还包括:
在检测到完成向复制组写入分发数据后,向所述主机端反馈完成写入响应;所述主机端用于根据所述完成写入响应更新所述写者版本号,并将更新后的所述写者版本号发送至各个复制组的复制组成员集合。
通过在检测到完成向复制组写入分发数据后,向主机端反馈完成写入响应,主机端用于根据完成写入响应更新写者版本号,并将更新后的写者版本号发送至各个复制组的复制组成员集合,实现了复制组成员集合中写者版本号的更新,保证同一时刻只有一个写者来进行分发数据的写入。
在上述实施例的基础上,所述方法还包括:
如果接收到主机端发送的存量数据同步失败响应,则在向复制组写入分发数据的过程中,放弃变更复制组成员;其中,所述主机端在接收到所述同步成员的拒绝同步响应时,生成所述存量数据同步失败响应。
具体的,若变更成员在确定本地维护的复制组成员版本号以及写者版本号与复制组成员变更请求中的复制组成员版本号以及写者版本号不匹配时,则同步成员生成拒绝同步响应并发送至主机端,主机端根据该拒绝同步响应生成存量数据同步失败响应,并发送至客户端,以控制客户端在向复制组写入分发数据的过程中,放弃变更复制组成员。
通过如果接收到主机端发送的存量数据同步失败响应,则在向复制组写入分发数据的过程中,放弃变更复制组成员,避免了后续不必要的复制组成员的变更操作,提高了客户端的分发数据写入效率
实施例三
图3为本申请实施例三提供的一种分发模式下复制组成员的变更装置30的结构示意图,可执行本申请任一实施例中所提供的一种分发模式下复制组成员的变更方法,具备执行方法相应的功能模块和有益效果。如图3所示,该装置可以包括:
变更成员确定模块31,用于在向复制组写入分发数据时,如果检测到与所述复制组对应的复制组成员集合中的目标成员不满足可用条件,则确定新的变更成员;
存量数据同步模块32,用于从所述复制组成员集合的其他成员中选择同步成员,并控制所述变更成员从所述同步成员处同步所述复制组的存量数据;
分发数据写入模块33,用于同时向所述复制组成员集合和备选成员集合写入分发数据,所述备选成员集合包括所述复制组成员集合的其他成员和变更成员;
复制组成员集合更新模块34,用于如果检测到所述变更成员完成存量数据的同步,且所述分发数据已成功写入至所述备选成员集合,则将所述备选成员集合更新为所述复制组的新的复制组成员集合,并将新的分发数据写入所述备选成员集合中。
在上述实施例的基础上,所述变更成员确定模块31,具体用于:
向主机端发送新复制组成员的申请请求,并接收所述主机端针对所述申请请求反馈的复制组成员的标识信息;
根据所述复制组成员的标识信息,确定所述新的变更成员;
其中,所述主机端在根据所述申请请求成功创建新复制组成员后,反馈创建的新复制组成员的标识信息。
在上述实施例的基础上,所述存量数据同步模块32,具体用于:
构造复制组成员变更请求,所述复制组成员变更请求中包括:复制组身份标识、复制组成员版本号、存量数据版本号、写者版本号以及同步成员的身份标识;
将所述复制组成员变更请求发送至所述变更成员,以使变更成员从同步成员处同步复制组的存量数据;
其中,所述变更成员在确定本地维护的复制组成员版本号以及写者版本号与所述复制组成员变更请求中的复制组成员版本号以及写者版本号相匹配时,根据所述复制组成员变更请求中的复制组身份标识、存量数据版本号和同步成员的身份标识,从同步成员处同步复制组的存量数据。
在上述实施例的基础上,所述分发数据写入模块33,具体用于:
采用预设的权衡写入机制,同时向复制组成员集合和备选成员集合写入分发数据,备选成员集合包括复制组成员集合的其他成员和变更成员。
在上述实施例的基础上,所述装置还包括复制组成功写入响应生成模块,具体用于:
实时统计复制组成员集合中发送成功写入响应的第一成员集合,以及备选成员集合中发送成功写入响应的第二成员集合;
所述第一成员集合与所述第二成员集合均满足与所述权衡写入机制对应的成员条件时,生成与所述分发数据匹配的复制组成功写入响应;
所述复制组成员集合更新模块34,具体用于:
如果检测到所述复制组成功写入响应,则确定分发数据已成功写入至备选成员集合。
在上述实施例的基础上,所述装置还包括数据写请求发送模块,具体用于:
向主机端发送的针对所述复制组的文件写入请求,接收所述主机端反馈的复制组成员版本号、写者版本号以及复制组成员集合;
根据所述复制组成员版本号以及写者版本号构造数据写请求发送至所述复制组成员集合中的各个成员;
其中,所述复制组成员集合中的成员如果确定本地维护的所述复制组成员版本号以及写者版本号与所述数据写请求中的复制组成员版本号以及写者版本号不匹配,则拒绝分发数据的写入。
在上述实施例的基础上,所述复制组成员集合更新模块34,具体用于:
向复制组成员集合中的各成员发送复制组成员版本号更新请求;
在确定所述复制组成员集合成功更新所述复制组成员版本号后,将所述备选成员集合的信息发送至所述主机端;
其中,所述主机端用于将所述备选成员集合更新为复制组的新的复制组成员集合,并更新当前存储的复制组成员版本号,以使读节点感知到所述复制组的复制组成员的变化;
在检测到所述主机端反馈的复制组成员确认更新响应时,确定将备选成员集合更新为复制组的新的复制组成员集合。
在上述实施例的基础上,所述装置还包括写者版本号更新模块,具体用于:
在检测到完成向复制组写入分发数据后,向所述主机端反馈完成写入响应;
所述主机端用于根据所述完成写入响应更新所述写者版本号,并将更新后的所述写者版本号发送至各个复制组的复制组成员集合。
在上述实施例的基础上,所述装置还包括目标成员检测模块,具体用于:
如果检测到所述目标成员重新满足可用条件,则仅向复制组成员集合写入所述分发数据。
在上述实施例的基础上,所述装置还包括第一失败响应接收模块,具体用于:
如果接收所述主机端针对所述申请请求反馈的新复制组成员建立失败响应,则在向复制组写入分发数据的过程中,放弃变更复制组成员。
在上述实施例的基础上,所述装置还包括第二失败响应接收模块,具体用于:
如果接收到主机端发送的存量数据同步失败响应,则在向复制组写入分发数据的过程中,放弃变更复制组成员;
其中,所述主机端在接收到所述同步成员的拒绝同步响应时,生成所述存量数据同步失败响应。
本申请实施例所提供的一种分发模式下复制组成员的变更装置30,可执行本申请任一实施例所提供的一种分发模式下复制组成员的变更方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请任一实施例所提供的一种分发模式下复制组成员的变更方法。
根据本申请的实施例,本申请还提供了一种设备和一种可读存储介质。
如图4所示,是根据本申请实施例的分发模式下复制组成员的变更方法的设备的框图。设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图4所示,该设备包括:一个或多个处理器401、存储器402,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图4中以一个处理器401为例。
存储器402即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的分发模式下复制组成员的变更方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的分发模式下复制组成员的变更方法。
存储器402作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的分发模式下复制组成员的变更方法对应的程序指令/模块(例如,附图3所示的变更成员确定模块31、存量数据同步模块32、分发数据写入模块33和复制组成员集合更新模块34)。处理器401通过运行存储在存储器402中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的分发模式下复制组成员的变更方法。
存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据分发模式下复制组成员的变更的设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至分发模式下复制组成员的变更的设备。上述网络的实例包括但不限于互联网、企业内部网、区块链网络、局域网、移动通信网及其组合。
分发模式下复制组成员的变更方法的设备还可以包括:输入装置403和输出装置404。处理器401、存储器402、输入装置403和输出装置404可以通过总线或者其他方式连接,图4中以通过总线连接为例。
输入装置403可接收输入的数字或字符信息,以及产生与分发模式下复制组成员的变更的设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置404可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本申请实施例的技术方案,通过在向复制组写入分发数据时,若检测到复制组成员集合中的目标成员不满足可用条件,则确定新的变更成员,并控制变更成员从同步成员处同步复制组的存量数据;同时向复制组成员集合和备选成员集合写入分发数据,当变更成员完成存量数据的同步,且分发数据已成功写入至备选成员集合,则将备选成员集合更新为复制组的新的复制组成员集合,保证了各待存储数据的可靠性,且复制组成员变更过程中开销小,数据同步速度快。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (13)

1.一种分发模式下复制组成员的变更方法,其特征在于,包括:
在向复制组写入分发数据时,如果检测到与所述复制组对应的复制组成员集合中的目标成员不满足可用条件,则确定新的变更成员;
从所述复制组成员集合的其他成员中选择同步成员,并控制所述变更成员从所述同步成员处同步所述复制组的存量数据;其中,其他成员指的是复制组成员集合中除去目标成员外的成员;同步成员表示为变更成员提供用于同步存量数据的成员;
同时向所述复制组成员集合和备选成员集合写入分发数据,所述备选成员集合包括所述复制组成员集合的其他成员和变更成员;
如果检测到所述变更成员完成存量数据的同步,且所述分发数据已成功写入至所述备选成员集合,则将所述备选成员集合更新为所述复制组的新的复制组成员集合,并将新的分发数据写入所述备选成员集合中;
其中,控制变更成员从同步成员处同步复制组的存量数据,包括:
构造复制组成员变更请求,所述复制组成员变更请求中包括:复制组身份标识、复制组成员版本号、存量数据版本号、写者版本号以及同步成员的身份标识;其中,同步成员的身份标识即为变更成员提供同步数据的同步成员的身份标识;
将所述复制组成员变更请求发送至所述变更成员,以使变更成员从同步成员处同步复制组的存量数据;
其中,所述变更成员在确定本地维护的复制组成员版本号以及写者版本号与所述复制组成员变更请求中的复制组成员版本号以及写者版本号相匹配时,根据所述复制组成员变更请求中的复制组身份标识、存量数据版本号和同步成员的身份标识,从同步成员处同步复制组的存量数据。
2.根据权利要求1所述的方法,其特征在于,确定新的变更成员,包括:
向主机端发送新复制组成员的申请请求,并接收所述主机端针对所述申请请求反馈的复制组成员的标识信息;
根据所述复制组成员的标识信息,确定所述新的变更成员;
其中,所述主机端在根据所述申请请求成功创建新复制组成员后,反馈创建的新复制组成员的标识信息。
3.根据权利要求1所述的方法,其特征在于,同时向复制组成员集合和备选成员集合写入分发数据,备选成员集合包括复制组成员集合的其他成员和变更成员,包括:
采用预设的权衡写入机制,同时向复制组成员集合和备选成员集合写入分发数据,备选成员集合包括复制组成员集合的其他成员和变更成员。
4.根据权利要求3所述的方法,其特征在于,在采用预设的权衡写入机制,同时向复制组成员集合和备选成员集合写入分发数据,备选成员集合包括复制组成员集合的其他成员和变更成员之后,还包括:
实时统计复制组成员集合中发送成功写入响应的第一成员集合,以及备选成员集合中发送成功写入响应的第二成员集合;
所述第一成员集合与所述第二成员集合均满足与所述权衡写入机制对应的成员条件时,生成与所述分发数据匹配的复制组成功写入响应;
检测到分发数据已成功写入至备选成员集合,包括:
如果检测到所述复制组成功写入响应,则确定分发数据已成功写入至备选成员集合。
5.根据权利要求1-4任一项所述的方法,其特征在于,在向复制组写入分发数据之前,还包括:
向主机端发送的针对所述复制组的文件写入请求,接收所述主机端反馈的复制组成员版本号、写者版本号以及复制组成员集合;
根据所述复制组成员版本号以及写者版本号构造数据写请求发送至所述复制组成员集合中的各个成员;
其中,所述复制组成员集合中的成员如果确定本地维护的所述复制组成员版本号以及写者版本号与所述数据写请求中的复制组成员版本号以及写者版本号不匹配,则拒绝分发数据的写入。
6.根据权利要求5所述的方法,其特征在于,将备选成员集合更新为复制组的新的复制组成员集合,包括:
向复制组成员集合中的各成员发送复制组成员版本号更新请求;
在确定所述复制组成员集合成功更新所述复制组成员版本号后,将所述备选成员集合的信息发送至所述主机端;
其中,所述主机端用于将所述备选成员集合更新为复制组的新的复制组成员集合,并更新当前存储的复制组成员版本号,以使读节点感知到所述复制组的复制组成员的变化;
在检测到所述主机端反馈的复制组成员确认更新响应时,确定将备选成员集合更新为复制组的新的复制组成员集合。
7.根据权利要求5所述的方法,其特征在于,在并将新的分发数据写入备选成员集合中之后,还包括:
在检测到完成向复制组写入分发数据后,向所述主机端反馈完成写入响应;
所述主机端用于根据所述完成写入响应更新所述写者版本号,并将更新后的所述写者版本号发送至各个复制组的复制组成员集合。
8.根据权利要求1-4任一项所述的方法,其特征在于,在检测到变更成员完成存量数据的同步之前,还包括:
如果检测到所述目标成员重新满足可用条件,则仅向复制组成员集合写入所述分发数据。
9.根据权利要求2所述的方法,其特征在于,还包括:
如果接收所述主机端针对所述申请请求反馈的新复制组成员建立失败响应,则在向复制组写入分发数据的过程中,放弃变更复制组成员。
10.根据权利要求1所述的方法,其特征在于,还包括:
如果接收到主机端发送的存量数据同步失败响应,则在向复制组写入分发数据的过程中,放弃变更复制组成员;
其中,所述主机端在接收到所述同步成员的拒绝同步响应时,生成所述存量数据同步失败响应。
11.一种分发模式下复制组成员的变更装置,其特征在于,包括:
变更成员确定模块,用于在向复制组写入分发数据时,如果检测到与所述复制组对应的复制组成员集合中的目标成员不满足可用条件,则确定新的变更成员;
存量数据同步模块,用于从所述复制组成员集合的其他成员中选择同步成员,并控制所述变更成员从所述同步成员处同步所述复制组的存量数据;其中,所述其他成员指的是复制组成员集合中除去目标成员外的成员;所述同步成员表示为变更成员提供用于同步存量数据的成员;
分发数据写入模块,用于同时向所述复制组成员集合和备选成员集合写入分发数据,所述备选成员集合包括所述复制组成员集合的其他成员和变更成员;
复制组成员集合更新模块,用于如果检测到所述变更成员完成存量数据的同步,且所述分发数据已成功写入至所述备选成员集合,则将所述备选成员集合更新为所述复制组的新的复制组成员集合,并将新的分发数据写入所述备选成员集合中;
其中,所述存量数据同步模块,具体用于:
构造复制组成员变更请求,所述复制组成员变更请求中包括:复制组身份标识、复制组成员版本号、存量数据版本号、写者版本号以及同步成员的身份标识;其中,所述同步成员的身份标识即为变更成员提供同步数据的同步成员的身份标识;
将所述复制组成员变更请求发送至所述变更成员,以使变更成员从同步成员处同步复制组的存量数据;
其中,所述变更成员在确定本地维护的复制组成员版本号以及写者版本号与所述复制组成员变更请求中的复制组成员版本号以及写者版本号相匹配时,根据所述复制组成员变更请求中的复制组身份标识、存量数据版本号和同步成员的身份标识,从同步成员处同步复制组的存量数据。
12.一种设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-10中任一项所述的分发模式下复制组成员的变更方法。
13.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-10中任一项所述的分发模式下复制组成员的变更方法。
CN202010037934.8A 2020-01-14 2020-01-14 分发模式下复制组成员的变更方法、装置、设备和介质 Active CN111273859B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010037934.8A CN111273859B (zh) 2020-01-14 2020-01-14 分发模式下复制组成员的变更方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010037934.8A CN111273859B (zh) 2020-01-14 2020-01-14 分发模式下复制组成员的变更方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN111273859A CN111273859A (zh) 2020-06-12
CN111273859B true CN111273859B (zh) 2023-09-15

Family

ID=70998709

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010037934.8A Active CN111273859B (zh) 2020-01-14 2020-01-14 分发模式下复制组成员的变更方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN111273859B (zh)

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1983001521A1 (en) * 1981-10-14 1983-04-28 Disbrow, John, R. A page modification method in a printer subsystem of the partial page buffer composing type
JP2000339183A (ja) * 1999-05-25 2000-12-08 Nec Corp ワークエリアのデータセット管理方式
CN1893370A (zh) * 2005-06-29 2007-01-10 国际商业机器公司 用于服务器群集恢复和维护的方法和系统
US9003086B1 (en) * 2012-10-27 2015-04-07 Twitter, Inc. Dynamic distribution of replicated data
US9021296B1 (en) * 2013-10-18 2015-04-28 Hitachi Data Systems Engineering UK Limited Independent data integrity and redundancy recovery in a storage system
US9069827B1 (en) * 2012-01-17 2015-06-30 Amazon Technologies, Inc. System and method for adjusting membership of a data replication group
US9449065B1 (en) * 2010-12-28 2016-09-20 Amazon Technologies, Inc. Data replication framework
US9507843B1 (en) * 2013-09-20 2016-11-29 Amazon Technologies, Inc. Efficient replication of distributed storage changes for read-only nodes of a distributed database
CN106375404A (zh) * 2016-08-30 2017-02-01 华为技术有限公司 数据存储控制方法、数据存储方法、数据获取方法及装置
US9720620B1 (en) * 2014-03-11 2017-08-01 Amazon Technologies, Inc. Efficient data volume replication for block-based storage
CN108415793A (zh) * 2017-02-09 2018-08-17 慧与发展有限责任合伙企业 经由日志操作修改复制组的成员资格
US10067839B1 (en) * 2015-05-08 2018-09-04 Sprint Communications Company L.P. Content object backup between user equipment
CN109271450A (zh) * 2018-10-10 2019-01-25 北京百度网讯科技有限公司 数据库同步方法、装置、服务器和存储介质
US10216949B1 (en) * 2013-09-20 2019-02-26 Amazon Technologies, Inc. Dynamic quorum membership changes
WO2019212768A1 (en) * 2018-04-30 2019-11-07 Amazon Technologies, Inc. Distributed replica for block storage systems

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4307982B2 (ja) * 2003-12-19 2009-08-05 株式会社日立製作所 データ多重化制御方法
JP4563725B2 (ja) * 2004-05-17 2010-10-13 株式会社日立製作所 計算機システム
US7631016B2 (en) * 2005-05-04 2009-12-08 Oracle International Corporation Providing the latest version of a data item from an N-replica set
JP6765322B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
CN112988455B (zh) * 2019-12-13 2024-09-06 伊姆西Ip控股有限责任公司 用于数据备份的方法、设备和计算机程序产品

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1983001521A1 (en) * 1981-10-14 1983-04-28 Disbrow, John, R. A page modification method in a printer subsystem of the partial page buffer composing type
JP2000339183A (ja) * 1999-05-25 2000-12-08 Nec Corp ワークエリアのデータセット管理方式
CN1893370A (zh) * 2005-06-29 2007-01-10 国际商业机器公司 用于服务器群集恢复和维护的方法和系统
US9449065B1 (en) * 2010-12-28 2016-09-20 Amazon Technologies, Inc. Data replication framework
US9069827B1 (en) * 2012-01-17 2015-06-30 Amazon Technologies, Inc. System and method for adjusting membership of a data replication group
US9003086B1 (en) * 2012-10-27 2015-04-07 Twitter, Inc. Dynamic distribution of replicated data
US9507843B1 (en) * 2013-09-20 2016-11-29 Amazon Technologies, Inc. Efficient replication of distributed storage changes for read-only nodes of a distributed database
US10216949B1 (en) * 2013-09-20 2019-02-26 Amazon Technologies, Inc. Dynamic quorum membership changes
US9021296B1 (en) * 2013-10-18 2015-04-28 Hitachi Data Systems Engineering UK Limited Independent data integrity and redundancy recovery in a storage system
US9720620B1 (en) * 2014-03-11 2017-08-01 Amazon Technologies, Inc. Efficient data volume replication for block-based storage
US10067839B1 (en) * 2015-05-08 2018-09-04 Sprint Communications Company L.P. Content object backup between user equipment
CN106375404A (zh) * 2016-08-30 2017-02-01 华为技术有限公司 数据存储控制方法、数据存储方法、数据获取方法及装置
CN108415793A (zh) * 2017-02-09 2018-08-17 慧与发展有限责任合伙企业 经由日志操作修改复制组的成员资格
WO2019212768A1 (en) * 2018-04-30 2019-11-07 Amazon Technologies, Inc. Distributed replica for block storage systems
CN109271450A (zh) * 2018-10-10 2019-01-25 北京百度网讯科技有限公司 数据库同步方法、装置、服务器和存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
jiang,MH et al.Design and performance analysis of distributed fault tolerant storage systems.《general system and control system,VOL L》》.2007,第245-248页. *
P2P持久存储系统可靠性分析与数据维护优先;武藤等;《第十一届保密通信与信息安全现状研讨会论文集》;第39-43页 *
基于主从异步复制技术的容灾实时系统研究与实现;杨朝红, 宫云战, 桑伟前, 刘海燕, 李庆艳;计算机研究与发展(第07期);第206-211页 *
杨朝红,宫云战,桑伟前,刘海燕,李庆艳.基于主从异步复制技术的容灾实时系统研究与实现.计算机研究与发展.(第07期),第1104-1109页. *

Also Published As

Publication number Publication date
CN111273859A (zh) 2020-06-12

Similar Documents

Publication Publication Date Title
US10127123B2 (en) Locality based quorums
US10402115B2 (en) State machine abstraction for log-based consensus protocols
KR101602312B1 (ko) 데이터 송신 방법, 데이터 수신 방법, 및 저장 장치
US8255649B2 (en) Remote copy control method and system in storage cluster environment
US20060161700A1 (en) Redirection of storage access requests
CN111782365B (zh) 定时任务处理方法、装置、设备及存储介质
JP2009157785A (ja) 待機系計算機の追加方法、計算機及び計算機システム
CN106605217B (zh) 用于将应用从一个站点移动到另一站点的方法和系统
US12093712B2 (en) Method and apparatus for handling memory failure, electronic device and storage medium
US10884886B2 (en) Copy-on-read process in disaster recovery
CN112334888B (zh) 服务器信息的分布式恢复
US11163799B2 (en) Automatic rollback to target for synchronous replication
CN111352706A (zh) 一种数据访问方法、装置、设备及存储介质
US10671482B2 (en) Providing consistency in a distributed data store
CN111273859B (zh) 分发模式下复制组成员的变更方法、装置、设备和介质
US10079883B2 (en) Primary device selection at operating system initialization
US8005787B2 (en) Data replication method
AU2016218367A1 (en) Externalized execution of input method editor
US11238010B2 (en) Sand timer algorithm for tracking in-flight data storage requests for data replication
US9424261B2 (en) Techniques to take clean database file snapshot in an online database
CN115398415A (zh) 分布式数据系统中用于写入器预选的方法、装置及系统
US7587628B2 (en) System, method and computer program product for copying data
CN113392152B (zh) 用于更新信息的方法、电子设备和计算机程序产品
US20180088837A1 (en) Secondary read cache optimization in data replication environments
CN114327293B (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