一种消息发送方法、消息接收方法、装置和设备与流程

文档序号:35466973发布日期:2023-09-16 07:01阅读:54来源:国知局
一种消息发送方法、消息接收方法、装置和设备与流程

本发明涉及通信网络,尤其是涉及一种消息发送方法、消息接收方法、装置和设备。


背景技术:

1、在存储系统中,异于普通网络通信,比如音视频文件传输、实时对话等,存储系统控制器作为集群节点相互通信传输需要具有高可靠性,比如包括:不丢数据、不错数据、通信时延低等。而且,随着客户业务的发展,集群通信量越来越大,既要保证数据通信可靠性,同时还要满足时效性、高性能,对现有集群通信架构及实现细节带来巨大挑战。

2、目前,集群通信架构是参考tcp/ip协议体系结构,另外,也设计了分层消息传输机制,如层层封包、层层隔离,从而达到架构的简洁性和健壮性,并且辅以流量控制策略、重复帧检测机制、快速应答和重传等技术手段,以满足中低端存储系统的性能指标要求。为适配nvme(non-volatile memory express,非易失性内存接口规范)协议的rdma(remotedirect memory access,远程直接地址访问)链路,也曾探索式寻求多队列并发通信提高集群通信性能,但实践中发现该方式存在底层通信资源浪费。经过深入测试发现,当前存储系统集群通信存在端口资源不足,并且在发送消息时还会导致消息丢失、重复以及乱序等错误。


技术实现思路

1、为解决上述消息发送时发生丢失、顺序错乱的问题,本技术实施例提供了一种消息发送方法、消息接收方法、装置和设备,具体地,公开了如下技术方案:

2、第一方面,本技术实施例提供了一种消息发送方法,方法应用于第一节点,第一节点上包括多个端口资源,方法包括:

3、当检测到消息队列中包括至少一个待发送消息时,获取所述多个端口资源中的可用端口资源;

4、在所述多个端口资源中查询是否有空闲的信道;如果有空闲信道,则建立空闲信道、可用端口资源和至少一个待发送消息之间的一个或多个匹配关系,以及为每个匹配关系中的消息分配一个序列号;

5、将至少一个所述消息按照所述序列号的顺序发送给第二节点。

6、结合第一方面,在一种可能的实施方式中,所述在所述多个端口资源中查询是否有空闲的信道之前,所述方法还包括:

7、接收来自所述第二节点发送的一个或多个读请求消息,每个所述读请求消息中携带信道标识;解析所述一个或多个读请求消息,获得每个所述读请求消息中的信道标识;

8、在所述多个端口资源中查询是否有空闲的信道,包括:

9、根据所述信道标识查询是否有空闲的信道。

10、结合第一方面,在另一种可能的实施方式中,一个或多个匹配关系包括第一匹配关系,第一匹配关系包括第一信道、第一端口资源和第一待发送消息之间的关联关系;

11、建立第一信道、第一端口资源和第一待发送消息之间的匹配关系,包括:第一节点根据第一信道的标识和第一预设关系建立第一信道与第一端口资源之间的匹配关系;

12、按照第一端口资源的容量大小遍历消息队列中的至少一个待发送消息,在待发送消息的大小不超过第一端口资源的容量的条件下,确定第一待发送消息;

13、建立所述第一待发送消息、所述第一端口资源和所述第一信道之间的匹配关系。

14、结合第一方面,在又一种可能的实施方式中,第一待发送消息是一个消息,或者是由两个或两个以上消息组合的消息块;所述方法还包括:

15、在遍历消息队列中的至少一个待发送消息时,如果第二待发送消息和第三待发送消息的容量总和不超过第一端口资源的总容量,将第二待发送消息和第三待发送消息进行内存合并;

16、将合并后的消息块作为第一待发送消息,与所述第一信道和所述第一端口资源建立第一匹配关系。

17、结合第一方面,在又一种可能的实施方式中,所述将所述至少一个消息按照所述序列号的顺序发送给第二节点,包括:获取复用列表,将所述已分配序列号的至少一个消息存储在所述复用列表中。

18、结合第一方面,在又一种可能的实施方式中,所述复用列表的至少一个消息中包括第一消息,将所述第一消息按照序列号顺序发送给所述第二节点之后,还包括:

19、接收所述第二节点根据所述第一消息反馈的第一应答响应;

20、解析所述第一应答响应,并根据解析的内容确定所述第一消息是否正常发送。

21、如果解析内容指示所述第一消息发送正常,则在所述复用列表中回收所述第一消息对应的端口资源,以及释放与所述端口资源匹配的信道资源。

22、结合第一方面,在又一种可能的实施方式中,所述方法还包括:如果解析所述第一应答响应得到发送异常的信息,则将所述复用列表中的所述第一消息重新发送给所述第二节点。

