数据读取方法、装置、分布式存储系统、设备和存储介质制造方法及图纸

技术编号:38395830 阅读:23 留言:0更新日期:2023-08-07 11:10
本公开提供了一种数据读取方法、装置、分布式存储系统、设备和存储介质,涉及人工智能技术领域,具体涉及云计算、云存储和分布式存储等技术。数据读取方法包括:响应于客户端发送的读请求,获取多个从节点中各个从节点存储的候选数据的局部最新版本号;基于所述局部最新版本号,确定全局最新版本号;基于所述全局最新版本号确定目标数据,并将所述目标数据发送至所述客户端。本公开可以提高读取操作的可用性。用性。用性。

【技术实现步骤摘要】
数据读取方法、装置、分布式存储系统、设备和存储介质


[0001]本公开涉及人工智能
,具体涉及云计算、云存储和分布式存储等技术,尤其涉及一种数据读取方法、装置、分布式存储系统、设备和存储介质。

技术介绍

[0002]分布式存储技术是指将数据分散存储在多台机器上。Raft算法是一种一致性算法,Raft是可靠、可复制、可冗余、可容错(Reliable、Replicated、Redundant、AndFault

Tolerant)的缩写。
[0003]基于Raft算法的分布式存储系统中,存储节点包括主节点(leader)和从节点(follower),通过Raft算法,可以保证主节点和从节点上数据的一致性。
[0004]相关技术中,需要主节点处于存活状态才能执行数据读取操作。但是,由于需要保证主节点处于存活状态,在主节点不存在时,就会导致无法进行数据读取操作,可用性下降。

技术实现思路

[0005]本公开提供了一种数据读取方法、装置、分布式存储系统、设备和存储介质。
[0006]根据本公开的一方面,提供了一种数据读取方法,应用于分布式存储系统内多个从节点中的任一从节点,所述方法包括:响应于客户端发送的读请求,获取所述多个从节点中各个从节点存储的候选数据的局部最新版本号;基于所述局部最新版本号,确定全局最新版本号;基于所述全局最新版本号确定目标数据,并将所述目标数据发送至所述客户端。
[0007]根据本公开的另一方面,提供了一种数据读取装置,包括:应用于分布式存储系统内多个从节点中的任一从节点,所述装置包括:获取模块,用于响应于客户端发送的读请求,获取所述多个从节点中各个从节点存储的候选数据的局部最新版本号;确定模块,用于基于所述局部最新版本号,确定全局最新版本号;发送模块,用于基于所述全局最新版本号确定目标数据,并将所述目标数据发送至所述客户端。
[0008]根据本公开的另一方面,提供了一种分布式存储系统,包括:多个从节点;所述多个从节点中任一从节点包括:如上述任一方面的任一项所述的装置。
[0009]根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上述任一方面的任一项所述的方法。
[0010]根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据上述任一方面的任一项所述的方法。
[0011]根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据上述任一方面的任一项所述的方法。
[0012]根据本公开的技术方案,可以提高读写操作的可用性。
[0013]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0014]附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0015]图1是根据本公开第一实施例的示意图;
[0016]图2是根据本公开实施例提供的应用场景的示意图;
[0017]图3是根据本公开实施例提供的各个节点上的日志的示意图;
[0018]图4是根据本公开第二实施例的示意图;
[0019]图5是根据本公开实施例基于全局最新版本号的处理过程的示意图;
[0020]图6是根据本公开第三实施例的示意图;
[0021]图7是根据本公开第四实施例的示意图;
[0022]图8是用来实现本公开实施例的数据读取方法的电子设备的示意图。
具体实施方式
[0023]以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0024]相关技术中,客户端可以将读请求发送至主节点,主节点接收到读请求后,将主节点自身存储数据返回给客户端。或者,客户端也可以将读请求发送给从节点,从节点接收到读请求后,向主节点获取最新版本号(log index),在该从节点自身存储数据的版本号达到该最新版本号后,将该从节点自身存储数据返回给客户端。
[0025]从上述过程可知,相关技术中的数据读取操作需要主节点保持存活状态,但是,在一些场景下,主节点可能处于非存活状态,或者说不存在主节点。例如,Raft算法会间隔一段时间重新选举主节点,主节点选举需要一定时间,在未选举得到主节点时,主节点不存在,此时,上述的数据读取操作将无法实现,可用性降低。
[0026]为了提高读写操作的可用性,本公开提供如下实施例。
[0027]图1是根据本公开第一实施例的示意图,本实施例提供一种数据读取方法,该方法应用于分布式存储系统内多个从节点中的任一从节点,该方法包括:
[0028]101、响应于客户端发送的读请求,获取所述多个从节点中各个从节点存储的候选数据的局部最新版本号。
[0029]102、基于所述局部最新版本号,确定全局最新版本号。
[0030]103、基于所述全局最新版本号确定目标数据,并将所述目标数据发送至所述客户端。
[0031]其中,从节点上所存储的数据可以是不断更新的,具体可以是主节点复制给各个从节点的。例如,在第一时刻,主节点接收到数据a,主节点将该数据a复制(写)给各个从节点,在第二时刻,主节点接收到数据b,主节点再将该数据b复制给各个从节点。相应地,针对
从节点,第一时刻存储的数据为a,第二时刻存储的数据为a和b。另外,不同从节点获取数据的速度可能不一样,进而在同一时刻,不同从节点上所存储的数据可能不同。例如,针对同一时刻,第一从节点上所存储的数据为a和b,第二从节点上所存储的数据为a。
[0032]为了区分,在接收到读请求时,从节点上所存储的数据可以称为候选数据。由于从节点为多个,候选数据也为多组,每组候选数据对应一个从节点。
[0033]主节点将数据写给从节点时,会为每个写入的数据分配版本号(log index)。版本号通常是按序递增的。例如,基于上述示例,先写入a再写入b,则可以为a分配版本号为1,为b分配版本号为2。
[0034]最新版本号,是每组数据中最新写入的数据的版本号。由于版本号通常是按序递增的,最新版本号通常是每组数据中的最大版本号。例如,先写入a再写入b,则最新版本号为2。
[0035]为了区分,一组候选数据的最新版本号可以称为局部最新版本号。
[0036]由于从节点写入速度不一致,不同从节点上存储的数据可能不同,为此本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据读取方法,应用于分布式存储系统内多个从节点中的任一从节点,所述方法包括:响应于客户端发送的读请求,获取所述多个从节点中各个从节点存储的候选数据的局部最新版本号;基于所述局部最新版本号,确定全局最新版本号;基于所述全局最新版本号确定目标数据,并将所述目标数据发送至所述客户端。2.根据权利要求1所述的方法,其中,所述响应于客户端发送的读请求,获取所述多个从节点中各个从节点存储的候选数据的局部最新版本号,包括:响应于客户端发送的读请求,向自身从节点之外的其他从节点发送广播消息,所述广播消息用于查询所述其他从节点上的所述局部最新版本号;接收所述其他从节点发送的响应消息,所述响应消息中包含所述其他从节点上的所述局部最新版本号;从所述响应消息中获取所述其他从节点上的所述局部最新版本号,以及获取自身从节点上的所述局部最新版本号。3.根据权利要求1所述的方法,其中,所述局部最新版本号是所述候选数据的版本号中的最大值,所述基于所述局部最新版本号,确定全局最新版本号,包括:将最大的局部最新版本号,作为所述全局最新版本号。4.根据权利要求1

