一种分布式系统中数据处理方法、装置及系统的制作方法

文档序号:9624138阅读:390来源:国知局
一种分布式系统中数据处理方法、装置及系统的制作方法
【技术领域】
[0001]本发明涉及数据存储领域,特别涉及一种分布式系统中数据处理方法、装置及系统。
【背景技术】
[0002]分布式系统是指将计算资源和存储资源分散到不同的节点上,通过网络将各节点联系起来的系统。分布式系统可以通过管理和控制多个节点来完成一项任务,但对外表现为一台独立完整的系统,用户感知不到分布式系统任务在内部的执行细节。
[0003]图1为分布式系统的示意图,其中,客户端用来接收用户需求(如写请求和读请求),计算节点负责分发路由,而存储节点负责单盘管理和实际存储,另外,系统中还包括管理节点,负责对多个计算节点和存储节点进行管理。
[0004]分布式系统采用多副本策略保存数据,即将同一数据保存在多个存储节点上,以避免存储节点故障引起的数据丢失,增强数据存储的可靠性。同时,系统还要保障同一数据的多个副本的一致性,即用多个存储节点存储同一数据时,要保证多个存储节点上存储的数据一致。
[0005]链式复制机制是一种保证多副本一致性的策略,参照图2,存储数据的多个存储节点间存在链式关系,位于链头的存储节点称为头节点(又可称为主节点),链尾的存储节点称为尾节点,计算节点在进行写操作时,首先在头节点中进行数据写入操作,然后在链式结构中头节点后的节点2中进行写操作,依次类推,直至在尾节点中写入数据,计算节点向客户端返回数据写入成功而在读取数据时,计算节点可以只读取尾节点中存储的数据。
[0006]在分布式系统中,每个计算节点均保存有一份由管理节点统一一管理和更新维护的映射表,称为分区视图,分区视图中保存有存储每一个数据的多个存储节点的信息,计算节点具体根据保存的分区视图确定每个数据的存储节点,进而请求对应的存储节点执行对应操作。
[0007]实际情况中,存储数据的存储节点可能会发生变化,管理节点在存储数据的节点变更后会基于变更后的用于存储数据的存储节点生成新分区视图,并将新分区视图发送给各计算节点。如果有计算节点在接收到新分区视图时,有基于原分区视图的任务(如数据更新操作)尚未完成,则其余计算节点需要先等待该计算节点将基于原分区视图的任务进行完毕,才能基于新分区视图进行数据操作。由于接收新分区视图的计算节点不能立即基于新分区视图进行数据操作,将导致任务阻塞,降低分布式系统的数据处理效率。

【发明内容】

