基于RAFT协议的数据处理方法和设备,及计算机存储介质与流程

文档序号:26754350发布日期:2021-09-25 03:30阅读:91来源:国知局
基于RAFT协议的数据处理方法和设备,及计算机存储介质与流程
基于raft协议的数据处理方法和设备,及计算机存储介质
技术领域
1.本发明涉及数据处理领域,尤其涉及一种基于raft协议的数据处理方法和设备,及计算机存储介质。


背景技术:

2.目前,raft协议已经广泛应用于很多领域,主要的作用是维护多节点间的数据一致性,包括应用至分布式网络进行分布式存储。
3.然而,针对分布式网络下的数据传输,由于raft协议在进行提交数据时需要等待follower的成功回应消息,并达到半数以上通过时才表示数据已经提交成功,如果follower不能及时返回成功回应消息,那么将导致整个数据传输系统吞吐下降的缺陷,使得数据传输延迟较高。


技术实现要素:

4.为解决上述技术问题,本发明实施例期望提供一种基于raft协议的数据处理方法和设备,及计算机存储介质。
5.本发明的技术方案是这样实现的:
6.本发明实施例提供的一种基于raft算法的数据处理方法,应用于主节点,主节点配置第一rdma模块,主节点接收当前任务请求;其中,当前任务请求携带当前任务数据;响应当前任务请求,按照raft协议利用第一rdma模块向从节点的scm模块发送当前任务数据的写指令。
7.本发明实施例提供的一种基于raft算法的数据处理方法,应用于从节点,从节点配置第二rdma模块和scm模块,从节点利用所述第二rdma模块接收主节点发送的任务数据的写指令;响应所述写指令,将所述任务数据写入所述scm模块;当确定所述scm模块中存在所述任务数据对应的当前数据成功提交序号时,将所述任务数据确定为可应用数据。
8.本发明实施例提供一种基于raft协议的数据处理设备,其特征在于,所述数据处理设备配置第一rdma模块,所述数据处理设备包括接收单元和发送单元,
9.所述接收单元,用于接收客户端发送的任务请求;其中,所述任务请求携带任务数据;
10.所述发送单元,用于响应所述当前任务请求,按照所述raft协议利用所述第一rdma模块向从节点的scm模块发送所述当前任务数据的写指令。
11.本发明实施例提供一种基于raft协议的数据处理设备,其特征在于,所述数据处理设备配置第二rdma模块和scm模块,所述数据处理设备包括接收单元、写单元以及确定单元,
12.所述接收单元,用于利用所述第二rdma模块接收主节点发送的任务数据的写指令;
13.所述写单元,用于响应所述写指令,将所述任务数据写入所述scm模块;
14.所述确定单元,用于当确定所述scm模块中存在所述任务数据对应的当前数据成功提交序号时,将所述任务数据确定为可应用数据。
15.本发明实施例提供一种基于raft协议的数据处理设备,包括:处理器、存储有所述处理器可执行指令的存储器,当所述指令被所述处理器执行时,实现如上所述的基于raft协议的数据处理方法。
16.本发明实施例提供一种计算机可读存储介质,存储有程序,所述程序被处理器执行时,实现如上所述的基于raft协议的数据处理方法。
17.本发明实施例提供的技术方案,主节点可以利用rdma模块直接将数据写入从节点的内存,无需等待从节点的返回响应,无需从节点的cpu参与,从而进一步提高了系统吞吐率,数据传输效率更高。
附图说明
18.图1为相关技术中基于raft协议的数据处理方法的流程示意图;
19.图2为本发明实施例提出的分布式存储系统的结构示意图;
20.图3为本发明实施例提供的基于raft协议的数据处理方法的实现流程示意图一;
21.图4为本发明实施例提出的基于raft协议的数据处理方法的实现流程示意图二;
22.图5为本发明实施例提供的基于raft协议的数据处理方法的实现流程示意图三;
23.图6为本发明实施例提供的基于raft协议的数据处理方法的实现流程示意图四;
24.图7为本发明实施例提供的基于raft协议的数据处理方法的实现流程示意图五;
25.图8为本发明实施例提供的基于raft协议的数据处理方法的实现流程示意图六;
26.图9为本发明实施例提供的基于raft协议的数据处理方法的实现流程示意图七;
27.图10为本发明实施例提供的基于raft协议的数据处理方法的实现流程示意图八;
28.图11为本发明实施例提出的分布式存储系统执行数据处理方法的流程示意图;
29.图12为本发明实施例提出的基于raft协议的数据处理设备的组成结构示意图一;
30.图13为本发明实施例提出的基于raft协议的数据处理设备的组成结构示意图二;
31.图14为本发明实施例提出的基于raft协议的数据处理设备的组成结构示意图三;
32.图15为本发明实施例提出的基于raft协议的数据处理设备的组成结构示意图四。
具体实施方式
33.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
34.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
35.在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
36.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
37.对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
38.1)分布式存储:分布式存储是一种数据存储技术,通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。即分布式存储系统,是将数据分散存储在多台独立的设备上。基于传统的网络存储系统是采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。可见,分布式存储系统通常通过维护多个副本来进行容错,提高系统的可用性。
39.2)raft协议:raft协议是一种分布式一致性协议,用于在分布式存储系统中,维护多个副本的一致性。例如,在一个具有一致性的性质的集群里面,利用raft协议可以使同一时刻所有的结点对存储在其中的某个值都有相同的结果,即对其共享的存储保持一致。集群具有自动恢复的性质,当少数结点失效的时候不影响集群的正常工作,当大多数集群中的结点失效的时候,集群则会停止服务(不会返回一个错误的结果)。可见,raft协议是用来保证即使在部分(确切地说是小部分)副本宕机的情况下,系统仍然能正常对外提供服务。raft协议通常基于replicated state machines,即所有结点都从同一个state出发,都经过同样的一些操作序列(log),最后到达同样的state。
40.其中,raft协议的每个节点都会处于三种状态之一:leader(主节点)、follower(从节点)、candidate(候选节点)。
41.leader:所有请求的处理者,leader接受client(客户端)的更新请求,本地处理后再同步至多个其他从节点;
42.follower:请求的被动更新者,从leader接受更新请求,然后写入本地日志文件。
43.candidate:如果follower在一段时间内没有收到leader的心跳信号,则判断leader可能已经故障,此时启动选主过程,此时该节点会变成candidate状态,直到选主结束。
44.3)远程直接数据存取(remote direct memory access,rdma)技术:通过rdma,本端节点可以“直接”访问远端节点的内存。所谓直接,指的是可以像访问本地内存一样,直接将数据通过网络传送到远程节点的内存中,绕过传统以太网复杂的传输控制协议(transmission control protocol,tcp)/网际互联协议(internet protocol,ip)网络协议栈读写远端内存,可以轻易的实现超低延时的数据处理、超高吞吐量传输,不需要远程节点中央处理器(central processing unit,cpu)等资源的介入,不必因为数据的处理和迁移耗费过多的资源。
45.4)持久化内存:也叫非易失性内存(non

volatile memory,nvm)或内存级存储器(storage class memory,scm),支持字节寻址(byte

addressable)、可以通过cpu指令直接进行操作、断电后数据不丢失的存储硬件。
46.目前,raft协议已经广泛应用于很多领域,主要的作用是维护多节点间的数据一致性,包括应用至分布式网络进行分布式存储。
47.目前按照raft协议进行数据分布式存储的具体过程包括:
48.leader:leader通过append message向follower发送数据,并在接收到多数follower的成功返回响应后,确定该数据成功提交,此时leader可以返回成功响应到客户端。
49.follower:follower收到leader发送的报文之后,可以进行持久化存储,并将结果返回给leader,并在收到leader下次的消息报文即心跳数据后,进行日志应用logapply,也就是告知上层应用该数据已经被保存好,上层应用可以调用该数据进行一些相关处理。
50.例如,图1为相关技术中基于raft协议的数据处理方法的流程示意图,如图1所示,主节点的网络接口控制器(network interface controller,nic)与从节点的nic先建立通信连接。当主节点接收到客户端请求(sa1)时,利用append message消息携带数据并通过nic将数据发送至从节点的nic(sa2),从节点接收到该数据(sa3)后,将数据写入持久化内存中(sa4);并通过nic向主节点发送数据写入成功的回应消息,主节点接收到该成功回应(sa6)之后,判断是否超过半数以上的从节点回应成功(sa7)?如果没超过,那么继续进行回应消息的接收,直至超过半数以上,或者表明此次数据提交至从节点失败。如果超过表示数据提交从节点成功,即数据一致性存储成功。进一步的,主节点可以基于当前数据的编号更新数据成功提交序号(sa8),并通过nic向从节点发送心跳数据(sa9)。
51.进一步的,从节点收可以在收到该心跳数据后,判断该心跳数据中是否有数据对应的提交序号(sa10)?如果否,则继续等待接收数据,如果是,则对写入持久化内存的数据进行日志应用logapply(s11)。
52.可见,相关技术中基于raft协议的数据处理方法在进行提交数据时需要等待follower的成功回应消息,并达到半数以上通过时才表示数据已经提交成功,如果follower不能及时返回成功回应消息,那么将导致整个数据传输系统吞吐下降的缺陷,使得数据传输延迟较高。
53.本发明实施例提供一种基于raft协议的数据处理方法及装置、设备、计算机存储介质,作为主节点的数据处理设备配置第一rdma模块,主节点可以接收当前任务请求;其中,当前任务请求携带当前任务数据;响应当前任务请求,按照raft协议利用第一rdma模块向从节点的scm模块发送当前任务数据的写指令。对应的,作为从节点的数据处理设备配置第二rdma模块和scm模块,从节点利用第二rdma模块接收主节点发送的任务数据的写指令;响应写指令,将任务数据写入scm模块;当确定scm模块中存在任务数据对应的当前数据成功提交序号时,将任务数据确定为可应用数据。
54.如此,主节点可以利用rdma模块基于raft协议和rdma报文直接将数据写入从节点的内存,无需等待从节点的返回响应,无需从节点的cpu参与,从而进一步提高了系统吞吐率,数据传输效率更高。
55.本发明实施例提供的基于raft协议的数据处理方法应用于基于raft协议的数据处理设备中。下面说明本发明实施例提供的基于raft协议的数据处理设备的示例性应用,本发明实施例提供的基于raft协议的数据处理设备可以实施任何具有数据存储功能的设备,如手机、笔记本电脑,平板电脑,台式计算机,服务器、虚拟机、智能电视、车载设备、可穿
戴设备、工业设备以及云端设备等。
56.下面,将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
57.本发明一实施例提供了一种基于raft协议的数据处理方法,应用于如图2所示的分布式存储系统100,该分布式存储系统包括作为主节点的数据处理设备10和作为从节点的数据处理设备20。设备10设置第一rdma模块11;设备20设置第二rdma模块21和scm模块22。设备10的第一rdma模块11用于向scm模块22发送数据的写指令;设备20的第二rdma模块21用于接收设备10发送的数据的写指令,并将数据写入scm模块22。
58.图3为本发明实施例提出的基于raft协议的数据处理方法的实现流程示意图一,如图3所示,在本发明的实施例中,主节点执行基于raft协议的数据处理的方法可以包括以下步骤:
59.s101、接收当前任务请求;其中,当前任务请求携带当前任务数据。
60.在本发明实施例中,主节点可以接收携带任务数据的任务请求。
61.应理解,在本发明实施例中,当前任务请求可以是主节点接收到的客户端发送的请求,当前任务数据即任务请求中携带的数据值。该请求可以被看作数据写请求或者数据变更请求,该请求中携带的数据被看作写入的新的数据或者变更数据。例如,从客户端写入一个新数据值到分布式存储系统中的服务节点。
62.需要说明的是,在本发明实施例中,在客户端发起数据变更,需要写入一个新值至分布式存储系统中的服务节点时,客户端可以先连接主节点,并向主节点发送携带变更数据的写请求。也就是说,客户端可以将所有携带变更数据的请求先发送给系统中的主节点。
63.应理解,在本发明的实施例中,客户端可以是与主节点不同的其他设备,如手机、笔记本电脑,平板电脑,台式计算机、服务器、虚拟机、智能电视、车载设备、可穿戴设备、工业设备等。
64.在一些实施例中,主节点可以接收客户端发送的多个任务请求,并按照时间顺序依次将该多个任务请求以消息队列的形式置于缓冲区。
65.在一些实施例中,主节点可以接收客户端发送的一组任务请求,该组任务请求包含多个请求;主节点可以对这多个请求进行合并,打包生成一个任务请求包。或者主节点可以直接接收客户端发送的任务请求包;其中,该任务请求包中包含多个请求。
66.在一些实施例中,主节点可以接收客户端发送的包含多个请求的一组任务请求;其中,该多个请求对应有同一个事物号,基于该同一个事物号使得多个请求之间是相互关联的,其中一个任务请求携带的变更数据写入分布式存储系统中的服务节点失败,那么与之关联的所有任务请求都同时失败。反之,一个任务请求的数据写入成功,那么其他与之关联的任务请求的数据同时成功。
67.进一步的,在本发明实施例中,主节点在收到客户端发送的携带任务数据的请求之后,可以进一步向从节点写入该任务数据。
68.s102、响应当前任务请求,按照raft协议利用第一rdma模块向从节点的scm模块发送当前任务数据的写指令。
69.在本发明实施例中,主节点在收到任务请求之后,可以进一步响应该请求,直接向从节点的scm发送数据的写指令。
70.可以理解的是,rdma模块支持远程直接内存数据存取,因此,在发明实施例中,主节点可以设置rdma模块,使得主节点能够支持将客户端发送的数据进行向从节点的直接内存数据存取。
71.另外,从节点也需设置rdma模块,主节点和从节点在基于rdma模块建立通信之后,便可实现将数据直接写入从节点的内存。
72.进一步的,为了使得数据断电后不会丢失,从节点可以设置持久化内存模块,即scm模块,如此,主节点便可直接向从节点的scm模块发送数据的写指令,也就是无需经cpu参与,直接向从节点的scm写数据。
73.综上所述,主节点与从节点同时配置rdma模块,并基于rdma模块建立通信连接以完成主节点将数据直接写入从节点的scm模块中。
74.应理解,本发明实施例是按照raft协议将数据写入系统中的服务节点,因此,接收到客户端每一个任务请求(如数据变更)之后,响应该请求,主节点都会将该每一次变更数据作为一个条目先加入到主节点的日志中,该条目对应有日志编号,这时日志的状态为未提交状态,接下来主节点需要通过进行条目的提交,即将该变更数据复制到所有从节点。
75.具体的,主节点可按照raft协议通过append message消息的方式来实现复制。更进一步的,主节点可以通过append message消息形式,并基于rdma模块支持的rdma write技术进行条目的提交,即将每一次变更数据直接写入从节点的scm模块,以实现数据至从节点的复制。
76.由此可见,本发明实施例提供的应用于主节点的基于raft协议的数据处理方法,主节点可以按照raft协议利用rdma模块将数据直接写入从节点的scm模块,无需cpu参与,从而进一步提高了系统吞吐率,数据传输效率更高。
77.在本发明的另一些实施例中,图4为本发明实施例提供的基于raft协议的数据处理方法的实现流程示意图二,如图4所示,响应所述任务请求,按照所述raft协议利用所述第一rdma模块向从节点的scm模块发送所述任务数据的写指令之后,即步骤102之后,主节点执行基于raft协议的数据处理的方法可以包括以下步骤:
78.s103、响应于向满足预设数量的从节点成功发送任务数据的写指令,将任务数据对应的任务编号确定为当前数据成功提交序号。
79.可以理解的是,由于主节点是基于rdma模块支持的rdma write技术直接将数据写入从节点的内存,那么主节点只要确定数据写指令发送成功,那么便可以确定数据成功写入从节点。
80.另外,rdma模块在进行空间信息的交互时,如果任务完成,会将这个完成的任务置于完成队列(completion queue,cq)中,主节点可以基于底层报文查询该完成队列cq,便可知道当前成功的任务都有哪些。
81.在本发明实施例中,主节点在进行数据至从节点的写操作时,主节点无需等待从节点返回的数据成功写入的响应消息,主节点可以通过完成队列cq,确认当前任务数据的写指令发送成功的从节点数目是否满足预设数量,进而确定任务数据是否在分布式存储系统中复制成功。
82.具体的,主节点在向满足预设数量的从节点成功发送任务数据的写指令之后,如果主节点基于完成队列cq确定已经向满足预设数量的从节点成功发送该任务数据的写指
令,那么表明该客户端发送的变更数据已经成功复制到分布式存储系统的服务节点。
83.需要说明的是,预设数量可以指整个分布式存储系统中半数以上的节点。即主节点在确定向超过半数以上的从节点成功发送任务数据的写指令之后,主节点便可确定任务数据已经成功复制至分布式系统中超过半数以上的从节点,即本次客户端发送的变更数据成功复制到分布式存储系统。
84.需要说明的是,在本发明实施例中,任务数据对应的任务编号指日志中,该任务数据的条目所对应的日志编号。数据成功提交序号便是指数据复制成功的条目的序号。
85.进一步的,主节点在确定客户端发送的变更数据成功复制至分布式存储系统之后,即本次任务数据对应的条目提交成功,主节点可以将上述条目对应的日志编号确定为当前数据成功提交序号即commit号。
86.例如,日志中包括多个变更数据分别对应的多个条目,每个条目都具有其编号,如1、2、3、4以及5,然后当1的变更数据成功复制至超过半数以上的从节点中,那么表明编号为1的变更数据成功复制至分布式存储系统,那么当前数据成功提交序号更新为1;进一步的,当2的变更数据成功复制至超过半数以上的从节点中时,将当前数据成功提交序号更新为2。另外,如果3的变更数据没有成功复制至超过半数以上的从节点中时,当前数据成功提交序号依然为3。
87.进一步的,在本发明实施例中,主节点确定任务数据成功复制至分布式存储系统中的多数服务节点之后,主节点确定变更数据对应的条目提交成功,这时该条目所对应的日志状态为提交状态。
88.进一步的,在本发明实施例中,在获得当前数据成功提交序号之后,主节点可以进一步将该数据成功提交序号发送至任务数据成功写入的多数从节点中的每一个节点。
89.s104、利用第一rdma模块向满足预设数量的从节点中、每一从节点的每一所述scm模块发送当前数据成功提交序号的写指令。
90.在本发明实施例中,主节点在获得当前数据成功提交序号之后,可以通过rdma模块向任务数据写入成功的多个从节点中的每一个从节点的scm模块发送该数据成功提交序号的写指令,即利用rdma模块将数据成功提交序号直接写入从节点的scm模块中。
91.在一些实施例中,主节点可以通过raft协议中的append message消息形式,并基于rdma模块支持的rdma write技术来实现将数据成功提交序号写入从节点的scm模块。
92.其中,主节点可以向从节点单独发送当前数据成功提交序号的写指令,也可以将当前数据成功提交序号与下一条客户端发送的任务数据进行合并,并将合并后的内容通过append message消息形式,并利用rdma write技术写入从节点的scm模块。
93.应理解,在基于raft协议的分布式存储系统中,主节点可以定期触发心跳数据,告知从节点最新提交的日志中的条目编号。因此,在发明实施中,主节点在获得当前数据成功提交序号之后,主节点可以基于raft协议在下一个心跳数据中将该数据成功提交序号提供给从节点,即利用rdma write技术将当前数据成功提交序号直接写入从节点的scm模块,或者,利用rdma send技术将其发送给从节点;其中,该心跳数据中仅包含最新的数据成功提交序号。
94.进一步的,在本发明实施例中,主节点可以向客户端返回任务成功的提示消息。
95.进一步的,在本发明实施例中,主节点可以对成功写入多数从节点的当前任务数
据进行日志应用logapply,即确定该任务数据为可应用数据,以及告知上层应用数据已被有效存储至分布式存储系统中的多数服务节点,可被上层应用拿来进行一些相关处理。
96.可见,在本发明实施例中,主节点可以直接将数据直接写入从节点的持久化内存,以及直接通过底层报文确定数据写入成功,无需等待从节点发送的返回响应,减少通讯内容,降低了数据传输延迟。
97.基于上述实施例,在本发明的再一实施例中,图5为本发明实施例提供的基于raft协议的数据处理方法的实现流程示意图三,如图5所示,在本发明的实施例中,主节点执行基于raft协议的数据处理的方法可以包括以下步骤:
98.s201、接收多个任务请求,并将多个任务请求缓存至消息队列。
99.s202、在向从节点的scm模块,发送消息队列中的历史至少一个任务请求携带的至少一个任务数据的写指令之后,响应当前任务请求,利用第一rdma模块向从节点的scm模块发送当前任务数据的写指令。
100.应理解,为了克服raft协议需要严格保序,无法实现并发提交的缺陷,在本发明实施例中,主节点设置消息队列缓冲区,该缓冲区位于主节点的内存中。当主节点接收到客户端发送的任务请求时,主节点可以按照时间顺序依次将其放入消息队列缓冲区中。
101.进一步的,主节点可以基于上述消息队列实现对任务请求中携带的任务数据的并发提交。
102.具体的,主节点在没有确定,向超过预设数量(如半数以上)的从节点的scm模块,发送消息队列中的至少一个任务请求所携带的任务数据的写指令成功的情况下,主节点可以通过append message消息形式并基于rdma write技术继续向从节点的scm模块继续发送下一个任务请求所携带的任务数据的写指令。
103.也就是说,日志中按照编号依次排列的任务数据的条目中,编号靠前的至少一个任务数据对应的条目提交之后,该任务挂起,在没有确定其至少一个条目是否成功提交之前,主节点可继续提交下一个任务数据对应的条目。
104.可见,主节点按照队列方式缓存客户端发送的数据变更请求,并在执行客户端发送的当前数据变更请求时,无需等待该任务是否成功完成,可以继续基于客户端发起的下一个数据变更请求进行数据至从节点内存的写操作,即主节点可以依次提交多个请求,实现了数据的并发提交,进一步提高了系统吞吐率,数据传输效率更高。
105.基于上述实施例,在本发明的再一实施例中,图6为本发明实施例提出的基于raft协议的数据处理方法的实现流程示意图四,如图6所示,主节点执行基于raft协议的数据处理的方法可以包括以下步骤:
106.s301、接收多个从节点发送的多个数据待写入虚拟地址。
107.s302、根据任务数据的长度,从每一从节点的数据待写入虚拟地址中确定第一虚拟地址。
108.s303、利用第一rdma模块向每一从节点的每一scm模块中、第一虚拟地址对应的第一物理地址发送任务数据的写指令。
109.在本发明实施例中,主节点可以实时或者定期的接收到从节点以私有报文形式或者自定义命令方式发送的数据待写入虚拟地址,即数据可用空闲空间,也就是从节点中scm模块的物理地址所对应的虚拟地址,主节点可以主动的从该数据可用空闲空间中为当前任
务数据确定出相应的存储位置。
110.具体的,主节点可以确定当前任务数据对应的长度,根据数据长度从数据待写入虚拟地址中计算出当前任务数据对应的虚拟地址空间即第一虚拟地址。
111.可选的,主节点也可以按照预设地址分配规则从数据待写入虚拟地址中确定当前任务数据对应的第一虚拟地址,如预设地址分配规则可以是每个数据均分配1k空间。
112.进一步的,确定出数据对应的第一虚拟地址之后,主节点便确定当前任务数据写入的虚拟内存位置,那么主节点可以将任务数据写入scm模块中、与该虚拟地址对应的物理地址中,即直接向scm模块中、与该虚拟地址对应的物理地址中发送当前任务数据的写指令。
113.可见,在本发明实施例中,主节点基于rdma模块支持的rdma write技术进行任务数据的写操作时,主节点可以主动确定数据的内存写入位置,并基于该内存写入位置执行数据至从节点scm模块的写操作。
114.在本发明的另一些实施例中,图7为本发明实施例提供的基于raft协议的数据处理方法的实现流程示意图五,如图7所示,从节点执行基于raft协议的数据处理的方法可以包括以下步骤:
115.s401、利用第二rdma模块接收主节点发送的任务数据的写指令。
116.s402、响应写指令,将任务数据写入scm模块。
117.s403、当确定scm模块中存在任务数据对应的当前数据成功提交序号时,将任务数据确定为可应用数据。
118.需要说明的是,在本发明实施例中,主节点与从节点同时配置rdma模块,基于rdma模块建立通信连接可以实现主节点将数据直接写入从节点的scm模块中,即直接基于主节点发送的写指令进行任务数据的写持久化内存。
119.应理解,在主节点基于rdma模块主动向从节点的scm模块发送数据的写指令之后,从节点可以利用rdma模块接收到该数据的写指令,无需经cpu参与,可以响应该写指令直接将数据写入持久化内存,即scm模块。
120.可选的,在本发明实施例中,任务数据可以是客户端一个任务请求对应的任务数据,也可以是将包括多个请求的一组任务请求打包之后的相应任务数据;还可以是一组具有相同事物号且具有关联关系的任务请求中、其中任意一个任务请求对应的任务数据。
121.进一步的,在本发明实施例中,基于s103至s104中如果主节点确定任务数据已经成功复制至超过半数以上的从节点中,那么主节点可以向从节点的scm模块发送数据成功提交序号的写指令的特征可知,从节点可以定期对scm模块写入的数据成功提交序号进行查询,只要从节点从scm模块中查询到最新写入的任务数据对应的数据成功提交序号时,从节点可以该任务数据进行日志应用logapply,即确定该任务数据确定为可应用数据,从节点可以告知上层应用数据已被有效存储至分布式存储系统中的多数服务节点,可被上层应用拿来进行一些相关处理。
122.在另一些实施例中,从节点还可以接收主节点发送的心跳数据,从节点可以对该心跳数据中携带的数据成功提交序号进行确定,如果为最新写入的任务数据对应的数据成功提交序号,那么从节点可以对该数据执行日志应用logapply,即确定该任务数据确定为可应用数据,可被上层应用拿来进行一些相关处理。
123.可见,在本发明实施例中,从节点无需cpu参与,可按照主节点发送的写指令将数据直接写入持久化内存,且无需向主节点返回响应消息,减少通讯内容,降低了数据传输延迟。
124.基于上述实施例,图8为本发明实施例提供的基于raft协议的数据处理方法的实现流程示意图六,如图8所示,从节点执行基于raft协议的数据处理的方法可以包括以下步骤:
125.s601、对scm模块对应的物理地址进行内存映射处理,得到物理地址对应的虚拟地址。
126.s602、将虚拟地址注册至所述第二rdma模块,以使第二rdma模块通过访问虚拟地址将任务数据写入scm模块中的物理地址。
127.可以理解的是,若要实现本发明中主节点利用rdma模块将数据直接写入从节点的持久化内存,需要基于主节点rdma模块与从节点的rdma模块的通信实现数据的写持久化内存,那么首先需要将scm模块对应的存储空间映射至设备操作系统的虚拟内存中,并把虚拟内存注册到rdma模块上。这样,rdma模块才可以有权限访问这部分虚拟内存区域。
128.可见,在本发明实施例中,在进行数据处理之前需要先完成内存映射以及注册。
129.具体的,在本发明实施例中,从节点可以先对scm模块对应的物理地址进行内存映射处理,将其映射到设备本机内存空间,也就是虚拟地址空间,进而建立了物理地址与虚拟地址的映射关系,如地址映射表,以便于得到物理地址对应的虚拟地址。
130.可选的,可以通过dev