3任一项所述的方法,其中,所述基于所述全局最新版本号确定目标数据,并将所述目标数据发送至所述客户端,包括:若自身从节点存储的候选数据的局部最新版本号大于或等于所述全局最新版本号,将所述自身从节点上存储的候选数据作为所述目标数据;将所述目标数据发送至所述客户端。5.根据权利要求1

3任一项所述的方法,其中,所述基于所述全局最新版本号确定目标数据,并将所述目标数据发送至所述客户端,包括:若自身从节点存储的候选数据的局部最新版本号大于或等于所述全局最新版本号,且预设时长内获取到版本号大于或等于所述全局最新版本号的更新数据,将所述更新数据作为所述目标数据;将所述目标数据发送至所述客户端。6.根据权利要求5所述的方法,还包括:若自身从节点存储的候选数据的局部最新版本号大于或等于所述全局最新版本号,且预设时长内未获取到版本号大于或等于所述全局最新版本号的更新数据,向所述客户端反馈第一读响应,所述第一读响应表明读取失败;或者,若自身从节点存储的候选数据的局部最新版本号大于或等于所述全局最新版本号,且预设时长内未获取到版本号大于或等于所述全局最新版本号的更新数据,向所述客户端反馈第二读响应,所述第二读响应中包含目标从节点的信息,所述目标从节点是局部最新版本号大于或等于所述全局最新版本号的从节点,以使所述客户端向所述目标从节点重新发送读请求。7.一种数据读取装置,应用于分布式存储系统内多个从节点中的任一从节点,所述装置包括:
获取模块,用于响应于客户端发送的读请求,获取所述多个从节点中各个从节点存储的候选数据的局部最新版本号;确定模块,用于基于所述局部最新版本号,确定全局最新版本号;发送模块,用于基于所述全局最新版本号确定...

【专利技术属性】
技术研发人员:李国强刘涛
申请(专利权)人:百度在线网络技术北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1