23、结合第一方面,在又一种可能的实施方式中,所述第一节点上的多个端口资源的数量为144个。

24、结合第一方面,在又一种可能的实施方式中,方法还包括:当在所述多个端口资源中查询无空闲信道时,返回并释放第一节点的cpu资源。

25、第二方面,本技术实施例还提供一种消息接收方法,该方法应用于第二节点,第二节点上包括多个端口资源,所述方法包括:

26、接收第一节点发送的至少一个消息,每个消息中携带被分配的序列号,且每个所述消息与一空闲信道和以可用端口资源具有匹配关系;

27、解析每个消息得到每个消息中被分配的序列号,并将序列号与本地存储的序列号进行比较;如果序列号一致,则进入消息出队、解析和转发流程,以及生成至少一个应答响应;

28、将至少一个应答响应发送给第一节点。

29、结合第二方面,在一种可能的实施方式中,将序列号与本地存储的序列号进行比较,包括:比较每个消息中的序列号与当前接收消息队列中期待的序列号是否一致。

30、结合第二方面,在另一种可能的实施方式中,方法还包括:如果比较不一致,则判断当前消息中的序列号比期待的序列号更新或者更旧;

31、如果比期待的序列号更新,则确定消息提前到达,第二节点将信道重新放入队列中等待下次调度处理;

32、如果比期待的序列号更旧,则确定当前消息是重复消息,第二节点丢弃当前消息。

33、结合第二方面,在又一种可能的实施方式中,进入消息出队、解析和转发流程,以及生成至少一个应答响应,包括:

34、解析当前接收消息队列中的关键字段,在当前接收消息队列中增加消息的序列号,并触发业务模块提取函数;

35、在函数提取完成后,等待当前消息接收队列释放;

36、待当前消息接收队列释放后,将应答响应的序列号赋值到对应的信道中,并通过信道发送应答响应至第一节点。

37、第三方面,本技术实施例还提供一种消息发送装置,该装置包括:

38、第一获取单元,用于当检测到消息队列中包括至少一个待发送消息时,获取所述多个端口资源中的可用端口资源;

39、第一查询单元,用于在所述多个端口资源中查询是否有空闲的信道;

40、第一建立单元,用于在第一查询单元查询到有空闲信道时,建立空闲信道、可用端口资源和至少一个待发送消息之间的一个或多个匹配关系,以及为每个所述匹配关系中的消息分配一个序列号;

41、第一发送单元,用于将至少一个所述消息按照所述序列号的顺序发送给第二节点。

42、此外,该消息发送装置中的各个功能单元还用于实现前述第一方面中其他实施方式的方法步骤。

43、第四方面,本技术实施例还提供一种消息接收装置,该装置包括:

44、接收单元,用于接收第一节点发送的至少一个消息,每个消息中携带被分配的序列号,且每个所述消息与一空闲信道和以可用端口资源具有匹配关系;

45、处理单元,用于解析每个消息得到每个消息中被分配的序列号,并将序列号与本地存储的序列号进行比较;比较序列号一致时,进入消息出队、解析和转发流程,以及生成至少一个应答响应;

46、第二发送单元,用于将至少一个应答响应发送给第一节点。

47、此外,该消息接收装置中的各个功能单元还用于实现前述第二方面中其他实施方式的方法步骤。

48、第五方面,本技术实施例还提供一种消息发送系统,系统包括第一节点和第二节点;其中,所述第一节点中包括前述第三方面所述的消息发送装置;所述第二节点中包括前述第四方面所述的消息接收装置。

49、第六方面,本技术实施例还提供一种电子设备,包括:存储器和处理器,存储器和处理器之间通过信道连接;存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行前述第一方面以及第一方面任一实施方式所述消息发送方法。

50、此外,该电子设备中,当所述处理器通过执行计算机指令,还执行前述第二方面以及第二方面任一实施方式所述消息接收方法。

51、第七方面,本技术实施例还提供一种计算机可读存储介质,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或第二方面及其对应的任一实施方式的消息发送方法和/或消息接收方法。

52、本发明提供的消息发送方法中,发送端节点通过建立可用端口资源、空闲信道和消息队列中的至少一个消息之间的匹配关系,并为这些匹配关系设置不同序列号,使得接收端节点在接收到发送端节点发送的消息时,能够对接收的消息的序列号进行比对,从而保证消息传输的有序性,避免发送端节点所发送的消息发生丢失、乱序等错误,本方法通过多队列多线程并发处理的方式,保证了传输消息的安全性,同时还提高传输性能。

53、另外,本方法中利用多个端口资源还实现集群通信低时延的目标,通过调整发送消息出队时的资源数,降低发送消息队列时延,提高iops和吞吐量,并能保证系统稳定可靠。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1