[0008]本发明实施例提供一种分布式系统中数据处理方法、装置及系统,用于解决由于计算节点需等待基于原分区视图的任务完成,才能基于新分区视图进行数据处理导致分布式系统的数据处理效率降低的问题。
[0009]第一方面,本发明实施例提供一种分布式系统中数据处理方法,所述分布式系统包括管理节点、第一计算节点、第二计算节点和多个存储节点,所述管理节点、所述第一计算节点、所述第二计算节点和所述多个存储节点间通信,所述方法包括:
[0010]在所述第一计算节点根据第一分区视图使用第一更新数据对所述第一数据进行更新操作时,所述第二计算节点接收第二分区视图;
[0011]所述第二计算节点根据所述第二分区视图使用第二更新数据对所述第一数据进行更新操作;
[0012]其中,所述第一分区视图和所述第二分区视图是由所述管理节点生成的;所述第一分区视图用于指示第一时刻存储所述第一数据的至少两个存储节点;所述第二分区视图用于指示第二时刻存储所述第一数据的至少两个存储节点;其中,所述第一时刻与所述第二时刻不同;所述第一时刻存储所述第一数据的至少两个存储节点与所述第二时刻存储所述第一数据的至少两个存储节点不完全相同。
[0013]结合第一方面,在第一方面的第一种可能的实现方式中,所述第一分区视图指示的存储所述第一数据的至少两个存储节点和所述第二分区视图指示的存储所述第一数据的至少两个存储节点中均包含第一存储节点;
[0014]所述第二计算节点根据所述第二分区视图使用第二更新数据对所述第一数据进行更新操作,包括:
[0015]所述第二计算节点与所述第一计算节点竞争所述第一存储节点的写权限;
[0016]所述第二计算节点在获得所述第一存储节点的写权限后,使用所述第二更新数据对所述第一存储节点中的所述第一数据进行更新操作。
[0017]结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述第一存储节点为所述第一分区视图指示的存储所述第一数据的至少两个存储节点中除主存储节点之外的存储节点,且所述第一存储节点为所述第二分区视图指示的存储所述第一数据的至少两个存储节点中的主存储节点;
[0018]所述第二计算节点与所述第一计算节点竞争所述第一存储节点的写权限,包括:
[0019]所述第二计算节点根据所述第二分区视图确定存储所述第一数据的主存储节点为所述第一存储节点;
[0020]所述第二计算节点向所述第一存储节点发送对所述第一数据进行更新操作的请求;
[0021]其中,所述第一计算节点在对所述第一分区视图指示的存储所述第一数据的主存储节点中的所述第一数据进行更新操作之后,所述第一计算节点向所述第一存储节点发送对所述第一数据进行更新操作的请求;所述第一存储节点将对所述第一数据进行更新操作的写权限授予先接收到的对所述第一数据进行更新操作的请求对应的计算节点。
[0022]结合第一方面,在第一方面的第三种可能的实现方式中,所述第二分区视图指示的存储所述第一数据的至少两个存储节点包括第一存储节点以及第二存储节点;
[0023]所述第二计算节点根据所述第二分区视图使用第二更新数据对所述第一数据进行更新操作,包括:
[0024]所述第二计算节点使用所述第二更新数据对所述第一存储节点存储的所述第一数据进行更新,形成所述第一存储节点中的第一版本的数据;
[0025]所述第二计算节点确定所述第二存储节点保存的所述第一数据对应的版本低于所述第一版本的前一版本;
[0026]所述第二计算节点在所述第二存储节点保存的所述第一数据被更新为所述第一版本的前一版本的数据之后,使用所述第二更新数据对所述第二存储节点中的所述第一版本的前一版本的数据进行更新,形成所述第二存储节点中的第一版本的数据。
[0027]结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述第二计算节点确定所述第二存储节点保存的所述第一数据对应的版本低于所述第一版本的前一版本,包括:
[0028]所述第二计算节点向所述第二存储节点发送数据更新请求,所述数据更新请求用于请求以所述第二更新数据作为第一版本的数据对所述第一数据进行更新;
[0029]所述第二计算节点接收所述第二存储节点返回的报错信息,所述报错信息表明所述第二存储节点中的所述第一数据对应的版本低于所述第一版本的前一版本;
[0030]所述第二计算节点在所述第二存储节点保存的所述第一数据被更新为所述第一版本的前一版本的数据之后,使用所述第二更新数据对所述第二存储节点中的所述第一版本的前一版本的数据进行更新,包括:
[0031]所述第二计算节点在接收所述报错信息后设定时长后,再次向所述第二存储节点发送所述数据更新请求;
[0032]所述第二计算节点接收所述第二存储节点返回的数据更新成功消息,其中,所述第二存储节点在存储的所述第一数据被所述第一计算节点更新为所述第一版本的前一版本的数据之后,响应所述第二计算节点发送的所述数据更新请求,并在所述第一数据被更新为所述第二更新数据后向所述第一计算节点返回所述数据更新成功消息。
[0033]第二方面,本发明实施例提供一种分布式系统中数据处理装置,所述分布式系统包括管理节点、第一计算节点、所述数据处理装置和多个存储节点,所述管理节点、所述第一计算节点、所述数据处理装置和所述多个存储节点间通信,所述数据处理装置包括:
[0034]接收模块,用于在所述第一计算节点根据第一分区视图使用第一更新数据对所述第一数据进行更新操作时,接收第二分区视图;
[0035]更新模块,用于根据所述第二分区视图使用第二更新数据对所述第一数据进行更新操作;
[0036]其中,所述第一分区视图和所述第二分区视图是由所述管理节点生成的;所述第一分区视图用于指示第一时刻存储所述第一数据的至少两个存储节点;所述第二分区视图用于指示第二时刻存储所述第一数据的至少两个存储节点;其中,所述第一时刻与所述第二时刻不同;所述第一时刻存储所述第一数据的至少两个存储节点与所述第二时刻存储所述第一数据的至少两个存储节点不完全相同。
[0037]结合第二方面,在第二方面的第一种可能的实现方式中,所述第一分区视图指示的存储所述第一数据的至少两个存储节点和所述第二分区视图指示的存储所述第一数据的至少两个存储节点中均包含第一存储节点;
[0038]所述更新模块,具体用于:
[0039]与所述第一计算节点竞争所述第一存储节点的写权限;
[0040]在获得所述第一存储节点的写权限后,使用所述第二更新数据对所述第一存储节点中的所述第一数据进行更新操作。
[0041]结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第一存储节点为所述第一分区视图指示的存储所述第一数据的至少两个存储节点中除主存储节点之外的存储节点,且所述第一存储节点为所述第二分区视图指示的存储所述第一数据的至少两个存储节点中的主存储节点;
[0042]所述更新模块具体用于:
[0043]根据所述第二分区视图确定存储所述第一数据的主存储节点为所述第一存储节占.
[0044]向所述第一存储节点发送对所述第一数据进行更新操作的请求;
[0045]其中,所述第一计算节点在对所述第一分区视图指示的存储所述第一数据的主存储节点中的所述第一数据进行更新操作之后,所述第一计算节点向所述第一存储节点发送对所述第一数据进行更新操作的请求;所述第一存储节点将对所述第一数据进行更新操作的写权限授予先接收到的对所述第一数据进行更新操作的请求对应的计算节点。
[0046]结合第二方面,在第二方面的第三种可能的实现方式中,所述第二分区视图指示的存储所述第一数据的至少两个存储节点包括第一存储节点以及第二存储节点;
[0047]所述更新模块具体用于:
[0048]使用所述第二更新数据对所述第一存储节点存储的所述第一数据进行更新,形成所述第一存储节点中的第一版本的数据;
[0049]确定所述第二存储节点保存的所述第一数据对应的版本低于所述第一版本的前一版本;
[0050]在所述第二存储节点保存的所述第一数据被更新为所述第一版本的前一版本的数据之后,使用所述第二更新数据对所述第二存储节点中的所述第一版本的前一版本的数据进行更新,形成所述第二存储节点中的第一版本的数据。
[0051]结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述更新模块具体用于:
[0052]向所述第二存储节点发送数据更新请求,所述数据更新请求用于请求以所述第二更新数据作为第一版本的数据对所述第一数据进行更新;
[0053]接收所述第二存储节点返回的报错信息,所述报错信息表明所述第二存储节点中的所述第一数据对应的版本低于所述第一版本的前一版本;
[0054]在接收所述报错信息后设定时长后,再次向所述第二存储节点发送所述数据更新请求;
[0055]接收所述第二存储节点返回的数据更新成功消息,其中,所述第二存储节点在存储的所述第一数据被所述第一计算节点更新为所述第一版本的前一版本的数据之后,响应所述数据处理装置发送的所述数据更新请求,并在所述第一数据被更新为所述第二更新数据后向所述第一计算节点返回所述数据更新成功消息。
[0056]第三方面,本发明实施例提供一种分布式系统中计算节点,应用于分布式系统中,所述分布式系统还包括管理节点、第一计算节点和多个存储节点,所述管理节点、所述第一计算节点、所述计算节点和所述多个存储节点间通信,所述计算节点包括:
[0057]处理器,与输入输出接口通信,用于在所述第一计算节点根据第一分区视图使用第一更新数据对所述第一数据进行更新操作时,指示所述输入输出接口接收第二分区视图;
[0058]所述输入输出接口
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1