dax或者fs

dax的方式,将scm模块的全部空间或者部分空间映射到设备的虚拟地址空间。
131.进一步的,完成物理地址空间和虚拟地址空间的映射之后,从节点可以将虚拟地址空间的全部或者部分空间注册至本机rdma模块,注册成功之后,rdma模块便可以得到对应的虚拟地址以及注册返回的mr(该mr可认为是“钥匙”,用于控制和管理内存的访问权限),进而具有了访问该虚拟地址空间的权限。
132.其中,rdma模块可以基于注册返回的mr有权限访问虚拟地址空间,实现将数据写入scm模块中的物理地址;应理解,rdma模块把日志写到内存虚拟地址中,实际上是将数据写入该虚拟地址对应的物理地址即持久化内存中。
133.需要说明的是,在本发明实施例中,从节点在完成内存的映射以及将其注册至rdma模块之后,从节点还可以通过rdma模块以私有报文的形式将本机对应的虚拟地址以及注册返回的mr提供给其他的节点(不限制于主节点或其他从节点)。
134.其中,从节点可以设置定时模块,如定时器,可以实时或者定期将当前空闲空间即数据待写入虚拟地址以自定义命令或者私有报文的形式发送给主节点。
135.可见,从节点可以通过将scm模块的物理地址空间映射至虚拟内存,并注册至rdma模块上,使得rdma模块能够通过内存访问将任务数据写入scm模块中的物理地址。
136.基于上述实施例,图9为本发明实施例提供的基于raft协议的数据处理方法的实现流程示意图七,如图9所示,从节点执行基于raft协议的数据处理的方法可以包括以下步骤:
137.s701、利用第二rdma模块接收主节点发送的第一写虚拟地址。
138.s702、从scm模块中确定第一写虚拟地址对应的第一写物理地址。
139.s703、利用第二rdma模块将任务数据写入第一写物理地址。
140.可以理解的是,主节点需要通过从节点中的rdma模块先接收数据的写指令,并进行数据的写持久化内存,因此,主节点需要将数据在从节点中的内存地址发送给从节点,以使从节点基于该内存地址进行任务数据的写持久化内存。
141.在本发明实施例中,从节点在利用rdma模块接收主节点发送的任务数据的写指令的同时,还可以利用rdma模块接收主节点发送的任务数据对应的第一虚拟地址。
142.进一步的,rdma模块可以基于上述虚拟地址与物理地址的映射关系,如地址映射表,从scm模块中确定出与该第一虚拟地址对应的第一物理地址,进而将数据写入第一物理地址中,完成数据写持久化内存。
143.由此可见,从节点可以接收主节点发送的数据以及主节点为该数据确定的虚拟地址,并基于地址映射关系将该任务数据写入持久化内存。
144.基于上述实施例,图10为本发明实施例提供的基于raft协议的数据处理方法的实现流程示意图八,如图10所示,从节点执行基于raft协议的数据处理的方法可以包括以下步骤:
145.s801、利用第二rdma模块接收主节点发送的当前数据成功提交序号的写指令。
146.s802、响应写指令,将当前数据成功提交序号写入scm模块。
147.在本发明实施例中,基于s103和s104,在主节点确定向满足预设数量的从节点发送数据的写指令成功,并向从节点发送数据成功提交序号的写指令之后,从节点可以将数据成功提交序号直接写入从节点的scm模块中,即基于主节点发送的写指令进行数据成功提交序号的写持久化内存。
148.具体的,从节点可以利用rdma模块接收到主节点发送的当前数据成功提交序号的写指令,同时可以利用rdma模块接收到主节点为该序号从数据待写入虚拟地址中确定出的目标虚拟地址即第二虚拟地址,进而rdma模块可以基于虚拟地址与物理地址的映射关系,如地址映射表,从scm模块中确定出与该第二虚拟地址对应的第二物理地址,进而将当前数据成功提交序号写入第二物理地址中,完成提交序号写持久化内存。
149.由此可见,从节点可以接收主节点发送的当前数据成功提交序号以及主节点为该序号确定的虚拟地址,并基于地址映射关系将该序号写入持久化内存。
150.示例性的,图11为本发明实施例提出的分布式存储系统执行数据处理方法的流程示意图,分布式系统中的主节点和从节点均设置有具备rdma引擎模块的以太网卡,即(rdma network interface controller,rnic),主节点中rnic与从节点中的rnic建立通信连接,用于实现空间信息的交互。
151.如图11所示,主节点接收客户端请求(sb1),通过append message消息携带数据并利用rdma write技术,通过rnic将数据发送至从节点的rnic发送数据(sb2)。此时不用等待从节点的数据成功响应,而是基于rdma底层报文,如查询完成队列cq得到向从节点是否成功发送数据的消息(sb3),并且基于该完成队列cq判断是否超过半数以上的从节点发送成功(sb4)?如果否,那么继续查询cq完成队列,直至超过半数以上;或者表明此次数据提交至从节点失败。如果超过表示数据提交从节点成功,即数据一致性存储成功。进一步的,主节点可以基于当前任务数据的编号更新数据成功提交序号(sb5),并以append message消息的方式利用rdma write技术,通过rnic发送至从的rnic。与此同时,主节点也可以对该数据
进行logapply(sb6)。
152.另一方面,从节点的rnic将主节点发送的数据直接写入持久化内存中(sb7),无需cpu的参与,也不想主节点进行任何回应消息的反馈,进一步的,从节点可以定期检查持久化内存中写入的数据成功提交序号(sb8),并判断该该持久化内存中是否有新提交的任务数据对应的提交序号(sb9),如果是,则并相应的数据进行日志应用(sb10);如果否,继续定期检查持久化内存。
153.综上所述,通过在分布式存储系统中的主节点和从节点设置rdma模块,主节点可以利用rdma write技术将数据直接写入从节点的持久化内存。无需等待从节点的返回响应,无需从节点的cpu参与,从而进一步提高了系统吞吐率,数据传输效率更高。
154.基于上述实施例,在本发明的在一实施例中,图12为本发明实施例提出的基于raft协议的数据处理设备的组成结构示意图一,如图12所示,所述基于raft协议的数据处理设备10包括接收单元12、发送单元13、缓存单元14、确定单元15,
155.所述接收单元12,用于接收当前任务请求;其中,所述当前任务请求携带当前任务数据;
156.所述发送单元13,用于响应所述当前任务请求,按照所述raft协议利用所述第一rdma模块向从节点的scm模块发送所述当前任务数据的写指令。
157.在一些实施例中,所述接收单元12,还用于接收多个所述任务请求;
158.所述缓存单元14,用于将所述多个任务请求缓存至消息队列;
159.所述发送单元13、还用于在向所述从节点的scm模块,发送所述消息队列中的历史至少一个任务请求携带的至少一个任务数据的写指令之后,响应所述当前任务请求,利用所述第一rdma模块向所述从节点的scm模块发送所述当前任务数据的写指令。
160.在一些实施例中,所述接收单元12,还用于接收多个从节点发送的多个数据待写入虚拟地址;
161.所述确定单元15,用于根据所述任务数据的长度,从每一所述从节点的所述数据待写入虚拟地址中确定第一虚拟地址;
162.所述发送单元13,具体用于利用所述第一rdma模块向每一所述从节点的每一所述scm模块中、所述第一虚拟地址对应的第一物理地址发送所述任务数据的写指令。
163.在一些实施例中,所述确定单元15,还用于在响应所述任务请求,按照所述raft协议利用所述第一rdma模块向从节点的scm模块发送所述任务数据的写指令之后,响应于向满足预设数量的从节点成功发送所述任务数据的写指令,将所述任务数据对应的任务编号确定为当前数据成功提交序号;
164.所述发送单元13,还用于利用所述第一rdma模块向所述满足预设数量的从节点中、每一所述从节点的每一所述scm模块发送所述当前数据成功提交序号的写指令。
165.基于上述实施例,在本发明的在一实施例中,图13为本发明实施例提出的基于raft协议的数据处理设备的组成结构示意图二,如图13所示,所述基于raft协议的数据处理设备20包括接收单元23、写单元24、确定单元25、内存映射单元26以及注册单元27,
166.所述接收单元23,用于利用所述第二rdma模块接收主节点发送的任务数据的写指令;
167.所述写单元24,用于响应所述写指令,将所述任务数据写入所述scm模块;
168.所述确定单元25,用于当确定所述scm模块中存在所述任务数据对应的当前数据成功提交序号时,将所述任务数据确定为可应用数据。
169.在一些实施例中,所述接收单元23,,还用于利用所述第二rdma模块接收主节点发送的所述当前数据成功提交序号的写指令;
170.所述写单元24,还用于响应所述写指令,将所述当前数据成功提交序号写入所述scm模块。
171.在一些实施例中,所述内存映射单元26,用于对所述scm模块对应的物理地址进行内存映射处理,得到所述物理地址对应的虚拟地址;
172.所述注册单元,用于将所述虚拟地址注册至所述第二rdma模块,以使所述第二rdma模块通过访问所述虚拟地址将所述任务数据写入所述scm模块中的所述物理地址。
173.在一些实施例中,所述接收单元23,还用于利用所述第二rdma模块接收所述主节点发送的第一写虚拟地址;
174.所述写单元24,具体用于从所述scm模块中确定所述第一写虚拟地址对应的第一写物理地址;以及利用所述第二rdma模块将所述任务数据写入所述第一写物理地址。
175.在本发明的实施例中,进一步地,图14为本发明提出的基于raft协议的数据处理设备的组成结构示意图三,如图14所示,本发明实施例提出的基于raft协议的数据处理设备10还可以包括第一rdma模块11、处理器16、存储有处理器16可执行指令的存储器17,进一步地,基于raft协议的数据处理设备10还可以包括通信接口18,和用于连接处理器16、存储器17以及通信接口18的总线19。
176.在本发明的实施例中,上述处理器16可以为特定用途集成电路(application specific integrated circuit,asic)、数字信号处理器(digital signal processor,dsp)、数字信号处理装置(digital signal processing device,dspd)、可编程逻辑装置(programmable logic device,pld)、现场可编程门阵列(field programmable gate array,fpga)、中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本发明实施例不作具体限定。基于raft协议的数据处理设备10还可以包括存储器17,该存储器17可以与处理器16连接,其中,存储器17用于存储可执行程序代码,该程序代码包括计算机操作指令,存储器17可能包含高速ram存储器,也可能还包括非易失性存储器,例如,至少两个磁盘存储器。
177.在本发明的实施例中,总线19用于连接通信接口18、处理器16以及存储器17以及这些器件之间的相互通信。
178.在本发明的实施例中,存储器17,用于存储指令和数据。
179.进一步地,在本发明的实施例中,上述处理器16,用于接收当前任务请求;其中,所述当前任务请求携带当前任务数据;响应所述当前任务请求,按照所述raft协议利用所述第一rdma模块向从节点的scm模块发送所述当前任务数据的写指令。
180.在实际应用中,上述存储器18可以是易失性存储器(volatile memory),例如随机存取存储器(random

access memory,ram);或者非易失性存储器(non

volatile memory),例如只读存储器(read

only memory,rom),快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid

