一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据写入方法、装置和电子设备与流程

2022-05-17 20:32:44 来源:中国专利 TAG:


1.本发明涉及数据存储技术领域,尤其是涉及一种数据写入方法、装置和电子设备。


背景技术:

2.相关技术中,分布式存储系统的强一致性写入流程,通常是由客户端发送写请求到主节点,主节点接收写请求,并将写请求携带的数据写入本地,然后将写请求发送到所有从节点;该从节点写入成功后,会向主节点发送写入成功的消息,如果在指定时间内没有接收到从节点返回的写入成功的消息,主节点会再次向该从节点发送写请求,直到该从节点返回写入成功的消息;当所有从节点均写入成功后,主节点向客户端发送写入成功消息;当写请求达到预设时长,未收到所有从节点返回的写入成功的消息,向客户端发送写入失败的消息。
3.上述写入流程中,如果某个从节点宕机或者不可用,主节点将写请求发送到该节点后会无限重试,直到从节点恢复才能够写入成功,因此容易导致写请求超时,引起写入失败或者吞吐量抖动,从而影响整个分布式集群的稳定性和可用性。


技术实现要素:

4.本发明的目的在于提供一种数据写入方法、装置和电子设备,以减少写入失败和吞吐量抖动,提高整个分布式集群的稳定性和可用性。
5.第一方面,本发明实施例提供了一种数据写入方法,该方法包括:接收针对目标数据的数据写入请求;基于存储节点的运行状态,确定用于写入目标数据的目标存储块;其中,该目标存储块的主副本设置在本地节点;该目标存储块的从副本,设置在除本地节点以外的存储节点;将目标数据写入目标存储块的主副本和从副本中。
6.在可选的实施方式中,上述存储节点的运行状态包括正常状态和异常状态;该异常状态的存储节点的节点信息保存在预设的状态存储单元;上述基于存储节点的运行状态,确定用于写入目标数据的目标存储块的步骤,包括:基于状态存储单元保存的节点信息,确定异常状态的存储节点;将设置在处于异常状态的存储节点的从副本,确定为异常副本;从本地节点对应的多个存储块中,将异常副本对应的存储块之外的存储块,确定为备选存储块;从备选存储块中,确定用于写入目标数据的目标存储块。
7.在可选的实施方式中,上述从备选存储块中,确定用于写入目标数据的目标存储块的方式,包括下述中的一种:将备选存储块中,最后一次写入数据的时间距离当前时间最近的备选存储块确定为目标存储块;从备选存储块中,将存储空间剩余量最大的备选存储块确定为目标存储块;从备选存储块中,随机确定一个备选存储块作为目标存储块。
8.在可选的实施方式中,上述将目标数据写入目标存储块的主副本和从副本中的步骤之后,上述方法还包括:如果接收到从副本所处的存储节点返回的写入失败消息,将从副本所处的存储节点确定为处于异常状态的存储节点,提取写入失败消息携带的节点信息;其中,该节点信息包括ip地址和端口号;将提取到的节点信息保存至预设的状态存储单元;
其中,该状态存储单元中保存有处于异常状态的存储节点的节点信息。
9.在可选的实施方式中,上述将提取到的节点信息保存至预设的状态存储单元的步骤之后,该方法还包括:向返回写入失败消息的存储节点发送目标数据的数据写入请求;如果返回写入失败消息的存储节点返回写入成功消息,将存储节点的节点信息从状态存储单元中删除;如果返回写入失败消息的存储节点返回写入失败消息,继续执行向返回写入失败消息的存储节点发送目标数据的数据写入请求,直到存储节点返回写入成功消息。
10.在可选的实施方式中,上述状态存储单元保存的节点信息,通过下述方式获得:通过主动探测器,检测存储节点的运行状态;如果检测到存储节点处于异常状态,将该存储节点的节点信息保存至状态存储单元。
11.在可选的实施方式中,上述状态存储单元保存的节点信息,通过下述方式获得:接收存储节点发送的节点状态信息;如果节点状态信息指示存储节点处于异常状态,将该存储节点的节点信息保存至状态存储单元。
12.在可选的实施方式中,上述基于存储节点的运行状态,确定用于写入目标数据的目标存储块的步骤,包括:将设置在处于正常状态的存储节点的从副本,确定为正常副本;从本地节点对应的多个存储块中,将正常副本对应的存储块,确定为待选存储块;从待选存储块中,确定用于写入目标数据的目标存储块。
13.第二方面,本发明实施例提供了一种数据写入装置,该装置包括:请求接收模块,用于接收针对目标数据的数据写入请求;存储块确定模块,用于基于存储节点的运行状态,确定用于写入目标数据的目标存储块;其中,该目标存储块的主副本设置在本地节点;该目标存储块的从副本,设置在除本地节点以外的存储节点;数据写入模块,用于将目标数据写入目标存储块的主副本和从副本中。
14.第三方面,本发明实施例提供了一种电子设备,该电子设备包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现前述实施方式任一项所述的数据写入方法。
15.第四方面,本发明实施例提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现前述实施方式任一项所述的数据写入方法。
16.本发明实施例带来了以下有益效果:
17.本发明提供的一种数据写入方法、装置和电子设备,首先接收针对目标数据的数据写入请求;基于存储节点的运行状态,确定用于写入目标数据的目标存储块,该目标存储块的主副本设置在本地节点,该目标存储块的从副本设置在除本地节点以外的存储节点;然后将目标数据写入目标存储块的主副本和从副本中。该方式在确定写入数据的存储块时,参考了各个存储节点的运行状态,因此可以减少将目标数据写入设置在异常状态的存储节点的从副本的概率,从而减少了写入失败的概率,也提升了整个分布式集群的稳定性和可用性。
18.本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
19.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
20.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1为本发明实施例提供的一种数据写入方法的流程图;
22.图2为本发明实施例提供的另一种数据写入方法的流程图;
23.图3为本发明实施例提供的另一种数据写入方法的流程图;
24.图4为本发明实施例提供的一种数据写入装置的结构示意图;
25.图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
26.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
27.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
28.相关技术中,分布式存储系统的强一致性写入流程,通常是由客户端发送写请求到主节点,主节点接收到写请求时,从保存的多个可写块中选择目标可写块,该可写块包括一个主副本和两个从副本,主副本部署在主节点上,从副本分别部署在两个从节点上;将写请求携带的数据写入目标可写块的主副本后,将写请求发送到目标可写块的从副本所处于的从节点;该从节点接收到写请求后,将写请求携带的数据写入从副本,写入成功后,会向主节点发送写入成功的消息,如果在指定时间内没有接收到从节点返回的写入成功的消息,主节点会再次向该从节点发送写请求,直到该从节点返回写入成功的消息;当所有从节点均写入成功后,主节点向客户端发送写入成功消息;当写请求达到预设时长,未收到所有从节点返回的写入成功的消息,向客户端发送写入失败的消息;客户端接收到写入失败的消息后,会重试写入流程。
29.上述写入流程中,如果目标可写块中的某个从节点宕机或者不可用,主节点将写请求发送到该节点后会无限重试,直到从节点恢复才能够写入成功,因此某个从节点宕机,在一段时间内会影响该从节点包含的所有可写块对应的主节点的写入,主节点的同步重试会引发客户端的写入超时,从而引发写入失败或吞吐量的抖动;同时,也会影响整个分布式集群的稳定性和可用性。通常分布式集群规模越小,节点设备越少,受影响的程度就越高,整个分布式集群的可用性和稳定性也越差。
30.基于上述问题,本发明实施例提供了一种数据写入方法、装置和电子设备,该技术可以应用于各种分布式存储系统,尤其是分布式存储系统的强一致性写入场景中。为便于对本实施例进行理解,首先对本发明实施例所公开的一种数据写入方法进行详细介绍,该
方法应用于分布式存储系统中的节点设备,也即是分布式集群中的节点设备,该节点设备可以是服务器或者其他电子设备,例如,上述主节点;如图1所示,该方法包括如下具体步骤:
31.步骤s102,接收针对目标数据的数据写入请求。
32.上述目标数据可以是用户想要写入分布式存储系统中的数据,该数据可以是视频数据、音频数据、图像数据、文本数据等。上述针对目标数据的数据写入请求通常是用户通过客户端发送的,该客户端可以是手机、平板电脑、计算机等。
33.步骤s104,基于存储节点的运行状态,确定用于写入目标数据的目标存储块;其中,该目标存储块的主副本设置在本地节点;该目标存储块的从副本,设置在除本地节点以外的存储节点。
34.本地节点相当于上述主节点,该主节点上可以设置有多个存储块的主副本,也即是主节点可以对应多个存储块,每个存储块包括一个主副本和至少一个从副本(例如,可以是两个从副本或者三个从副本等),该主副本设置在主节点,从副本设置在除主节点之外的存储节点,该存储节点也可以称为从节点。在具体实现时,一个存储块中的每个从副本设置在不同的存储节点上,以达到分布式存储的目的。具体地,上述存储块相当于背景技术中的可写块,该存储块可以理解为包含有主副本和从副本的对应关系和设置数据的数据结构。
35.上述存储节点的运行状态包括正常状态和异常状态;其中,异常状态可以是存储节点宕机或者存储节点不可用时的运行状态。上述接收到目标数据的数据写入请求的主节点,可以感知各个存储节点的运行状态,从而可以从主节点对应的多个存储块中,确定感知到的、从副本所处的存储节点处于正常状态的存储块为目标存储块。
36.在一些实施例中,上述主节点还可以记录处于正常状态的存储节点的节点信息,或者记录处于异常状态的存储节点的节点信息。在确定目标存储块时,如果主节点记录的是处于正常状态的存储节点的节点信息,确定记录的从副本所处的存储节点均处于正常状态的存储块为目标存储块;如果主节点记录的是处于异常状态的存储节点的节点信息,确定记录的从副本所处的存储节点处于异常状态的存储块之外的存储块为目标存储块。
37.在具体实现时,如果确定出的目标存储块为多个,可以从中任意选择一个目标存储块作为最终的目标存储块,也可以选择剩余存储空间最大的目标存储块为最终的目标存储块,还可以选择上次写入数据使用的目标存储块为最终的目标存储块等。
38.步骤s106,将目标数据写入目标存储块的主副本和从副本中。
39.当主节点确定出目标存储块时,将目标数据写入目标存储块的主副本,写入成功后,向目标存储块的从副本所处的存储节点发送目标数据的数据写入请求,以将目标数据写入存储节点中的目标存储块的从副本中,从而实现目标数据的同步写入。
40.本发明实施例提供的一种数据写入方法,首先接收针对目标数据的数据写入请求;基于存储节点的运行状态,确定用于写入目标数据的目标存储块,该目标存储块的主副本设置在本地节点,该目标存储块的从副本设置在除本地节点以外的存储节点;然后将目标数据写入目标存储块的主副本和从副本中。该方式在确定写入数据的存储块时,参考了各个存储节点的运行状态,因此可以减少将目标数据写入设置在异常状态的存储节点的从副本的概率,从而减少了写入失败的概率,也提升了整个分布式集群的稳定性和可用性。
41.本发明实施例还提供了另一种数据写入方法,该方法在上述实施例方法的基础上
实现;该方法重点描述基于存储节点的运行状态,确定用于写入目标数据的目标存储块的具体过程(通过下述步骤s204-s210实现);如图2所示,该方法包括如下步骤:
42.步骤s202,接收针对目标数据的数据写入请求。
43.步骤s204,基于预设的状态存储单元保存的节点信息,确定异常状态的存储节点;其中,状态存储单元中保存有处于异常状态的存储节点的节点信息。
44.上述存储节点的运行状态包括正常状态和异常状态。接收目标数据的数据写入请求的主节点中设置有状态存储单元,该状态存储单元用于保存处于异常状态的存储节点的节点信息,该状态存储单元的作用相当于黑名单。该存储节点的异常状态通常是由于存储节点宕机或者不可用引起的,该存储节点的节点信息包括ip(internet protocol,互联网协议)地址和端口号;其中,ip地址通常是ip协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异;上述端口号的作用类似于门牌号,客户端可以通过ip地址找到对应的服务器端(例如,存储节点),但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器,为了对端口进行区分,将每个端口进行了编号,形成了端口号。
45.步骤s206,将设置在处于异常状态的存储节点的从副本,确定为异常副本。
46.步骤s208,从本地节点对应的多个存储块中,将异常副本对应的存储块之外的存储块,确定为备选存储块。
47.上述本地节点相当于接收针对目标数据的数据写入请求的主节点,该本地节点上可以设置有多个存储块的主副本,也即是本地节点对应有多个存储块。该本地节点可以根据状态存储单元保存的节点信息,确定出处于异常状态的存储节点;然后将设置在这些处于异常状态的存储节点的从副本,确定为异常从副本,再在本地节点对应的多个存储块中,将这些异常副本对应的存储块之外的存储块,确定为备选存储块。也可以理解为在确定写入目标数据的目标存储块时,首先需要检查待选择存储块的从副本所处的存储节点的节点信息是否保存在状态存储单元,如果保存在状态存储单元中,则忽略该待选择存储块。
48.步骤s210,从备选存储块中,确定用于写入目标数据的目标存储块。
49.在具体实现时,可以通过下述方式一到方式三中的任意一种方式,从备选存储块中确定目标存储块:
50.方式一,将备选存储块中,最后一次写入数据的时间距离当前时间最近的备选存储块确定为目标存储块。
51.方式二,从备选存储块中,将存储空间剩余量最大的备选存储块确定为目标存储块。上述存储空间剩余量最大的备选存储块可以理解为是备选存储块的主副本的存储空间剩余量最大,或者备选存储块的从副本的存储空间剩余量最大。
52.方式三,从备选存储块中,随机确定一个备选存储块作为目标存储块。
53.步骤s212,将目标数据写入目标存储块的主副本和从副本中。
54.在具体实现时,将目标数据写入确定的目标存储块的主副本,写入成功后,向目标存储块的从副本所处的存储节点发送目标数据的数据写入请求,以将目标数据写入存储节点中的目标数据块的从副本中,在存储节点将目标数据写入从副本的过程中,可能由于存储节点当前处于异常状态,而该异常状态的存储节点的节点信息并未保存在状态存储单
元,导致写入失败。因而,可以通过下述步骤10-11将处于异常状态的存储节点的节点信息保存至状态存储单元:
55.步骤10,如果接收到从副本所处的存储节点返回的写入失败消息,将从副本所处的存储节点确定为处于异常状态的存储节点,提取写入失败消息携带的节点信息。
56.当接收到目标数据的数据写入请求的存储节点处于异常状态(该存储节点宕机或者不可用)时,该存储节点会向发送数据写入请求的本地节点返回写入失败消息,该写入失败消息中携带有该存储节点的节点信息。在具体实现时,该写入失败消息可以是一个可识别的rpc(remote procedure call,远程过程调用)错误码。
57.步骤11,将提取到的节点信息保存至预设的状态存储单元。
58.在具体实现时,如果保存在状态存储单元中的节点信息对应的存储节点恢复到正常状态,可以将恢复到正常状态的存储节点的节点信息从状态存储单元中删除,具体过程通过下述步骤20-23实现:
59.步骤20,如果接收到从副本所处的存储节点返回的写入失败消息,将写入失败消息携带的、从副本所处的存储节点的节点信息,保存至状态存储单元。
60.步骤21,向返回写入失败消息的存储节点发送再次目标数据的数据写入请求。
61.步骤22,如果返回写入失败消息的存储节点返回写入成功消息,将存储节点的节点信息从态存储单元中删除。
62.步骤23,如果返回写入失败消息的存储节点返回写入失败消息,继续执行向返回写入失败消息的存储节点发送目标数据的数据写入请求,直到该存储节点返回写入成功消息。
63.基于上述步骤10-步骤23的方式,本地节点能够在一次同步任务失败(也即是本地节点向目标存储块的从副本所处的存储节点发送目标数据的数据写入请求,如果该存储节点返回的写入失败消息)后,迅速识别出同步失败的存储节点,并记录该存储节点的节点信息保存至状态存储单元;在后续写入流程(也即是本地节点重试向存储节点发送数据写入请求)中,能够在该存储节点恢复后,从状态存储单元中将该存储节点的节点信息删除,从而使得小规模的分布式集群中单个存储节点宕机或宕进程对整个分布式集群的写入失败率影响降低。同时,本地节点能够有效地避免向已经宕机的存储节点的无效写入,在一定程度上也能够减少分布式集群的垃圾数据。
64.在一些实施例中,上述状态存储单元保存的节点信息,还可以通过下述步骤30-31获得:
65.步骤30,通过主动探测器,检测存储节点的运行状态。
66.上述主动探测器部署在本地节点上,该主动探测器可以是节点运行状态监控系统,该主动探测器可以主动探测各个存储节点的运行状态。
67.步骤31,如果检测到存储节点处于异常状态,将该存储节点的节点信息保存至状态存储单元。
68.当主动探测器检测到某一存储节点处于异常状态(该异常状态可以是宕机或者存在宕进程的存储节点的运行状态),将该存储节点的节点信息保存至状态存储单元中。如果主动探测器检测到状态存储单元中保存的节点信息对应的存储节点恢复,也即是处于正常状态,将该存储节点的节点信息从状态存储单元中删除,以确保状态存储单元中仅存储有
处于异常状态的存储节点的节点信息。
69.在一些实施例中,上述状态存储单元保存的节点信息,还可以通过下述步骤40-41获得:
70.步骤40,接收存储节点发送的节点状态信息。
71.在分布式集群中的每个主节点和存储节点上都部署心跳发送进程和心跳接收进程,以使每个节点互相感知对方的运行状态,例如,存储节点可以通过心跳发送进程向主节点发送节点状态信息(相当于心跳信息),主节点通过心跳接收进程接收到节点状态信息,并通过节点状态信息确定该存储节点的运行状态。
72.步骤41,如果上述节点状态信息指示存储节点处于异常状态,将该存储节点的节点信息保存至状态存储单元。
73.如果状态存储单元中保存的节点信息对应的存储节点恢复,也即是节点状态信息指示存储节点处于正常状态,将该存储节点的节点信息从状态存储单元中删除。
74.上述数据写入方法,首先接收针对目标数据的数据写入请求;进而基于状态存储单元保存的处于异常状态的存储节点的节点信息,确定异常状态的存储节点;再将设置在处于异常状态的存储节点的从副本,确定为异常副本;然后从本地节点对应的多个存储块中,将异常副本对应的存储块之外的存储块,确定为备选存储块;从备选存储块中确定用于写入目标数据的目标存储块;然后将目标数据写入目标存储块的主副本和从副本中。该方式中,在本地节点中增加了状态存储单元,来记录异常状态的存储节点的节点信息,以使本地节点在确定写入数据的目标存储块时,排除从副本所处的存储节点记录在状态存储单元的存储块,从而提高了数据写入流程的成功率;同时,也减少了主节点的无效写入,在一定程度上减少了分布式集群的不可用数据。
75.本发明实施例还提供了另一种数据写入方法,该方法在上述实施例方法的基础上实现;该方法重点描述基于存储节点的运行状态,确定用于写入目标数据的目标存储块的具体过程(通过下述步骤s304-s308实现);如图3所示,该方法包括如下步骤:
76.步骤s302,接收针对目标数据的数据写入请求。
77.步骤s304,将设置在处于正常状态的存储节点的从副本,确定为正常副本。
78.步骤s306,从本地节点对应的多个存储块中,将正常副本对应的存储块,确定为待选存储块。
79.步骤s308,从待选存储块中,确定用于写入目标数据的目标存储块。
80.上述本地节点对应有多个存储块,每个存储块的主副本设置在本地节点,从副本设置在除本地节点以外的存储节点。本地节点中可以设置一个白名单,用于保存处于正常状态的存储节点的节点信息,在确定目标存储块时,可以选取所有从副本均设置在白名单保存的节点信息对应的存储节点中的存储块,作为目标存储块,从而确保目标存储块的从副本所处的存储节点均处于正常状态。
81.在具体实现时,上述白名单中的节点信息可以通过下述方式中的一种或者多种获得:
82.方式一,如果接收到从副本所处的存储节点返回的写入成功消息,将从副本所处的存储节点确定为处于正常状态的存储节点,提取写入成功消息携带的节点信息;将该节点信息写入白名单中。
83.方式二,通过主动探测器,检测存储节点的运行状态;如果检测到存储节点处于正常状态,将存储节点的节点信息保存至白名单。
84.方式三,接收存储节点发送的节点状态信息;如果该节点状态信息指示存储节点处于正常状态,将存储节点的节点信息保存至白名单。
85.在具体实现时,可以通过下述方式一到方式三中的任意一种方式,从待选存储块中,确定用于写入目标数据的目标存储块:
86.方式一,将待选存储块中,最后一次写入数据的时间距离当前时间最近的待选存储块确定为目标存储块。
87.方式二,从待选存储块中,将存储空间剩余量最大的待选存储块确定为目标存储块。上述存储空间剩余量最大的待选存储块可以理解为是待选存储块的主副本的存储空间剩余量最大,或者待选存储块的从副本的存储空间剩余量最大。
88.方式三,从待选存储块中,随机确定一个待选存储块作为目标存储块。
89.步骤s310,将目标数据写入目标存储块的主副本和从副本中。
90.上述数据写入方法,该方式能够根据存储块的从副本所处的存储节点的运行状态,确定写入目标数据的目标存储块,确保将目标数据写入设置在正常状态的存储节点,从而减少了写入失败的现象,提升了整个分布式集群的稳定性和可用性。
91.对应于上述方法实施例,本发明实施例提供了一种数据写入装置,如图4所示,该装置包括:
92.请求接收模块40,用于接收针对目标数据的数据写入请求。
93.存储块确定模块41,用于基于存储节点的运行状态,确定用于写入目标数据的目标存储块;其中,目标存储块的主副本设置在本地节点;目标存储块的从副本,设置在除本地节点以外的存储节点。
94.数据写入模块42,用于将目标数据写入目标存储块的主副本和从副本中。
95.上述数据写入装置,首先接收针对目标数据的数据写入请求;基于存储节点的运行状态,确定用于写入目标数据的目标存储块,该目标存储块的主副本设置在本地节点,该目标存储块的从副本设置在除本地节点以外的存储节点;然后将目标数据写入目标存储块的主副本和从副本中。该方式在确定写入数据的存储块时,参考了各个存储节点的运行状态,因此可以减少将目标数据写入设置在异常状态的存储节点的从副本的概率,从而减少了写入失败的概率,也提升了整个分布式集群的稳定性和可用性。
96.具体地,上述存储节点的运行状态包括正常状态和异常状态;该异常状态的存储节点的节点信息保存在预设的状态存储单元;上述存储块确定模块41,用于:基于状态存储单元保存的节点信息,确定异常状态的存储节点;将设置在处于异常状态的存储节点的从副本,确定为异常副本;从本地节点对应的多个存储块中,将异常副本对应的存储块之外的存储块,确定为备选存储块;从备选存储块中,确定用于写入目标数据的目标存储块。
97.在具体实现时,上述存储块确定模块41中从备选存储块中,确定用于写入目标数据的目标存储块的方式,包括下述中的一种:将备选存储块中,最后一次写入数据的时间距离当前时间最近的备选存储块确定为目标存储块;或者,从备选存储块中,将存储空间剩余量最大的备选存储块确定为目标存储块;或者从备选存储块中,随机确定一个备选存储块作为目标存储块。
98.进一步地,上述装置还包括第一信息保存模块,用于:将目标数据写入目标存储块的主副本和从副本中后,如果接收到从副本所处的存储节点返回的写入失败消息,将从副本所处的存储节点确定为处于异常状态的存储节点,提取写入失败消息携带的节点信息;其中,该节点信息包括ip地址和端口号;将提取到的节点信息保存至预设的状态存储单元;其中,该状态存储单元中保存有处于异常状态的存储节点的节点信息。
99.进一步地,上述装置还包括节点信息删除模块,用于:将提取到的节点信息保存至预设的状态存储单元后,向返回写入失败消息的存储节点发送目标数据的数据写入请求;如果返回写入失败消息的存储节点返回写入成功消息,将存储节点的节点信息从状态存储单元中删除;如果返回写入失败消息的存储节点返回写入失败消息,继续执行向返回写入失败消息的存储节点发送目标数据的数据写入请求,直到存储节点返回写入成功消息。
100.进一步地,上述装置还包括第二信息保存模块,用于:通过主动探测器,检测存储节点的运行状态;如果检测到存储节点处于异常状态,将存储节点的节点信息保存至状态存储单元。
101.进一步地,上述装置还包括第三信息保存模块,用于:接收存储节点发送的节点状态信息;如果该节点状态信息指示存储节点处于异常状态,将存储节点的节点信息保存至状态存储单元。
102.在具体实现时,上述存储块确定模块41,还用于:将设置在处于正常状态的存储节点的从副本,确定为正常副本;从本地节点对应的多个存储块中,将正常副本对应的存储块,确定为待选存储块;从待选存储块中,确定用于写入目标数据的目标存储块。
103.本发明实施例所提供的数据写入装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
104.本发明实施例还提供了一种电子设备,参见图5所示,该电子设备包括处理器101和存储器100,该存储器100存储有能够被处理器101执行的机器可执行指令,该处理器101执行机器可执行指令以实现上述数据写入方法。
105.进一步地,图5所示的电子设备还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
106.其中,存储器100可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
107.处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或
者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
108.本发明实施例还提供一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述数据写入方法,具体实现可参见方法实施例,在此不再赘述。
109.本发明实施例所提供的数据写入方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
110.基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
111.最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献