CN114979180B - 数据同步方法、系统及设备 - Google Patents
数据同步方法、系统及设备 Download PDFInfo
- Publication number
- CN114979180B CN114979180B CN202210571496.2A CN202210571496A CN114979180B CN 114979180 B CN114979180 B CN 114979180B CN 202210571496 A CN202210571496 A CN 202210571496A CN 114979180 B CN114979180 B CN 114979180B
- Authority
- CN
- China
- Prior art keywords
- computing node
- data
- synchronous
- nodes
- node
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 124
- 230000001360 synchronised effect Effects 0.000 claims abstract description 348
- 238000013500 data storage Methods 0.000 claims abstract description 110
- 230000004044 response Effects 0.000 claims abstract description 74
- 238000004590 computer program Methods 0.000 claims description 16
- 230000008439 repair process Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 33
- 230000009286 beneficial effect Effects 0.000 description 24
- 230000008569 process Effects 0.000 description 20
- 230000008859 change Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据同步方法、系统及设备,该方法包括:客户端在分布式系统中确定M个同步计算节点,M为大于或等于2的整数;客户端向M个同步计算节点发送第一数据,M个同步计算节点用于存储第一数据以及至少一个同步计算节点还用于向分布式系统中的异步计算节点发送第一数据,异步计算节点为分布式系统中除M个同步计算节点之外的其它节点;客户端获取同步计算节点的响应消息,响应消息用于指示同步计算节点完成存储第一数据;当客户端接收到的响应消息的数量与M的比值大于或等于第一阈值时,客户端确定第一数据存储成功。
Description
技术领域
本申请涉及数据存储技术领域,尤其涉及一种数据同步方法、系统及设备。
背景技术
分布式系统可以将一份数据的多个副本存储于多个计算节点,以解决单计算节点故障导致的数据丢失问题。在集群规模较大的情况下,分布式系统中出现慢节点的概率较大。例如,慢节点可以为在一定时间阈值范围内数据存储未成功的计算节点。
相关技术中,分布式系统的多个计算节点之间依次传递并存储数据。即客户端可以向一个计算节点发起数据存储请求。该计算节点接收并存储数据后,将接收到的数据发送给其余计算节点中的任意一个计算节点。以此类推,直至所有计算节点完成数据存储。所有计算节点均完成数据存储后,客户端认为数据存储成功,并进行下一作业。
然而,上述数据存储过程中,数据存储成功依赖于所有计算节点成功完成数据存储。当分布式系统中存在慢节点,该慢节点会降低整个分布式系统写数据的性能。因此,当分布式系统中存在慢节点时,如何提高分布式系统写数据的性能成为一个亟待解决的问题。
发明内容
本申请提供了一种数据同步方法、系统及设备,用于在存在慢节点的分布式系统中提高分布式系统写数据的性能。
第一方面,本申请实施例提供一种数据同步方法,包括:
客户端在所述分布式系统中确定M个同步计算节点,所述M为大于或等于2的整数;
所述客户端向M个所述同步计算节点发送第一数据,M个所述同步计算节点用于存储所述第一数据以及至少一个同步计算节点还用于向所述分布式系统中的异步计算节点发送所述第一数据,所述异步计算节点为所述分布式系统中除所述M个同步计算节点之外的其它节点;
所述客户端获取所述同步计算节点的响应消息,所述响应消息用于指示所述同步计算节点完成存储所述第一数据;
当所述客户端接收到的所述响应消息的数量与所述M的比值大于或等于第一阈值时,所述客户端确定所述第一数据存储成功。
本实施例提供的数据同步方法可以包括以下有益效果:客户端可以在分布式系统中确定M个同步计算节点,并向M个同步计算节点并发同步数据,保证了M个同步计算节点中数据的一致性。M个同步计算节点完成数据存储后,可以向客户端返回数据存储成功的响应消息。当客户端接收到的响应消息的数量与M的比值大于或者等于第一阈值时,客户端认为数据存储成功,不再等待未返回响应消息的节点,缩短了客户端的等待时间,提高了数据存储效率。M个同步计算节点完成数据存储后,还可以向异步计算节点发送第一数据,保证了分布式系统中所有的计算节点中数据的一致性。因此,通过上述方法,可以提高分布式系统写数据的性能。
在一种可能的实施方式中,当所述客户端接收到的所述响应消息的数量与所述M的比值大于或等于第一阈值时,所述客户端确定所述第一数据存储成功,包括:
当在所述客户端向M个所述同步计算节点发送所述第一数据之后的第一时间段内,所述比值大于或等于所述第一阈值时,所述客户端确定所述第一数据存储成功;或者,
当在所述客户端向M个所述同步计算节点发送所述第一数据之后的第一时间段内,所述比值小于所述第一阈值时,所述客户端等待,直至所述响应消息的数量大于或等于所述第一阈值时,确定所述第一数据存储成功。
本实施例提供的数据同步方法可以包括以下有益效果:客户端可以获取返回响应消息的同步计算节点的数量,并在返回响应消息的同步计算节点的数量与M的比值达到第一阈值时,认为数据存储成功,避免了同步计算节点中存在慢节点时客户端一直等待慢节存储数据的情况,缩短了客户端的等待时间。
在一种可能的实施方式中,所述客户端在所述分布式系统中确定M个同步计算节点,包括:
所述客户端根据所述分布式系统的多个计算节点的类型,确定所述M个同步计算节点,所述M个同步计算节点为非慢节点类型。
本实施例提供的数据同步方法可以包括以下有益效果:客户端可以选择非慢节点类型的节点作为同步计算节点,避免了同步计算节点为慢节点,使得分布式系统写数据的性能较高。
在一种可能的实施方式中,所述客户端根据所述分布式系统的多个计算节点的类型,确定所述M个同步计算节点,包括:
所述客户端根据所述多个计算节点的类型,在所述分布式系统中确定多个待选节点,所述待选节点的节点类型为非慢节点类型;
所述客户端获取所述多个待选节点的位置和所述多个待选节点的运行信息;
所述客户端根据所述多个待选节点的位置和所述多个待选节点的运行信息,在所述多个待选节点中确定所述M个同步计算节点。
本实施例提供的数据同步方法可以包括以下有益效果:客户端可以获取非慢节点类型的节点的位置和运行信息,以确定M个同步计算节点。
在一种可能的实施方式中,所述客户端根据所述多个待选节点的位置和所述多个待选节点的运行信息,在所述多个待选节点中确定所述M个同步计算节点,包括:
所述客户端根据所述多个待选节点的位置,将所述多个待选节点中距离所述客户端最近的计算节点确定为主计算节点;
所述客户端根据所述多个待选节点的运行信息,在所述多个待选节点中确定至少一个第一从计算节点;其中,所述M个同步计算节点包括所述主计算节点和所述至少一个第一从计算节点。
本实施例提供的数据同步方法可以包括以下有益效果:客户端可以选择距离自身距离较近,且负载较少的节点作为同步计算节点,使得同步计算节点可以更快的接收来自客户端的数据。
第二方面,本申请实施例提供一种数据同步方法,应用于分布式系统,所述分布式系统包括至少两个同步计算节点和异步计算节点,包括:
所述同步计算节点接收客户端发送的第一数据,并存储所述第一数据;
若所述同步计算节点在预设时段内未成功存储所述第一数据,所述同步计算节点向元数据服务器发送慢盘指示,所述慢盘指示用于指示所述元数据服务器更新所述同步计算节点的节点类型,所述预设时段为在接收到所述第一数据之后第一时长内的时段。
若所述同步计算节点在所述预设时段内成功存储所述第一数据,所述同步计算节点向所述异步计算节点发送所述第一数据。
本实施例提供的数据同步方法可以包括以下有益效果:同步计算节点在预设时段内未成功存储第一数据时,可以主动请求元数据服务器更改自身的节点类型,以便于元数据服务器对分布式系统中的慢节点进行标记。
在一种可能的实施方式中,所述同步计算节点存储所述第一数据,包括:
所述同步计算节点将所述第一数据存储至缓存;
所述同步计算节点通过同步写数据线程,将所述缓存中的第一数据写入所述同步计算节点中的磁盘。
本实施例提供的数据同步方法可以包括以下有益效果:多个同步计算节点接收第一数据后,可以将第一数据存储至自身磁盘,使得分布式系统的可靠性较高。
在一种可能的实施方式中,若所述同步计算节点在预设时段内未成功存储所述第一数据,所述方法还包括:
所述同步计算节点停止所述同步写数据线程;
所述同步计算节点通过异步写数据线程,将所述缓存中的第一数据写入所述同步计算节点中的磁盘。
本实施例提供的数据同步方法可以包括以下有益效果:若同步计算节点在预设时段内未成功存储第一数据,该同步计算节点可以继续通过异步写数据线程存储第一数据,避免同步计算节点在偶发性数据存储缓慢时放弃存储第一数据。
在一种可能的实施方式中,若所述同步计算节点在所述预设时段内成功存储所述第一数据,所述同步计算节点向所述异步计算节点发送所述第一数据。
本实施例提供的数据同步方法可以包括以下有益效果:同步计算节点完成数据存储后,还可以向异步计算节点发送第一数据,保证了分布式系统中所有计算节点中数据的一致性。
在一种可能的实施方式中,所述同步计算节点向所述异步计算节点发送所述第一数据,包括:
在所述同步计算节点为主计算节点时,所述同步计算节点向所述异步计算节点发送所述第一数据;
在所述同步计算节点为第一从计算节点时,所述同步计算节点获取其它同步计算节点的数据存储结果,并根据所述数据存储结果,向所述异步计算节点发送所述第一数据;所述数据存储结果用于指示所述其它同步计算节点是否以同步方式对所述第一数据存储成功。
本实施例提供的数据同步方法可以包括以下有益效果:完成数据存储的同步计算节点,还可以向异步计算节点发送第一数据,以保证分布式系统中所有的计算节点中数据的一致性。
在一种可能的实施方式中,所述同步计算节点根据所述数据存储结果,向所述异步计算节点发送所述第一数据,包括:
在所述数据存储结果指示所述主计算节点未以同步方式对所述第一数据存储成功,则所述第一从计算节点向所述异步计算节点发送所述第一数据。
本实施例提供的数据同步方法可以包括以下有益效果:同步计算节点可以获取其他同步计算节点的数据存储结果,以便于选择数据存储成功的节点向异步节点发送第一数据。
第三方面,本申请实施例提供一种数据同步方法,包括:
元数据服务器接收同步计算节点发送的慢盘指示;
所述元数据服务器获取接收到所述同步计算节点发送的慢盘指示的指示数量;
在所述指示数量大于或等于预设数量时,所述元数据服务器将所述同步计算节点的节点类型更新为慢节点类型。
本实施例提供的数据同步方法可以包括以下有益效果:元数据服务器可以根据同步计算节点发送的慢盘指示的指示数量判断该同步计算节点是否为慢节点,以便于对分布式系统中的慢节点进行标记。
在一种可能的实施方式中,所述指示数量为连续的多次数据存储任务所对应的慢盘指示的数量;或者,
所述指示数量为所述元数据服务器在预设时长内接收到所述同步计算节点发送的慢盘指示的数量。
本实施例提供的数据同步方法可以包括以下有益效果:元数据服务器可以根据同步计算节点连续发送的慢盘指示的数量判断该同步计算节点是否为慢节点,避免同步计算节点偶发性存储数据缓慢时,将该节点误判为慢节点;或者,元数据服务器可以根据固定时段内同步计算节点发送的慢盘指示的总数量判断该同步计算节点是否为慢节点,进一步降低将非慢节点误判为慢节点的概率。
在一种可能的实施方式中,所述方法还包括:
所述元数据服务器将所述同步计算节点的状态设置为修复状态。
本实施例提供的数据同步方法可以包括以下有益效果:元数据服务器可以将慢节点的状态设置为修复状态,以便于对慢节点进行修复。第四方面,本申请实施例提供一种计算设备,包括处理器和存储器;
所述存储器用于,存储计算机程序;
所述处理器用于,执行所述存储器中存储的计算机程序,以使得所述计算设备执行上述第一方面任一项所述的方法,或者,执行上述第二方面任一项所述的方法。
本实施例提供的数据同步方法可以包括以下有益效果:客户端可以在分布式系统中确定M个同步计算节点,并向M个同步计算节点并发同步数据,保证了M个同步计算节点中数据的一致性。客户端还可以在接收到M个同步计算节点中大多数节点返回的响应消息后认为数据存储成功,缩短了客户端的等待时间,提高了数据存储效率,提高了分布式系统写数据的性能。同步计算节点接收第一数据后,可以通过同步写数据线程将第一数据存储至自身磁盘,保证了多个同步计算节点中数据的一致性;同步计算节点在存储第一数据成功后,还可以向异步计算节点发送第一数据,保证了分布式系统中所有的计算节点中数据的一致性;同步计算节点在预设时段内未成功存储第一数据时,还可以主动请求元数据服务器更改自身节点类型,以便于元数据服务器对分布式系统中的慢节点进行标记,以提高分布式系统的可靠性。
第五方面,本申请实施例提供一种服务器,包括处理器和存储器;
所述存储器用于,存储计算机程序;
所述处理器用于,执行所述存储器中存储的计算机程序,以使得所述服务器执行上述第三方面任一项所述的方法。
本实施例提供的数据同步方法可以包括以下有益效果:元数据服务器可以根据同步计算节点发送的慢盘指示的指示数量判断该同步计算节点是否为慢节点,并在确定某同步计算节点为慢节点时,对该同步计算节点极性标记,以便于对慢节点进行修复。
第六方面,本申请实施例提供一种数据同步系统,包括客户端、至少两个同步计算节点和元数据服务器,其中,
所述客户端用于,在所述分布式系统中确定M个同步计算节点,所述M为大于或等于2的整数;
所述客户端还用于,向M个所述同步计算节点发送第一数据,M个所述同步计算节点用于存储所述第一数据以及至少一个同步计算节点还用于向所述分布式系统中的异步计算节点发送所述第一数据,所述异步计算节点为所述分布式系统中除所述M个同步计算节点之外的其它节点;
所述同步计算节点用于,存储所述第一数据;
所述同步计算节点还用于,在所述同步计算节点在预设时段内未成功存储所述第一数据时,向元数据服务器发送慢盘指示,所述慢盘指示用于指示所述元数据服务器更新所述同步计算节点的节点类型,所述预设时段为在接收到所述第一数据之后第一时长内的时段;
所述元数据服务器用于,获取接收到所述同步计算节点发送的慢盘指示的指示数量;
所述元数据服务器还用于,在所述指示数量大于或等于预设数量时,将所述同步计算节点的节点类型更新为慢节点类型;
所述客户端还用于,获取部分所述同步计算节点的响应消息,所述响应消息用于指示所述同步计算节点存储完成所述第一数据;
所述客户端还用于,当所述客户端接收到的所述响应消息的数量与所述M的比值大于或等于第一阈值时,确定所述第一数据存储成功。本实施例提供的数据同步方法可以包括以下有益效果:客户端可以在分布式系统中确定M个同步计算节点,并向M个同步计算节点并发同步数据,保证了M个同步计算节点中数据的一致性。M个同步计算节点完成数据存储后,可以向客户端返回数据存储成功的响应消息。当客户端接收到的响应消息的数量与M的比值大于或者等于第一阈值时,客户端认为数据存储成功,不再等待未返回响应消息的节点,缩短了客户端的等待时间,提高了数据存储效率。M个同步计算节点完成数据存储后,还可以向异步计算节点发送第一数据,保证了分布式系统中所有的计算节点中数据的一致性。因此,通过上述方法,可以提高分布式系统写数据的性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据同步系统的架构示意图;
图2为一种数据同步方法示意图;
图3为本申请实施例提供的一种数据同步方法的流程示意图;
图4为本申请实施例提供的一种慢节点确定方法的流程示意图;
图5为本申请实施例提供的一种主计算节点向异步计算节点同步数据的过程示意图;
图6为本申请实施例提供的另一种主计算节点向异步计算节点同步数据的过程示意图;
图7为本申请实施例提供的又一种主计算节点向异步计算节点同步数据的过程示意图;
图8为本申请实施例提供的一种第一从计算节点向异步计算节点同步数据的过程示意图;
图9为本申请提供的一种计算设备的硬件结构示意图;
图10为本申请提供的服务器的硬件结构示意图;
图11为本申请提供的一种数据同步系统的结构示意图;
图12为本申请实施例提供的一种数据同步装置的结构示意图;
图13为本申请实施例提供的另一种数据同步装置的结构示意图;
图14为本申请实施例提供的另一种数据同步装置的结构示意图;
图15为本申请实施例提供的又一种数据同步装置的结构示意图;
图16为本申请实施例提供的又一种数据同步装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
为了便于理解,首先结合图1对本申请实施例涉及的数据同步系统架构进行说明。
图1为本申请实施例提供的一种数据同步系统的架构示意图。如图1所示,该数据同步系统包括:客户端101和分布式系统102。分布式系统102中包括主计算节点和多个从计算节点。每个计算节点中设置有多个磁盘(disk),磁盘用于存储数据。客户端101可以请求在计算节点中进行数据读写,例如,客户端101可以为网络系统、数据读写工具等。为了保证计算节点对数据存储的可靠性,可以将一份数据存储至分布式系统102中的多个计算节点中,这样,在分布式系统102中的部分计算节点故障时,依然可以保证数据的安全性。
下面,结合图2,示例性的给出一种分布式系统存储数据的方法。
如图2所示,图2为一种数据同步方法示意图。请参见图2,以包括3个计算节点的分布式系统为例。客户端向主计算节点发送数据。主计算节点接收数据后,对数据进行存储,并向从计算节点1发送数据。同理,从计算节点1和从计算节点2依次接收数据并存储数据。在从计算节点2完成数据存储后,从计算节点2向主计算节点发送数据存储成功的响应消息。主计算节点接收数据存储成功的响应消息后,向客户端反馈数据存储成功的响应消息。客户端接收到主计算节点的响应消息后认为分布式系统对数据存储成功。
通过上述方法存储数据时,在所有计算节点成功存储数据后,客户端才可以接收到数据存储成功的响应消息。当分布式系统中存在慢节点时,该慢节点会影响整个分布式系统写数据的速度,甚至导致分布式系统写数据失败,也就是说慢节点会降低整个分布式系统写数据的性能。
为解决上述技术问题,本申请实施例提供了一种数据同步方法。客户端向分布式系统中的主计算节点和部分从计算节点并发同步数据。主计算节点和该部分从计算节点称为同步计算节点。分布式系统中的其他计算节点称为异步计算节点。任意一个同步计算节点存储数据成功后,向客户端发送数据存储成功的响应消息。客户端接收到同步计算节点中的大多数节点返回的响应消息后,认为数据存储成功。向客户端返回响应消息的同步计算节点还可以向异步计算节点发送数据。通过上述方法存储数据时,当同步计算节点中存在慢节点,客户端可以在收到多个非慢节点返回的响应消息后认为数据存储成功;当异步计算节点中存在慢节点,慢节点并不会延长客户端的等待时间,进而提高了整个分布式系统写数据的性能。
下面以具体的实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图3为本申请实施例提供的一种数据同步方法的流程示意图。请参见图3,该方法可以包括:
S301、客户端在分布式系统中确定M个同步计算节点,M为大于或等于2的整数。
同步计算节点的数量小于分布式系统中的总节点数量。例如,当分布式系统中节点数量为N时,M小于N。可选的,且M≥2。
同步计算节点为分布式系统中从客户端获取数据的至少两个计算节点。
可选的,同步计算节点包括主计算节点和至少一个从计算节点。
客户端可以通过如下方式在分布式系统中确定M个同步计算节点:客户端根据多个计算节点的类型,在分布式系统中确定多个待选节点,待选节点的节点类型为非慢节点类型;客户端获取多个待选节点的位置和多个待选节点的运行信息;客户端根据多个待选节点的位置和多个待选节点的运行信息,在多个待选节点中确定M个同步计算节点。
节点的类型包括慢节点类型和非慢节点类型。例如,慢节点类型的节点可以为在规定时长内存储数据未成功的节点;非慢节点类型的节点可以为在规定时长内存储数据成功的节点。
待选节点为分布式系统中的非慢节点类型的节点。应该理解的是,待选节点的数量大于或者等于M,且待选节点的数量小于或者等于分布式系统中节点的总数量。
待选节点的位置可以为待选节点的互联网协议(Internet Protocol,IP)地址。客户端可以根据待选节点的位置判断该节点与客户端之间距离的远近。
待选节点的运行信息可以为待选节点的负载情况。
需要说明的是,分布式系统中所有节点的节点信息可以存储在元数据服务器中。例如,节点信息可以包括节点的类型信息、位置信息及运行信息等。也就是说,客户端可以从元数据服务器中获取分布式系统中多个计算节点的节点类型,以确定待选节点;客户端还可以从元数据服务器中获取待选节点的位置及运行信息,以确定M个同步计算节点。
具体实施过程中,客户端根据多个待选节点的位置,将多个待选节点中距离客户端最近的计算节点确定为主计算节点;客户端根据多个待选节点的运行信息,在多个待选节点中确定至少一个第一从计算节点。
第一从计算节点为M个同步计算节点中除主计算节点以外的至少一个节点。
客户端可以部署在分布式系统中任意一个节点上,客户端也可以部署在分布式系统以外的节点上。当客户端的部署位置不同时,客户端确定主计算节点的过程也不同,可以包括如下两种情况:
情况1、客户端部署在分布式系统中任意一个节点上。
在该种情况下,当客户端所在的节点为待选节点时,客户端可以将自身所在的计算节点确定为主计算节点。客户端还可以根据运行信息,在其余待选节点中选择负载较少的至少一个节点作为第一从计算节点。
情况2、客户端部署在分布式系统以外的节点。
在该种情况下,客户端可以从待选节点中选择距离自身距离最近的计算节点作为主计算节点,再从其余的待选节点中选择负载较少的至少一个节点作为第一从计算节点。
S302、客户端向M个同步计算节点发送第一数据。
第一数据可以为待在分布式系统中存储的数据。
客户端可以通过如下两种方式向M个同步计算节点发送第一数据:
方式一:客户端以消息的形式向M个同步计算节点发送第一数据。
客户端可以向M个同步计算节点发送数据存储消息。数据存储消息中包括第一数据。数据存储消息中还可以包括指示信息,指示信息用于指示对第一数据进行存储。
方式二:客户端以接口调用的形式向M个同步计算节点发送第一数据。
M个同步计算节点中设置有数据读取接口、数据存储接口等多种类型的接口。例如,客户端可以调用数据存储接口,并通过数据存储接口向M个同步计算节点发送第一数据,以指示M个同步计算节点对第一数据进行存储。
S303、M个同步计算节点存储第一数据。
M个同步计算节点中任意一个同步计算节点接收和存储第一数据的过程相同,且存储过程相互独立。下面,以M个同步计算节点中任意一个同步计算节点存储第一数据的过程为例进行说明。
任意一个同步计算节点可以通过如下方式存储第一数据:同步计算节点将第一数据存储至缓存;同步计算节点通过同步写数据线程,将缓存中的第一数据写入同步计算节点中的磁盘。
同步写数据线程为执行同步写数据任务的线程。同步写数据任务为同步计算节点接收第一数据后,以同步的方式将第一数据写入自身磁盘中的任务。对应于客户端向同步计算节点发送第一数据的两种方式,同步计算节点接收第一数据的方式也不同,可以包括如下两种情况:
情况1、同步计算节点通过数据存储消息接收第一数据。
在该种情况下,任意一个同步计算节点接收到数据存储消息后,可以对数据存储消息中的内容进行解析,并根据解析结果将第一数据存储至缓存;任意一个同步计算节点还可以通过同步写数据线程将缓存中的第一数据写入自身的磁盘中。
情况2、同步计算节点通过数据存储接口接收第一数据。
在该种情况下,任意一个同步计算节点从数据存储接口接收第一数据后,将第一数据存储至缓存,并通过同步写数据线程将缓存中的第一数据写入自身的磁盘中。
针对任意一个同步计算节点,若该同步计算节点在预设时段内未成功存储第一数据,该同步计算节点停止同步写数据线程,并通过异步写数据线程,将缓存中的第一数据写入同步计算节点中的磁盘。
预设时段为同步计算节点接收第一数据之后预设时长内的时段。
异步写数据线程为执行异步写数据任务的线程。当同步计算节点在预设时段内未成功存储第一数据,该同步计算节点可以停止当前同步写数据线程,发起异步写数据线程,并通过异步写数据线程继续存储第一数据。
针对任意一个同步计算节点,该同步计算节点未停止当前同步写数据线程时,不能执行其他同步写数据任务。在该同步计算节点通过异步写数据线程存储第一数据时,该同步计算节点可以继续执行其他同步写数据任务。即该同步计算节点可以继续接收客户端发送的其他数据。
S304、同步计算节点向客户端发送响应消息。
响应消息用于指示同步计算节点存储完成第一数据。
针对任意一个同步计算节点,该节点对第一数据存储完成后,可以向客户端发送响应消息。
S305、当客户端接收到的响应消息的数量与M的比值大于或等于第一阈值时,客户端确定第一数据存储成功。
实际实施过程中,当在客户端向M个同步计算节点发送第一数据之后的第一时间段内,比值大于或等于第一阈值时,客户端确定第一数据存储成功;或者,当在客户端向M个同步计算节点发送第一数据之后的第一时间段内,比值小于第一阈值时,客户端等待,直至响应消息的数量大于或等于第一阈值时,确定第一数据存储成功。
本申请实施例中,客户端向M个同步计算节点发送第一数据之后可以开始计时,并开始统计响应消息的数量。
第一阈值为根据分布式系统的可靠性需求设置的阈值。例如,当第一阈值为60%,则M个同步计算节点中向客户端返回响应消息的节点的数量与M的比值大于或者等于60%时,客户端认为第一数据存储成功。
第一时间段为客户端向M个同步计算节点发送第一数据之后预设时长内的时间段。例如,假设预设时长为T0秒,客户端从T1时刻开始计时,则客户端在T1+T0时间段内判断比值是否大于或等于第一阈值。
S306、M个同步计算节点向分布式系统中的异步计算节点发送第一数据。
异步计算节点为分布式系统中除同步计算节点以外的节点。
本申请实施例中,M个同步计算节点中完成数据存储的同步计算节点,可以继续向异步计算节点发送第一数据,以保证分布式系统中所有节点的数据一致性。
需要说明的是,本申请对S305和S306的执行顺序不作具体限定。可以先执行S305,再执行S306;或者,也可以先执行S306,再执行S305。
本实施例提供的数据同步方法中,客户端可以在分布式系统中确定M个同步计算节点,并向M个同步计算节点并发同步数据,保证了M个同步计算节点中数据的一致性。M个同步计算节点完成数据存储后,可以向客户端返回数据存储成功的响应消息。当客户端接收到的响应消息的数量与M的比值大于或者等于第一阈值时,客户端认为数据存储成功,不再等待未返回响应消息的节点,缩短了客户端的等待时间,提高了数据存储效率。M个同步计算节点完成数据存储后,还可以向异步计算节点发送第一数据,保证了分布式系统中所有的计算节点中数据的一致性。因此,通过上述方法,可以提高分布式系统写数据的性能。
在图3实施例的基础上,可以根据同步计算节点存储第一数据所需的时长确定该同步计算节点是否为慢节点。下面,结合图4对慢节点的确定方法进行详细说明。
图4为本申请实施例提供的一种慢节点确定方法的流程示意图。请参见图4,该方法可以包括:
S401、同步计算节点接收客户端发送的第一数据,并存储第一数据。
针对M个同步计算节点中任意一个节点,判断其是否为慢节点的方法相同。本实施例中,以判断任意一个同步计算节点是否为慢节点为例,对慢节点确定方法进行详细说明。
S401的具体实施方式可以参见S303,在此不再赘述。
此外,针对M个同步计算节点中的任意一个节点,该节点接收第一数据后,开始计时。
S402、同步计算节点判断自身是否在预设时段内成功存储第一数据。
若是,执行S403。
若否,执行S404。
预设时段为同步计算节点接收第一数据之后预设时长内的时段。例如,假设预设时长为t0秒,任意一个同步计算节点从t1时刻开始计时,则该同步计算节点判断自身是否在t1+t0时刻前成功存储第一数据。
实际实施过程中,可以设置预设时段=2*第一时间段。也就是说,当客户端确认第一数据存储成功后,未完成第一数据存储的同步计算节点还可以继续对第一数据进行存储。
S403、同步计算节点向异步计算节点发送第一数据。
若同步计算节点在预设时段内成功存储第一数据,则该同步计算节点为非慢节点,该同步计算节点可以向异步节点发送第一数据。
实际实施过程中,在同步计算节点为主计算节点时,同步计算节点向异步计算节点发送第一数据;在同步计算节点为第一从计算节点时,同步计算节点获取其它同步计算节点的数据存储结果,并根据数据存储结果,向异步计算节点发送第一数据。数据存储结果用于指示其它同步计算节点是否以同步方式对第一数据存储成功。在数据存储结果指示主计算节点未以同步方式对第一数据存储成功,则第一从计算节点向异步计算节点发送第一数据。
同步计算节点之间可以相互获取对方的数据存储结果;或者,针对任意一个同步计算节点,该节点可以从元数据服务器获取其他同步计算节点的数据存储结果。
具体而言,当数据存储结果指示主计算节点成功存储第一数据时,由主计算节点向异步节点发送第一数据;当数据存储结果指示主计算节点未成功存储第一数据时,由第一从计算节点向异步计算节点发送第一数据。
S404、同步计算节点向元数据服务器发送慢盘指示。
慢盘指示用于指示元数据服务器更新同步计算节点的节点类型。
S405、元数据服务器获取接收到同步计算节点发送的慢盘指示的指示数量。
针对任意一个同步计算节点,该同步计算节点发送的慢盘指示的指示数量至少可以通过如下2种方式进行统计:
方式1、统计连续接收的慢盘指示的指示数量。
指示数量用于指示同步计算节点连续向元数据服务器发送慢盘指示的数量。
方式2、统计固定时段内接收的慢盘指示的数量。
指示数量用于指示同步计算节点在固定时段内连续/不连续向元数据服务器发送的慢盘指示数量的总数。
S406、元数据服务器判断指示数量是否大于或等于预设数量。
若是,执行S407。
若否,执行S408。
预设数量为元数据服务器接收任意一个同步计算节点发送的慢盘指示的指示数量的最大阈值。
S407、元数据服务器确定该同步计算节点为慢节点。
同步计算节点为慢节点时,元数据服务器将同步计算节点的节点类型更新为慢节点类型。
元数据服务器统计指示数量的方式不同时,确定同步计算节点为慢节点的方法也不同,可以包括如下两种方法:
方法一、当元数据服务器统计连续接收的慢盘指示的指示数量时,指示数量大于或等于预设数量时,元数据服务器将同步计算节点的节点类型更新为慢节点类型。
示例性的,假设预设数量为5。若某同步计算节点连续5次向元数据服务器发送慢盘指示,则元数据服务器将该同步计算节点的节点类型更新为慢节点类型。
方法二、当元数据服务器统计固定时段内接收的慢盘指示的数量时,固定时段内指示数量大于或等于预设数量时,元数据服务器将同步计算节点的节点类型更新为慢节点类型。
示例性的,假设预设数量为5,固定时段为8h。若某同步计算节点在8h内,连续/不连续向元数据服务器发送慢盘指示7次,则元数据服务器将该同步计算节点的节点类型更新为慢节点类型。
可选的,指示数量大于预设数量时,元数据服务器可以将同步计算节点的状态设置为修复状态。
S408、元数据服务器确定该同步计算节点为非慢节点。
同步计算节点为非慢节点时,元数据服务器不更改同步计算节点的类型。
元数据服务器统计指示数量的方式不同时,确定同步计算节点为非慢节点的方法也不同,可以包括如下两种方法:
方法一、当元数据服务器统计连续接收的慢盘指示的指示数量时,指示数量小于预设数量时,元数据服务器不更改同步计算节点的类型。
示例性的,假设预设数量为5。若某同步计算节点连续4次向元数据服务器发送慢盘指示,则元数据服务器不更改同步计算节点的类型。
方法二、当元数据服务器统计固定时段内接收的慢盘指示的数量时,固定时段内指示数量小于预设数量时,元数据服务器不更改同步计算节点的类型。
示例性的,假设预设数量为5,固定时段为8h。若某同步计算节点在8h内,连续/不连续向元数据服务器发送慢盘指示3次,则元数据服务器不更改同步计算节点的类型。
本实施例提供的慢节点确定方法中,元数据服务器可以根据某同步计算节点连续发出的慢盘指示的指示数量判断该同步计算节点是否为慢节点;或者,元数据服务器可以根据某同步计算节点在固定时段内发出的全部慢盘指示的指示数量判断该同步计算节点是否为慢节点。通过上述方法确定慢节点,可以避免同步计算节点偶发性存储数据缓慢时,将该节点误判为慢节点。当确定出慢节点,上述方法还可以及时更改慢节点的类型,以便于客户端确定待选节点时将慢节点排除掉。
在上述任一实施例的基础上,同步计算节点向异步计算节点发送第一数据至少可以包括如下2种情况:
情况1:在数据存储结果指示主计算节点以同步方式对第一数据存储成功时,主计算节点向异步计算节点发送第一数据。
情况2:在数据存储结果指示主计算节点未以同步方式对第一数据存储成功时,第一从计算节点向异步计算节点发送第一数据。
针对上述情况1,主计算节点至少可以通过如下3种方式向异步计算节点发送第一数据。
方式1、主计算节点向一个异步计算节点发送第一数据,异步计算节点之间再串行发送第一数据。
方式2、主计算节点分别向每个异步计算节点发送第一数据。
方式3、主计算节点向一部分异步计算节点发送第一数据,再由该一部分异步计算节点向其它的异步计算节点发送第一数据。
下面,结合图5-图7,对上述情况1进行说明。
图5为本申请实施例提供的一种主计算节点向异步计算节点同步数据的过程示意图。请参见图5,包括客户端和分布式系统,分布式系统中包括主计算节点、第一从计算节点1、第一从计算节点2、异步计算节点1、异步计算节点2和异步计算节点3。
当客户端需要向分布式系统存储数据时,客户端向主计算节点、第一从计算节点1和第一从计算节点2发送数据。
在主计算节点接收到数据之后,主计算节点存储数据,并在对数据存储成功之后,主计算节点向客户端发送响应消息。
在第一从计算节点1和在第一从计算节点2接收到数据之后,第一从计算节点1和在第一从计算节点2对数据进行存储。若第一从计算节点1和在第一从计算节点2对数据存储成功,第一从计算节点1和在第一从计算节点2向客户端发送响应消息;若第一从计算节点1和在第一从计算节点2未对数据存储成功,第一从计算节点1和在第一从计算节点2不向客户端发送响应消息。
主计算节点完成数据存储之后,主计算节点向异步计算节点1发送数据,异步计算节点1接收到数据之后,异步计算节点1存储数据。异步计算节点1还向异步计算节点2发送数据,异步计算节点2接收到数据之后,异步计算节点2存储数据。异步计算节点2还向异步计算节点3发送数据,异步计算节点3接收到数据之后,异步计算节点3存储数据,并在对数据存储成功之后,向主计算节点发送第二响应消息。
在该种实现方式中,主计算节点只需向一个异步计算节点发送第一数据,使得主计算节点的开销较小。
图6为本申请实施例提供的另一种主计算节点向异步计算节点同步数据的过程示意图。请参见图6,包括客户端和分布式系统,分布式系统中包括主计算节点、第一从计算节点1、第一从计算节点2、异步计算节点1、异步计算节点2和异步计算节点3。
当客户端需要向分布式系统存储数据时,客户端向主计算节点、第一从计算节点1和第一从计算节点2发送数据。
在主计算节点接收到数据之后,主计算节点存储数据,并在对数据存储成功之后,主计算节点向客户端发送响应消息。
在第一从计算节点1和在第一从计算节点2接收到数据之后,第一从计算节点1和在第一从计算节点2对数据进行存储。若第一从计算节点1和在第一从计算节点2对数据存储成功,第一从计算节点1和在第一从计算节点2向客户端发送响应消息;若第一从计算节点1和在第一从计算节点2未对数据存储成功,第一从计算节点1和在第一从计算节点2不向客户端发送响应消息。
主计算节点完成数据存储之后,主计算节点分别向异步计算节点1、异步计算节点2和异步计算节点3发送数据。在异步计算节点1接收并存储数据后,异步计算节点1向主计算节点发送第二响应消息。在异步计算节点2接收并存储数据后,异步计算节点2向主计算节点发送第二响应消息。在异步计算节点3接收并存储数据后,异步计算节点3向主计算节点发送第二响应消息。
在该种实现方式中,主计算节点分别向各个异步计算节点发送第一数据,使得各个异步计算节点可以快速接收到第一数据,实现了第一数据的快速同步。
图7为本申请实施例提供的又一种主计算节点向异步计算节点同步数据的过程示意图。请参见图7,包括客户端和分布式系统,分布式系统中包括主计算节点、第一从计算节点1、第一从计算节点2、异步计算节点1、异步计算节点2和异步计算节点3。
当客户端需要向分布式系统存储数据时,客户端向主计算节点、第一从计算节点1和第一从计算节点2发送数据。
在主计算节点接收到数据之后,主计算节点存储数据,并在对数据存储成功之后,主计算节点向客户端发送响应消息。
在第一从计算节点1和在第一从计算节点2接收到数据之后,第一从计算节点1和在第一从计算节点2对数据进行存储。若第一从计算节点1和在第一从计算节点2对数据存储成功,第一从计算节点1和在第一从计算节点2向客户端发送响应消息;若第一从计算节点1和在第一从计算节点2未对数据存储成功,第一从计算节点1和在第一从计算节点2不向客户端发送响应消息。
主计算节点完成数据存储之后,主计算节点分别向异步计算节点1和异步计算节点2发送数据。异步计算节点1接收到数据之后,异步计算节点1存储数据。异步计算节点2接收到数据之后,异步计算节点2存储数据。异步计算节点2可以向异步计算节点3发送数据;或者,异步计算节点1可以向异步计算节点3发送数据。异步计算节点3接收到数据之后,异步计算节点3存储数据,并在对数据存储成功之后,向主计算节点发送第二响应消息。
在该种实现方式中,不但使得主计算节点的开销较小,还实现了第一数据的快速同步。
针对上述情况2,第一从计算节点至少可以通过如下2种方式向异步计算节点发送第一数据。
方式1、一个第一从计算节点向异步计算节点发送第一数据。
方式2、多个第一从计算节点向异步计算节点发送第一数据。
针对上述方式1,当一个第一从计算节点向异步计算节点发送第一数据,方式1的数据同步方法与图5-图7所示的数据同步方法类似,在此不再赘述。
下面,结合图8,对上述方式2进行说明。
图8为本申请实施例提供的一种第一从计算节点向异步计算节点同步数据的过程示意图。请参见图8,包括客户端和分布式系统,分布式系统中包括主计算节点、第一从计算节点1、第一从计算节点2、异步计算节点1、异步计算节点2和异步计算节点3。
当客户端需要向分布式系统存储数据时,客户端向主计算节点、第一从计算节点1及第一从计算节点2发送数据。
在主计算节点接收到数据之后,未以同步的方式对第一数据存储成功。
在第一从计算节点1接收到数据之后,第一从计算节点1存储数据,并在对数据存储成功之后,第一从计算节点1向客户端发送响应消息;在第一从计算节点2接收到数据之后,第一从计算节点2存储数据,并在对数据存储成功之后,第一从计算节点2向客户端发送响应消息。
第一从计算节点1完成数据存储后,第一从计算节点1分别向异步计算节点2和异步计算节点3发送数据。在异步计算节点2接收并存储数据后,异步计算节点2向第一从计算节点1发送第二响应消息。在异步计算节点3接收并存储数据后,异步计算节点3向第一从计算节点1发送第二响应消息。
第一从计算节点2完成数据存储后,第一从计算节点2向异步计算节点1发送数据。在异步计算节点1接收并存储数据后,异步计算节点1向第一从计算节点2发送第二响应消息。
在该种实现方式中,在减小同步计算节点开销的基础上,还实现了第一数据的快速同步。
图9为本申请提供的一种计算设备的硬件结构示意图。请参见图9,该计算设备90可以包括:处理器91和存储器92,其中,处理器91和存储器92可以通信;示例性的,处理器91和存储器92通过通信总线93通信,所述存储器92用于存储计算机程序,以使所述计算设备90执行上述任意方法实施例所示的数据同步方法。
可选的,计算设备90还可以包括通信接口,通信接口可以包括发送器和/或接收器。
可选的,上述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
图10为本申请提供的服务器的硬件结构示意图。请参见图10,该服务器100可以包括:处理器101和存储器102,其中,处理器101和存储器102可以通信;示例性的,处理器101和存储器102通过通信总线103通信,所述存储器102用于存储计算机程序,所述处理器101用于调用存储器中的计算机程序指令执行上述任意方法实施例所示的数据同步方法。
可选的,服务器100还可以包括通信接口,通信接口可以包括发送器和/或接收器。
可选的,上述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
图11为本申请提供一种数据同步系统的结构示意图。请参见图11所述数据同步系统110包括客户端111、至少两个同步计算节点112和元数据服务器113,其中,
所述客户端111用于,在所述分布式系统中确定M个同步计算节点,所述M为大于或等于2的整数;
所述客户端111还用于,向M个所述同步计算节点发送第一数据,M个所述同步计算节点用于存储所述第一数据以及至少一个同步计算节点还用于向所述分布式系统中的异步计算节点发送所述第一数据,所述异步计算节点为所述分布式系统中除所述M个同步计算节点之外的其它节点;
所述同步计算节点112用于,存储所述第一数据;
所述同步计算节点112还用于,在所述同步计算节点在预设时段内未成功存储所述第一数据时,向元数据服务器发送慢盘指示,所述慢盘指示用于指示所述元数据服务器更新所述同步计算节点的节点类型,所述预设时段为在接收到所述第一数据之后第一时长内的时段;
所述元数据服务器113用于,获取接收到所述同步计算节点发送的慢盘指示的指示数量;
所述元数据服务器113还用于,在所述指示数量大于或等于预设数量时,将所述同步计算节点的节点类型更新为慢节点类型;
所述客户端111还用于,获取部分所述同步计算节点的响应消息,所述响应消息用于指示所述同步计算节点存储完成所述第一数据;
所述客户端111还用于,当所述客户端接收到的所述响应消息的数量与所述M的比值大于或等于第一阈值时,确定所述第一数据存储成功。
本申请实施例提供的数据同步系统可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
图12为本申请实施例提供的一种数据同步装置的结构示意图。请参见图12,该数据同步装置120应用于客户端,该数据同步装置120包括:第一确定模块121、发送模块122、第一获取模块123和第二确定模块124,其中,
所述第一确定模块121用于,在所述分布式系统中确定M个同步计算节点,所述M为大于或等于2的整数;
所述发送模块122用于,向M个所述同步计算节点发送第一数据,M个所述同步计算节点用于存储所述第一数据以及至少一个同步计算节点还用于向所述分布式系统中的异步计算节点发送所述第一数据,所述异步计算节点为所述分布式系统中除所述M个同步计算节点之外的其它节点;
所述第一获取模块123用于,获取所述同步计算节点的响应消息,所述响应消息用于指示所述同步计算节点存储完成所述第一数据;
所述第二确定模块124用于,当所述客户端接收到的所述响应消息的数量与所述M的比值大于或等于第一阈值时,确定所述第一数据存储成功。
本申请实施例提供的数据同步装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述第二确定模块124具体用于:
当在所述客户端向M个所述同步计算节点发送所述第一数据之后的第一时间段内,所述比值大于或等于所述第一阈值时,所述第二确定模块124确定所述第一数据存储成功;或者,
当在所述客户端向M个所述同步计算节点发送所述第一数据之后的第一时间段内,所述比值小于所述第一阈值时,所述第二确定模块124等待,直至所述响应消息的数量大于或等于所述第一阈值时,确定所述第一数据存储成功。
在一种可能的实施方式中,所述第一确定模块121具体用于:
根据所述分布式系统的多个计算节点的类型,确定所述M个同步计算节点,所述M个同步计算节点为非慢节点类型。
在一种可能的实施方式中,所述第一确定模块121具体用于:
根据所述多个计算节点的类型,在所述分布式系统中确定多个待选节点,所述待选节点的节点类型为非慢节点类型;
获取所述多个待选节点的位置和所述多个待选节点的运行信息;
根据所述多个待选节点的位置和所述多个待选节点的运行信息,在所述多个待选节点中确定所述M个同步计算节点。
在一种可能的实施方式中,所述第一确定模块121具体用于:
根据所述多个待选节点的位置,将所述多个待选节点中距离所述客户端最近的计算节点确定为主计算节点;
根据所述多个待选节点的运行信息,在所述多个待选节点中确定至少一个第一从计算节点;其中,所述M个同步计算节点包括所述主计算节点和所述至少一个第一从计算节点。
本申请实施例提供的数据同步装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
图13为本申请实施例提供的另一种数据同步装置的结构示意图。请参见图13,该数据同步装置130应用于分布式系统,所述分布式系统包括至少两个同步计算节点和异步计算节点,该数据同步装置130包括:接收模块131、存储模块132和发送模块133,其中,
所述接收模块131用于,接收客户端发送的第一数据;
所述存储模块132用于,存储所述第一数据;
若所述同步计算节点在预设时段内未成功存储所述第一数据,所述发送模块133用于,向元数据服务器发送慢盘指示,所述慢盘指示用于指示所述元数据服务器更新所述同步计算节点的节点类型,所述预设时段为在接收到所述第一数据之后第一时长内的时段;
若所述同步计算节点在所述预设时段内成功存储所述第一数据,所述发送模块133用于,向所述异步计算节点发送所述第一数据。
本申请实施例提供的数据同步装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述存储模块132具体用于:
将所述第一数据存储至缓存;
通过同步写数据线程,将所述缓存中的第一数据写入所述同步计算节点中的磁盘。
图14为本申请实施例提供的另一种数据同步装置的结构示意图。在图13的基础上,请参见图14,该数据同步装置130还包括停止模块134和写模块135,若所述同步计算节点在预设时段内未成功存储所述第一数据,
所述停止模块134用于,停止所述同步写数据线程;
所述写模块135用于,通过异步写数据线程,将所述缓存中的第一数据写入所述同步计算节点中的磁盘。
在一种可能的实施方式中,所述发送模块143具体用于:
在所述同步计算节点为主计算节点时,向所述异步计算节点发送所述第一数据;
在所述同步计算节点为第一从计算节点时,获取其它同步计算节点的数据存储结果,并根据所述数据存储结果,向所述异步计算节点发送所述第一数据;所述数据存储结果用于指示所述其它同步计算节点是否以同步方式对所述第一数据存储成功。
在一种可能的实施方式中,所述发送模块143具体用于:
在所述数据存储结果指示所述主计算节点未以同步方式对所述第一数据存储成功,向所述异步计算节点发送所述第一数据。
本申请实施例提供的数据同步装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
图15为本申请实施例提供的又一种数据同步装置的结构示意图。请参见图15,该数据同步装置150应用于元数据服务器,所述元数据服务器包括至少两个同步计算节点和异步计算节点,该数据同步装置150包括:接收模块151、获取模块152和更新模块153,其中,
所述接收模块151用于,接收同步计算节点发送的慢盘指示;
所述获取模块152用于,获取接收到所述同步计算节点发送的慢盘指示的指示数量;
所述更新模块153用于,在所述指示数量大于或等于预设数量时,将所述同步计算节点的节点类型更新为慢节点类型。
本申请实施例提供的数据同步装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述指示数量为连续的多次数据存储任务所对应的慢盘指示的数量;或者,
所述指示数量为所述元数据服务器在预设时长内接收到所述同步计算节点发送的慢盘指示的数量。
图16为本申请实施例提供的又一种数据同步装置的结构示意图。在图15的基础上,请参见图16,该数据同步装置150还包括设置模块154,其中,
所述设置模块154用于,将所述同步计算节点的状态设置为修复状态。
本申请实施例提供的数据同步装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储器中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储器(存储介质)包括:只读存储器(英文:read-only memory,缩写:ROM)、RAM、快闪存储器、硬盘、固态硬盘、磁带(英文:magnetic tape)、软盘(英文:floppydisk)、光盘(英文:optical disc)及其任意组合。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程终端设备的处理单元以产生一个机器,使得通过计算机或其他可编程终端设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程终端设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
在本申请中,术语“包括”及其变形可以指非限制性的包括;术语“或”及其变形可以指“和/或”。本申请中术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。本申请中,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
Claims (14)
1.一种数据同步方法,其特征在于,包括:
客户端在分布式系统中确定M个同步计算节点,所述M为大于或等于2的整数;其中,所述同步计算节点包括主计算节点和至少一个从计算节点;
所述客户端向M个所述同步计算节点发送第一数据,M个所述同步计算节点用于存储所述第一数据以及至少一个同步计算节点还用于向所述分布式系统中的异步计算节点发送所述第一数据,所述异步计算节点为所述分布式系统中除所述M个同步计算节点之外的其它节点;其中,至少一个同步计算节点还用于向所述分布式系统中的异步计算节点发送所述第一数据包括:当主计算节点成功存储第一数据时,由主计算节点向异步节点发送第一数据;当主计算节点未成功存储第一数据时,由第一从计算节点向异步计算节点发送第一数据;
所述客户端获取部分所述同步计算节点的响应消息,所述响应消息用于指示所述同步计算节点存储完成所述第一数据;
当所述客户端接收到的所述响应消息的数量与所述M的比值大于或等于第一阈值时,所述客户端确定所述第一数据存储成功。
2.根据权利要求1所述的方法,其特征在于,当所述客户端接收到的所述响应消息的数量与所述M的比值大于或等于第一阈值时,所述客户端确定所述第一数据存储成功,包括:
当在所述客户端向M个所述同步计算节点发送所述第一数据之后的第一时间段内,所述比值大于或等于所述第一阈值时,所述客户端确定所述第一数据存储成功;或者,
当在所述客户端向M个所述同步计算节点发送所述第一数据之后的第一时间段内,所述比值小于所述第一阈值时,所述客户端等待,直至所述响应消息的数量大于或等于所述第一阈值时,确定所述第一数据存储成功。
3.根据权利要求1或2所述的方法,其特征在于,所述客户端在所述分布式系统中确定M个同步计算节点,包括:
所述客户端根据所述分布式系统的多个计算节点的类型,确定所述M个同步计算节点,所述M个同步计算节点为非慢节点类型。
4.根据权利要求3所述的方法,其特征在于,所述客户端根据所述分布式系统的多个计算节点的类型,确定所述M个同步计算节点,包括:
所述客户端根据所述多个计算节点的类型,在所述分布式系统中确定多个待选节点,所述待选节点的节点类型为非慢节点类型;
所述客户端获取所述多个待选节点的位置和所述多个待选节点的运行信息;
所述客户端根据所述多个待选节点的位置和所述多个待选节点的运行信息,在所述多个待选节点中确定所述M个同步计算节点。
5.根据权利要求4所述的方法,其特征在于,所述客户端根据所述多个待选节点的位置和所述多个待选节点的运行信息,在所述多个待选节点中确定所述M个同步计算节点,包括:
所述客户端根据所述多个待选节点的位置,将所述多个待选节点中距离所述客户端最近的计算节点确定为主计算节点;
所述客户端根据所述多个待选节点的运行信息,在所述多个待选节点中确定至少一个第一从计算节点;其中,所述M个同步计算节点包括所述主计算节点和所述至少一个第一从计算节点。
6.一种数据同步方法,其特征在于,应用于分布式系统,所述分布式系统包括异步计算节点和至少两个同步计算节点,包括:
所述同步计算节点接收客户端发送的第一数据,并存储所述第一数据;其中,所述同步计算节点包括主计算节点和至少一个从计算节点;至少一个同步计算节点还用于向所述分布式系统中的异步计算节点发送所述第一数据,所述异步计算节点为所述分布式系统中除所述M个同步计算节点之外的其它节点;其中,至少一个同步计算节点还用于向所述分布式系统中的异步计算节点发送所述第一数据包括:当主计算节点成功存储第一数据时,由主计算节点向异步节点发送第一数据;当主计算节点未成功存储第一数据时,由第一从计算节点向异步计算节点发送第一数据;
若所述同步计算节点在预设时段内成功存储所述第一数据,则向客户端发送响应消息,以使所述客户端获取部分所述同步计算节点的响应消息,所述响应消息用于指示所述同步计算节点存储完成所述第一数据;当所述客户端接收到的所述响应消息的数量与所述M的比值大于或等于第一阈值时,所述客户端确定所述第一数据存储成功;
若所述同步计算节点在预设时段内未成功存储所述第一数据,所述同步计算节点向元数据服务器发送慢盘指示,所述慢盘指示用于指示所述元数据服务器更新所述同步计算节点的节点类型,所述预设时段为在接收到所述第一数据之后第一时长内的时段。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述同步计算节点停止同步写数据线程;
所述同步计算节点通过异步写数据线程,将缓存中的第一数据写入所述同步计算节点中的磁盘。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
若所述同步计算节点在所述预设时段内成功存储所述第一数据,所述同步计算节点向所述异步计算节点发送所述第一数据。
9.根据权利要求8所述的方法,其特征在于,所述同步计算节点向所述异步计算节点发送所述第一数据,包括:
在所述同步计算节点为主计算节点时,所述同步计算节点向所述异步计算节点发送所述第一数据;
在所述同步计算节点为第一从计算节点时,所述同步计算节点获取其它同步计算节点的数据存储结果,并根据所述数据存储结果,向所述异步计算节点发送所述第一数据;所述数据存储结果用于指示所述其它同步计算节点是否以同步方式对所述第一数据存储成功。
10.根据权利要求6所述的方法,其特征在于,若所述同步计算节点在预设时段内未成功存储所述第一数据,所述同步计算节点向元数据服务器发送慢盘指示,还包括:
元数据服务器接收同步计算节点发送的慢盘指示;
所述元数据服务器获取接收到所述同步计算节点发送的慢盘指示的指示数量;
在所述指示数量大于或等于预设数量时,所述元数据服务器将所述同步计算节点的节点类型更新为慢节点类型。
11.根据权利要求10所述的方法,其特征在于,
所述指示数量为连续的多次数据存储任务所对应的慢盘指示的数量;或者,
所述指示数量为所述元数据服务器在预设时长内接收到所述同步计算节点发送的慢盘指示的数量。
12.根据权利要求10或11所述的方法,其特征在于,所述方法还包括:
所述元数据服务器将所述同步计算节点的状态设置为修复状态。
13.一种计算设备,其特征在于,包括处理器和存储器;
所述存储器用于,存储计算机程序;
所述处理器用于,执行所述存储器中存储的计算机程序,以使得所述计算设备执行上述权利要求1-5任一项所述的方法,或者,执行上述权利要求6-9任一项所述的方法。
14.一种服务器,其特征在于,包括处理器和存储器;
所述存储器用于,存储计算机程序;
所述处理器用于,执行所述存储器中存储的计算机程序,以使得所述服务器执行上述权利要求10-12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210571496.2A CN114979180B (zh) | 2022-05-24 | 2022-05-24 | 数据同步方法、系统及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210571496.2A CN114979180B (zh) | 2022-05-24 | 2022-05-24 | 数据同步方法、系统及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114979180A CN114979180A (zh) | 2022-08-30 |
CN114979180B true CN114979180B (zh) | 2024-05-17 |
Family
ID=82956624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210571496.2A Active CN114979180B (zh) | 2022-05-24 | 2022-05-24 | 数据同步方法、系统及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114979180B (zh) |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546782A (zh) * | 2011-12-28 | 2012-07-04 | 北京奇虎科技有限公司 | 一种分布式系统及其数据操作方法 |
CN102857554A (zh) * | 2012-07-26 | 2013-01-02 | 福建网龙计算机网络信息技术有限公司 | 基于分布式存储系统进行数据冗余处理方法 |
CN106484311A (zh) * | 2015-08-31 | 2017-03-08 | 华为数字技术(成都)有限公司 | 一种数据处理方法及装置 |
CN106569739A (zh) * | 2016-10-09 | 2017-04-19 | 南京中新赛克科技有限责任公司 | 一种数据写入优化的方法 |
CN106878388A (zh) * | 2017-01-04 | 2017-06-20 | 北京百度网讯科技有限公司 | 对分布式存储系统中慢节点的检测 |
CN107295080A (zh) * | 2017-06-19 | 2017-10-24 | 北京百度网讯科技有限公司 | 应用于分布式服务器集群的数据存储方法和服务器 |
CN107797893A (zh) * | 2016-09-07 | 2018-03-13 | 华为数字技术(成都)有限公司 | 一种计算硬盘处理读写命令的时长的方法及设备 |
CN108183957A (zh) * | 2017-12-29 | 2018-06-19 | 北京奇虎科技有限公司 | 主从同步方法及装置 |
CN110049091A (zh) * | 2019-01-10 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 数据存储方法及装置、电子设备、存储介质 |
CN110365768A (zh) * | 2019-07-15 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 分布式系统的数据同步方法、装置、介质、电子设备 |
CN111258822A (zh) * | 2020-01-15 | 2020-06-09 | 广州虎牙科技有限公司 | 数据处理方法、服务器和计算机可读存储介质 |
CN111343277A (zh) * | 2020-03-04 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 分布式数据存储方法、系统、计算机设备和存储介质 |
CN111984481A (zh) * | 2020-08-14 | 2020-11-24 | 苏州浪潮智能科技有限公司 | 一种基于分布式存储的慢盘检测方法及装置 |
CN113903389A (zh) * | 2021-09-28 | 2022-01-07 | 浙江大华技术股份有限公司 | 一种慢盘检测方法、装置及计算机可读写存储介质 |
CN114328098A (zh) * | 2021-12-23 | 2022-04-12 | 北京百度网讯科技有限公司 | 一种慢节点检测方法、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9712606B2 (en) * | 2014-05-21 | 2017-07-18 | Nasdaq Technology Ab | Efficient and reliable host distribution of totally ordered global state |
US9313270B2 (en) * | 2014-07-29 | 2016-04-12 | Datadirect Networks, Inc. | Adaptive asynchronous data replication in a data storage system |
US11567837B2 (en) * | 2018-08-25 | 2023-01-31 | Panzura, Llc | Journaling data received in a cloud-based distributed computing environment |
-
2022
- 2022-05-24 CN CN202210571496.2A patent/CN114979180B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546782A (zh) * | 2011-12-28 | 2012-07-04 | 北京奇虎科技有限公司 | 一种分布式系统及其数据操作方法 |
CN102857554A (zh) * | 2012-07-26 | 2013-01-02 | 福建网龙计算机网络信息技术有限公司 | 基于分布式存储系统进行数据冗余处理方法 |
CN106484311A (zh) * | 2015-08-31 | 2017-03-08 | 华为数字技术(成都)有限公司 | 一种数据处理方法及装置 |
CN107797893A (zh) * | 2016-09-07 | 2018-03-13 | 华为数字技术(成都)有限公司 | 一种计算硬盘处理读写命令的时长的方法及设备 |
CN106569739A (zh) * | 2016-10-09 | 2017-04-19 | 南京中新赛克科技有限责任公司 | 一种数据写入优化的方法 |
CN106878388A (zh) * | 2017-01-04 | 2017-06-20 | 北京百度网讯科技有限公司 | 对分布式存储系统中慢节点的检测 |
CN107295080A (zh) * | 2017-06-19 | 2017-10-24 | 北京百度网讯科技有限公司 | 应用于分布式服务器集群的数据存储方法和服务器 |
CN108183957A (zh) * | 2017-12-29 | 2018-06-19 | 北京奇虎科技有限公司 | 主从同步方法及装置 |
CN110049091A (zh) * | 2019-01-10 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 数据存储方法及装置、电子设备、存储介质 |
CN110365768A (zh) * | 2019-07-15 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 分布式系统的数据同步方法、装置、介质、电子设备 |
CN111258822A (zh) * | 2020-01-15 | 2020-06-09 | 广州虎牙科技有限公司 | 数据处理方法、服务器和计算机可读存储介质 |
CN111343277A (zh) * | 2020-03-04 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 分布式数据存储方法、系统、计算机设备和存储介质 |
CN111984481A (zh) * | 2020-08-14 | 2020-11-24 | 苏州浪潮智能科技有限公司 | 一种基于分布式存储的慢盘检测方法及装置 |
CN113903389A (zh) * | 2021-09-28 | 2022-01-07 | 浙江大华技术股份有限公司 | 一种慢盘检测方法、装置及计算机可读写存储介质 |
CN114328098A (zh) * | 2021-12-23 | 2022-04-12 | 北京百度网讯科技有限公司 | 一种慢节点检测方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
分布式系统中数据同步机制的研究与实现;崔伟;汪诗林;;计算机工程与设计(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114979180A (zh) | 2022-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104283956B (zh) | 强一致性分布式数据存储方法、装置及系统 | |
EP3623963B1 (en) | Log entry duplication method and device, computer equipment, and storage medium | |
CN107832138B (zh) | 一种扁平化的高可用namenode模型的实现方法 | |
US20230106118A1 (en) | Distributed processing of transactions in a network using timestamps | |
CN110149382A (zh) | 数据同步的方法、系统、主服务器、同步客户端及介质 | |
CN112052230B (zh) | 多机房数据同步方法、计算设备及存储介质 | |
CN113094430B (zh) | 一种数据处理方法、装置、设备以及存储介质 | |
CN107888434B (zh) | 网络设备配置同步方法和装置 | |
US10091288B2 (en) | Ordered execution of tasks | |
CN113452770B (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
JP2010277467A (ja) | 分散データ管理システム、データ管理装置、データ管理方法、およびプログラム | |
CN114979180B (zh) | 数据同步方法、系统及设备 | |
CN113157465A (zh) | 基于指针链表的消息发送方法及装置 | |
CN111092956A (zh) | 资源同步方法、装置、存储介质及设备 | |
CN117312448A (zh) | 一种集群数据同步方法、系统、存储介质及设备 | |
CN112363980A (zh) | 一种分布式系统的数据处理方法及装置 | |
CN109005246B (zh) | 一种数据的同步方法、装置及系统 | |
CN115580667B (zh) | 数据传输方法、装置、设备及存储介质 | |
CN110162511B (zh) | 一种日志传输方法及相关设备 | |
US9509780B2 (en) | Information processing system and control method of information processing system | |
US20230126682A1 (en) | Fault tolerance method and apparatus of network device system, computer device, and storage medium | |
CN111131497B (zh) | 文件传输方法、装置、电子设备及存储介质 | |
CN109274451B (zh) | 一种时间获取方法、装置和设备 | |
CN109241362B (zh) | 区块生成方法、装置、设备及存储介质 | |
CN115567459B (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 |