state drive,ssd);或者上述种类的存储器的组合,并向处
理器16提供指令和数据。
181.在本发明的实施例中,进一步地,图15为本发明提出的基于raft协议的数据处理设备的组成结构示意图四,如图15所示,本发明实施例提出的基于raft协议的数据处理设备20还可以包括第二rdma模块21、scm模块22、处理器28、存储有处理器28可执行指令的存储器29,进一步地,基于raft协议的数据处理设备20还可以包括通信接口210,和用于连接处理器28、存储器29以及通信接口210的总线211。
182.在本发明的实施例中,上述处理器28可以为特定用途集成电路(application specific integrated circuit,asic)、数字信号处理器(digital signal processor,dsp)、数字信号处理装置(digital signal processing device,dspd)、可编程逻辑装置(programmable logic device,pld)、现场可编程门阵列(field programmable gate array,fpga)、中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本发明实施例不作具体限定。基于raft协议的数据处理设备20还可以包括存储器29,该存储器29可以与处理器28连接,其中,存储器29用于存储可执行程序代码,该程序代码包括计算机操作指令,存储器29可能包含高速ram存储器,也可能还包括非易失性存储器,例如,至少两个磁盘存储器。
183.在本发明的实施例中,总线211用于连接通信接口210、处理器28以及存储器29以及这些器件之间的相互通信。
184.在本发明的实施例中,存储器29,用于存储指令和数据。
185.进一步地,在本发明的实施例中,上述处理器28,用于利用所述第二rdma模块接收主节点发送的任务数据的写指令;响应所述写指令,将所述任务数据写入所述scm模块;当确定所述scm模块中存在所述任务数据对应的当前数据成功提交序号时,将所述任务数据确定为可应用数据。
186.在实际应用中,上述存储器29可以是易失性存储器(volatile memory),例如随机存取存储器(random

access memory,ram);或者非易失性存储器(non

volatile memory),例如只读存储器(read

only memory,rom),快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid

