一种基于节点队列的消息读写方法及节点设备技术

技术编号:16974938 阅读:41 留言:0更新日期:2018-01-07 09:46
本发明专利技术的实施例提供一种基于节点队列的消息读写方法及节点设备,涉及通信技术领域,能够对现有节点集群中节点的消息处理能力进行线性扩展,提高节点的消息读写效率。该方法包括:第一节点接收客户端发送的第一写请求消息,该第一写请求消息中包含第一待写入消息和该第一待写入消息的消息类型;将第一待写入消息写入第一节点中与第一待写入消息的消息类型相匹配的第一节点队列;向第二节点发送第二写请求消息,用以请求第二节点将该第一待写入消息写入该第二节点中与第一待写入消息的消息类型相匹配的第一节点队列。

【技术实现步骤摘要】
一种基于节点队列的消息读写方法及节点设备
本专利技术涉及通信
,尤其涉及一种基于节点队列的消息读写方法及节点设备。
技术介绍
节点集群可以为客户端提供高可用、多冗余持久化存储的消息服务。一般的,节点集群是由多个节点组成,当节点集群在处理客户端发送的写请求时,通常会将待写入消息分配到节点集群的X个冗余节点中,来实现消息的多冗余存储。图1、2为现有的用于实现消息读写的节点集群系统的系统框图,现有的节点集群系统包括客户端和由多个节点组成的节点集群,每个节点都可以存储所有消息类型对应的数据。具体的,参照图1所示的消息写入流程可知,客户端随机的向节点集群中的一个节点(如图1中的Node1)发送写请求,并将该节点Node1作为代理节点,按照复制放置策略,通过节点Node1将该写请求发送至X个冗余节点,并确保有W个节点成功写入数据。但是,由于各冗余节点中消息的写入顺序不同,导致各冗余节点的数据可能存在暂时的不一致。因此,基于图2所示的消息读取流程可知,为了保证数据的一致性,节点集群会通过代理节点(如图1中的Node1)向确定存储有需要被读取的消息的拷贝数据的X个节点发送的读请求,等待R个节点返回所需的数据(满足CAP定理,即R>X-W),然后对所有返回数据进行合并,来保证数据的最终一致性。但是,由于节点集群中的X个冗余节点会保存同一消息类型的同一消息的消息数据,从而导致在对一种消息类型的消息的消息数据进行读操作或写操作时需要对存有该消息的消息数据的所有节点进行操作,使得节点处理能力无法线性扩展,造成了资源的浪费。此外,为了保证数据的最终一致性,根据CAP定理,节点在查询数据时需要查询多个节点数据,并进行数据的合并等操作,降低了数据查询的效率。
技术实现思路
本专利技术的实施例提供一种基于节点队列的消息读写方法及节点设备,能够对现有节点集群中节点的消息处理能力进行线性扩展,提高节点的消息读写效率。为达到上述目的,本专利技术的实施例采用如下技术方案:第一方面,提供一种基于节点队列的消息写入方法,该方法包括:第一节点接收客户端发送的第一写请求消息,该第一写请求消息中包含第一待写入消息和所述第一待写入消息的消息类型,然后,将该第一待写入消息写入第一节点中与第一待写入消息的消息类型相匹配的第一节点队列,该第二写请求消息用以请求第二节点将第一待写入消息写入第二节点中与第一待写入消息的消息类型相匹配的第一节点队列,第二写请求消息包括第一节点标识、第一待写入消息和第一待写入消息的消息类型,该第二节点为第一节点的备用节点。第二方面,提供一种第一节点设备,该第一节点设备包括:接收模块,用于接收客户端发送的第一写请求消息,该第一写请求消息中包含第一待写入消息和所述第一待写入消息的消息类型;写入模块,用于将第一待写入消息写入第一节点中与第一待写入消息的消息类型相匹配的第一节点队列;发送模块,用于向第二节点发送第二写请求消息,用以指示第二节点将该第一待写入消息写入第二节点中的第一节点队列;其中,第二写请求消息包括第一节点标识、第一待写入消息和第一待写入消息的消息类型,该第二节点为第一节点的备用节点。在上述任一方面提供的技术方案中,第一节点在接收到客户端发送的写请求消息后,通过将待写入消息写入第一节点中与该第一待写入消息的消息类型及第一节点相匹配的第一节点队列中,使得同一消息的所有消息数据全部存入一个节点中,使得该第一节点所处节点集群中的每个节点,可以同时接收同一消息类型的不同消息,这样相比于现有的节点在进行消息写入操作时,会将待写入消息分配到多个备用节点中,使得多个节点同一时间仅能处理同一消息,本方案对节点集群中各节点的数据处理能力进行了线性扩展。同时,本申请通过将待写入消息进行备份(即将该待写入消息备份至备用节点或次备用节点中),从而保证节点在进行数据读取时,提高消息数据的查询效率。可选的,上述任一方面的一种可能的设计中,本专利技术实施例中的第一节点所在的节点集群由N个节点组成,每个节点包含N*M个节点队列,其中,每种消息类型对应N个节点队列,N个节点队列分别与节点集群中的N个节点相对应,M为消息类型的数量。可选的,上述任一方面或上述任一方面的任一种可能的设计中,第一方面所提供的方法在将该第一待写入消息写入所述第一节点中的第一节点队列之前,还可以包括:将第一待写入消息的消息类型及第一节点标识与第一节点中包含的节点队列的队列标识进行匹配,确定第一节点中与第一待写入消息的消息类型及第一节点标识相匹配的第一节点队列。对应的,第二方面中的第一节点设备还包括:确定模块,用于将第一待写入消息的消息类型及第一节点标识与所述第一节点中包含的节点队列的队列标识进行匹配,确定第一节点中与第一待写入消息的消息类型及第一节点标识相匹配的第一节点队列。在该可选的实现方式中,对于第一方面和第二方面来说,通过为节点中包含的节点队列的队列标识与其存储的消息类型及对应的节点标识设置对应关系,从而为节点设备查找节点队列提供便利,提高消息写入效率。进一步可选的,上述的节点队列的队列标识是由所述节点队列所对应的消息类型标识和节点标识(例如,由<消息类型、节点标识>唯一标识节点队列)组成的。可选的,上述任一方面或上述任一方面的任一种可能的设计中,第一方面所提供的方法还包括:接收第三节点发送的第三写请求消息,根据第三写请求消息的指示将第二待写入消息写入第一节点中的第三节点队列。对应的,第二方面中的接收模块,还用于接收第三节点发送的第三写请求消息,该写入模块,还用于根据第三写请求消息的指示将第二待写入消息写入第一节点中与第二待写入消息的消息类型相匹配的第三节点队列。在该可选的实现方式中,对于第一方面和第二方面来说,本实施例中的第一节点为第三节点的备用节点,该第三写请求消息中包含第三节点标识、第二待写入消息和第二待写入消息的消息类型,用于指示第一节点对该第二待写入消息备份至该第一节点中与第二待写入消息的消息类型及第三节点相对应的第三节点队列。需要说明的是,在上述任一方面或上述任一方面的任一种可能的设计所提供的技术方案中的“节点队列”的命名是与其对应的节点相关的,即节点队列前添加的前缀“第一”“第二”为对应的节点名称中的“第一”“第二”。例如上述任一方面中的“第一节点队列”为第一节点对应的节点队列,若本专利技术实施例中的消息类型的数量为M,则第一节点中包含M个第一节点队列,每种消息类型对应一个第一节点队列。同理,第一节点中的第三节点队列为第三节点对应的节点队列,若本专利技术实施例中的消息类型的数量为M,则第一节点中包含M个第三节点队列。第三方面,提供一种基于节点队列的消息读取方法,包括:第一节点接收客户端发送的第一读请求消息,该第一读请求消息中包含请求读取的消息类型,然后,在该第一节点的节点队列中,查找与该请求读取的消息类型和该第一节点相匹配的第一节点队列,读取该第一节点队列中存储的消息数据,若从该第一节点队列中成功读取消息数据,则将读取的消息数据反馈至客户端。第四方面,提供一种第一节点设备,该第一节点设备包括:接收模块,用于接收客户端发送的第一读请求消息,该第一读请求消息中包含请求读取的消息类型;查找模块,用于在第一节点的节点队列中,查找与消息类型和第本文档来自技高网
...
一种基于节点队列的消息读写方法及节点设备