state drive,ssd);或者上述种类的存储器的组合,并向处理器28提供指令和数据。
187.另外,在本实施例中的各功能模块可以集成在一个推荐单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
188.集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
189.本发明实施例提供了一种基于raft协议的数据处理设备,作为主节点的数据处理设备配置第一rdma模块,主节点可以接收当前任务请求;其中,当前任务请求携带当前任务数据;响应当前任务请求,按照raft协议利用第一rdma模块向从节点的scm模块发送当前任务数据的写指令。对应的,作为从节点的数据处理设备配置第二rdma模块和scm模块,从节点利用第二rdma模块接收主节点发送的任务数据的写指令;响应写指令,将任务数据写入scm模块;当确定scm模块中存在任务数据对应的当前数据成功提交序号时,将任务数据确定为可应用数据。如此,可以利用rdma模块直接将数据写入从节点的内存,无需等待从节点的返回响应,无需从节点的cpu参与,从而进一步提高了系统吞吐率,数据传输效率更高。
190.本发明实施例提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上所述的应用于主节点或者从节点的基于raft协议的数据处理方法。
191.具体来讲,本实施例中的一种基于raft协议的数据处理方法对应的程序指令可以被存储在光盘,硬盘,u盘等存储介质上。
192.当存储介质中的与一种应用于主节点的基于raft协议的数据处理方法对应的程序指令被一电子设备读取或被执行时,包括如下步骤:
193.接收当前任务请求;其中,所述当前任务请求携带当前任务数据;
194.响应所述当前任务请求,按照所述raft协议利用所述第一rdma模块向从节点的scm模块发送所述当前任务数据的写指令。
195.当存储介质中的与一种应用于从节点的基于raft协议的数据处理方法对应的程序指令被一电子设备读取或被执行时,包括如下步骤:
196.利用所述第二rdma模块接收主节点发送的任务数据的写指令;
197.响应所述写指令,将所述任务数据写入所述scm模块;
198.当确定所述scm模块中存在所述任务数据对应的当前数据成功提交序号时,将所述任务数据确定为可应用数据。
199.相应地,本发明实施例再提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,该计算机可执行指令用于实现本发明实施例提供的应用于主节点或者从节点的基于raft协议的数据处理方法中的步骤。
200.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
201.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的实现流程示意图和/或方框图来描述的。应理解可由计算机程序指令实现流程示意图和/或方框图中的每一流程和/或方框、以及实现流程示意图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
202.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指
令装置的制造品,该指令装置实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
203.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1