【技术保护点】
一种基于节点队列的消息写入方法,其特征在于,包括:第一节点接收客户端发送的第一写请求消息,所述第一写请求消息包含第一待写入消息和所述第一待写入消息的消息类型;将所述第一待写入消息写入所述第一节点中与所述第一待写入消息的消息类型相匹配的第一节点队列;向第二节点发送第二写请求消息,用以请求所述第二节点将所述第一待写入消息写入所述第二节点中与所述第一待写入消息的消息类型相匹配的第一节点队列;其中,所述第二写请求消息包括第一节点标识、所述第一待写入消息和所述第一待写入消息的消息类型,所述第二节点为所述第一节点的备用节点。

【技术特征摘要】
1.一种基于节点队列的消息写入方法,其特征在于,包括:第一节点接收客户端发送的第一写请求消息,所述第一写请求消息包含第一待写入消息和所述第一待写入消息的消息类型;将所述第一待写入消息写入所述第一节点中与所述第一待写入消息的消息类型相匹配的第一节点队列;向第二节点发送第二写请求消息,用以请求所述第二节点将所述第一待写入消息写入所述第二节点中与所述第一待写入消息的消息类型相匹配的第一节点队列;其中,所述第二写请求消息包括第一节点标识、所述第一待写入消息和所述第一待写入消息的消息类型,所述第二节点为所述第一节点的备用节点。2.根据权利要求1所述的方法,其特征在于,所述第一节点所在的节点集群由N个节点组成,每个节点包含N*M个节点队列,其中,每种消息类型对应N个节点队列,所述N个节点队列分别与所述节点集群中的N个节点相对应,所述M为消息类型的数量。3.根据权利要求1或2所述的方法,其特征在于,所述将所述第一待写入消息写入所述第一节点中的第一节点队列之前,所述方法还包括:将所述第一待写入消息的消息类型及第一节点标识与所述第一节点中包含的节点队列的队列标识进行匹配,确定所述第一节点中与所述第一待写入消息的消息类型及所述第一节点标识相匹配的第一节点队列。4.根据权利要求3所述的方法,其特征在于,所述节点队列的队列标识是由所述节点队列所对应的消息类型标识及对应的节点标识组成。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:接收第三节点发送的第三写请求消息,所述第一节点为所述第三节点的备用节点,所述第三写请求消息中包含第三节点标识、第二待写入消息和所述第二待写入消息的消息类型;根据所述第三写请求消息的指示将所述第二待写入消息写入所述第一节点中与所述第二待写入消息的消息类型相匹配的第三节点队列。6.一种基于节点队列的消息读取方法,其特征在于,包括:第一节点接收客户端发送的第一读请求消息,所述第一读请求消息中包含请求读取的消息类型;在所述第一节点的节点队列中,查找与所述消息类型和所述第一节点相匹配的第一节点队列,读取所述第一节点队列中存储的消息数据;若从所述第一节点队列中成功读取消息数据,则将读取的消息数据反馈至所述客户端。7.根据权利要求6所述的方法,其特征在于,若从所述第一节点队列中未成功读取消息数据,所述方法还包括:从所述第一节点的所述消息类型对应的其他节点队列中,获取存储有所述消息类型对应消息数据的节点队列所对应的目标节点的节点地址;向所述客户端反馈重定向指令,所述重定向指令包括所述目标节点地址和所述消息类型,用于指示所述客户端读取所述目标节点中的目标节点队列中存储的消息数据。8.根据权利要求6所述的方法,其特征在于,所述在所述第一节点的节点队列中,查找与所述消息类型和所述第一节点相对应的第一节点队列具体包括:将所述消息类型及第一节点标识与所述第一节点中包含的节点队列的队列标识进行匹配,确定所述第一节点中与所述消息类型及所述第一节点标识相匹配的第一节点队列。9.一种第一节点设备,其特征在于,包括:接收模块,用于...

【专利技术属性】
技术研发人员:杨毅轩
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

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

1