CN115776475A - 一种消息处理方法、装置、电子设备及计算机存储介质 - Google Patents
一种消息处理方法、装置、电子设备及计算机存储介质 Download PDFInfo
- Publication number
- CN115776475A CN115776475A CN202211427437.4A CN202211427437A CN115776475A CN 115776475 A CN115776475 A CN 115776475A CN 202211427437 A CN202211427437 A CN 202211427437A CN 115776475 A CN115776475 A CN 115776475A
- Authority
- CN
- China
- Prior art keywords
- message
- work queue
- transmitted
- sent
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明提供一种消息处理方法、装置、电子设备及计算机存储介质,包括将工作队列元素写入等待队列中,并将工作队列元素的处理状态标记为未处理;基于工作队列元素在等待队列中的处理状态,确定是否可发送待传输消息;若可发送,按照等待队列的写入顺序,确定可发送的工作队列元素;将与可发送的工作队列元素对应的待传输消息发送给第二设备的第二ROCE设备;在接收到反馈的确认消息时,将与序列号对应的工作队列元素从等待队列中移除。本方案先将工作队列元素写入连接表的等待队列中,基于工作队列元素在等待队列中的处理状态,确定是否可发送待传输消息,以在发生拥塞前提前采取措施,避免拥塞,进而避免因拥塞对网络产生的负面影响。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种消息处理方法、装置、电子设备及计算机存储介质。
背景技术
基于融合以太网的多址接入协议(RDMA over Converged Ethernet,RoCE)是一种允许服务器在一个以太网络上使用远程直接内存访问(RDMA,Remote DirectMemoryAccess)的协议。
当RoCE网络的接收端接收不过来,比如内部缓存将满或网络拥塞后,RoCE网络会采用流控机制消除拥塞,即接收端发现不能再接收packet时,给发送端发RNR NAK。RNR ACK中有延时信息T,发送端收到RNR ACK后,停止在此连接上发送packet,延时T后再发packet。但是通过采用流控机制时,是在已经发生拥塞之后再进行消息处理,从而会对网络产生负面影响。
发明内容
有鉴于此,本发明实施例提供一种消息处理方法、装置、电子设备及计算机存储介质,以解决现有技术中对网络产生负面影响的问题。
为实现上述目的,本发明实施例提供如下技术方案:
本发明实施例第一方面示出了一种消息处理方法,所述方法包括:
获取第一设备待发送至第二设备的工作队列元素;
将所述工作队列元素写入连接表的等待队列中,并将所述工作队列元素的处理状态标记为未处理;
基于所述工作队列元素在所述等待队列中的处理状态,确定是否可发送待传输消息,所述待传输消息中携带有识别所述待传输消息和所述工作队列元素的序列号;
若可发送,按照所述等待队列的写入顺序,确定可发送的工作队列元素;
获取与所述可发送的工作队列元素对应的待传输消息,并将所述待传输消息发送给第二设备的第二ROCE设备,以便所述第二ROCE设备在接收到所述待传输消息之后,基于所述待传输消息携带的序列号生成确认消息;
在接收到反馈的所述确认消息时,将与所述序列号对应的工作队列元素从所述连接表的等待队列中移除。
可选的,所述基于所述工作队列元素在所述等待队列中的处理状态,确定是否发送待传输消息,包括:
计算所述连接表的等待队列中处理状态为已发送的工作队列元素的第一数量;
判断所述第一数量是否小于预设阈值;
在所述第一数量小于预设阈值时,确定可发送待传输信息。
可选的,所述按照所述等待队列的写入顺序,确定可发送的工作队列元素,包括:
确定所述处理状态为空的工作队列元素,以及所述处理状态为空的工作队列元素的第二数量;
基于所述第一数量与预设阈值的差值,确定可发送数量;
若所述可发送数量大于或等于所述第二数量时,按照所述等待队列的写入顺序将所有所述处理状态为空的工作队列元素作为可发送的工作队列元素;
若所述可发送数量小于所述第二数量时,按照所述等待队列的写入顺序将所述可发送数量个所述处理状态为空的工作队列元素作为可发送的工作队列元素。
可选的,还包括:
在将所述待传输消息发送给第二设备的第二ROCE设备之后,将所述待传输消息对应的工作队列元素的处理状态标记为已发送;
在将所述待传输消息发送给第二设备的第二ROCE设备时,记录所述工作队列元素对应的待传输消息的发送时间。
可选的,还包括:
若未接收到与所述待传输消息相关的确认消息,按照预设时间间隔获取当前时间;
基于所述工作队列元素对应的待传输消息的发送时间与所述当前时间,确定所述工作队列元素对应的待传输消息是否发送超时;
若超时,重新将所述工作队列元素对应的待传输消息发送给第二设备的第二ROCE设备。
本发明实施例第二方面示出了一种消息处理装置,所述装置包括:
获取单元,用于获取第一设备待发送至第二设备的工作队列元素;
写入单元,用于将所述工作队列元素写入连接表的等待队列中,并将所述工作队列元素的处理状态标记为未处理;
第一处理单元,用于基于所述工作队列元素在所述等待队列中的处理状态,确定是否可发送待传输消息,所述待传输消息中携带有识别所述待传输消息和所述工作队列元素的序列号;若可发送,按照所述等待队列的写入顺序,确定可发送的工作队列元素;
发送单元,用于获取与所述可发送的工作队列元素对应的待传输消息,并将所述待传输消息发送给第二设备的第二ROCE设备,以便所述第二ROCE设备在接收到所述待传输消息之后,基于所述待传输消息携带的序列号生成确认消息;
第二处理单元,用于在接收到反馈的所述确认消息时,将与所述序列号对应的工作队列元素从所述连接表的等待队列中移除。
可选的,所述基于所述工作队列元素在所述等待队列中的处理状态,确定是否发送待传输消息的第一处理单元,具体用于:
计算所述连接表的等待队列中处理状态为已发送的工作队列元素的第一数量;
判断所述第一数量是否小于预设阈值;
在所述第一数量小于预设阈值时,确定可发送待传输信息。
可选的,所述按照所述等待队列的写入顺序,确定可发送的工作队列元素的第一处理单元,具体用于:
确定所述处理状态为空的工作队列元素,以及所述处理状态为空的工作队列元素的第二数量;
基于所述第一数量与预设阈值的差值,确定可发送数量;
若所述可发送数量大于或等于所述第二数量时,按照所述等待队列的写入顺序将所有所述处理状态为空的工作队列元素作为可发送的工作队列元素;
若所述可发送数量小于所述第二数量时,按照所述等待队列的写入顺序将所述可发送数量个所述处理状态为空的工作队列元素作为可发送的工作队列元素。
本发明实施例第三方面示出了一种电子设备,所述电子设备用于运行程序,其中,所述程序运行时执行如本发明实施例第一方面示出的消息处理方法。
本发明实施例第四方面示出了一种计算机存储介质,所述存储介质包括存储程序,其中,在所述程序运行时控制所述存储介质所在设备执行如本发明实施例第一方面示出的消息处理方法。
基于上述本发明实施例提供的一种消息处理方法、装置、电子设备及计算机存储介质,该方法包括:获取第一设备待发送至第二设备的工作队列元素;将所述工作队列元素写入连接表的等待队列中,并将所述工作队列元素的处理状态标记为未处理;基于所述工作队列元素在所述等待队列中的处理状态,确定是否可发送待传输消息,所述待传输消息中携带有识别所述待传输消息和所述工作队列元素的序列号;若可发送,按照所述等待队列的写入顺序,确定可发送的工作队列元素;获取与所述可发送的工作队列元素对应的待传输消息,并将所述待传输消息发送给第二设备的第二ROCE设备,以便所述第二ROCE设备在接收到所述待传输消息之后,基于所述待传输消息携带的序列号生成确认消息;在接收到反馈的所述确认消息时,将与所述序列号对应的工作队列元素从所述连接表的等待队列中移除。在本发明实施例中,本方案先将工作队列元素写入连接表的等待队列中,基于工作队列元素在等待队列中的处理状态,确定是否可发送待传输消息,以在发生拥塞前提前采取措施,避免拥塞,进而避免因拥塞对网络产生的负面影响。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例示出的第一设备、第二设备的交互示意图;
图2为本发明实施例示出的服务器的架构示意图;
图3为本发明实施例示出的一种消息处理方法的流程示意图;
图4为本发明实施例示出的等待队列的出队操作结构示意图;
图5为本发明实施例示出的另一种消息处理方法的流程示意图;
图6为本发明实施例示出的一种消息处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
参见图1,为本发明实施例示出的第一设备、第二设备的交互示意图。
第一设备10和第二设备20通过网络进行通信连接。
第一设备10中设置有第一ROCE设备11,第二设备20设置有第二ROCE设备21,第一设备10和第二设备20均支持RoCE协议的网络通信。
其中,第一ROCE设备11中包括接收端、发送端和服务器;第二ROCE设备21中包括接收端、发送端和服务器。
第一设备10和第二设备20可作为发送设备,也可作为接收设备。
对于本方案而言,将第一设备10设置为发起RDMA请求的设备,第二设备20设置为接收RDMA请求的设备,也就是说,第一设备10将消息传输至第二设备20,以便第二设备20存储。
基于上述图1所示的第一ROCE设备11和第二ROCE设备21,由于ROCE设备的结构是相同的,因此本发明实施例在具体实现中,还公开了服务器的具体架构,如图2所示。
服务器上有主机中央处理器HOST CPU201和它下挂的主机双倍速率同步动态随机存储器HOST DDR202,服务器上安装一块智能网卡203,在智能网卡主要包括硬件逻辑单元204、逻辑下挂的逻辑DDR内存单元205、上片芯片处理器SOC CPU206以及SOC下挂的SOC DDR内存单元207。其中硬件逻辑采用现场可编程门阵列(FieldProgrammable Gate Array,FPGA)实现。在FPGA中用硬件电路实现RoCE功能。
基于上述公开的架构具体实现消息处理的过程如下:
第一设备10要向第二设备20发送待传输消息时,将该待传输消息先存储于自身的第一ROCE设备11中的SOC DDR内存单元207。
第一ROCE设备11中的服务器获取智能网卡203的SOC DDR内存单元207中存储的待传输消息的工作队列元素(Work Queue Element,WQE),通过直接存储访问DMA的方式将待传输消息message的工作队列元素WQE从SOC DDR内存单元207中读取至硬件逻辑单元204的现场可编程门阵列(Field Programmable Gate Array,FPGA)。
第一ROCE设备11中的服务器将所述工作队列元素写入逻辑DDR内存单元205的连接表的等待队列中,并将所述工作队列元素的处理状态标记为未处理;硬件逻辑单元204基于所述工作队列元素在所述等待队列中的处理状态,确定是否可发送待传输消息,所述待传输消息中携带有识别所述待传输消息和所述工作队列元素的序列号;若可发送,按照所述等待队列的写入顺序确定发送的消息对应的工作队列元素WQE,根据工作队列元素WQE中的地址信息发起直接存储器访问DMA,以读取SOC DDR内存单元207中与所述工作队列元素WQE对应的消息message数据,将其读取至硬件逻辑单元204的FPGA中,将其进行数据切分,得到数据块;将该数据块通过发送端的roce逻辑接口发送给第二ROCE设备21。
第二ROCE设备21在接收到数据块之后,将其重组得到待传输消息,并将其发送给第二设备20,以便第二设备20将待传输消息进行存储。
第二ROCE设备21在接收到数据块之后,基于所述待传输消息携带的序列号生成确认消息,并将其反馈给第一ROCE设备11。
第一ROCE设备11在接收到第二ROCE设备21反馈的所述确认消息时,将逻辑DDR内存单元205的连接表中与所述序列号对应的工作队列元素从等待队列中移除。
在本发明实施例中,本方案先将工作队列元素写入连接表的等待队列中,基于工作队列元素在等待队列中的处理状态,确定是否可发送待传输消息,以在发生拥塞前提前采取措施,避免拥塞,进而避免因拥塞对网络产生的负面影响。
参见图3,为本发明实施例示出的一种消息处理方法的流程示意图,该方法包括:
步骤S301:获取第一设备待发送至第二设备的工作队列元素。
可选的,第一设备要向第二设备发送待传输消息时,将待传输消息,以及待传输消息对应的工作队列元素先存储于自身的第一ROCE设备中的SOC DDR内存单元。
在具体实现步骤S301的过程中,在要发送传输消息时,第一ROCE设备中的服务器获取智能网卡的SOC DDR内存单元中存储的待传输消息的工作队列元素WQE,通过直接存储访问DMA的方式将待传输消息message的工作队列元素WQE从SOC DDR内存单元中读取至硬件逻辑单元的现场可编程门阵列FPGA中。
步骤S302:将所述工作队列元素写入连接表的等待队列中,并将所述工作队列元素的处理状态标记为未处理。
在具体实现步骤S302的过程中,将所述工作队列元素进行入队操作,也就是说,将工作队列写入队列中尾指针所指向的位置,并将尾指针加1。
可选的,在工作队列元素加入等待队列时,现将其的处理状态标识为空。
步骤S303:基于所述工作队列元素在所述等待队列中的处理状态,确定是否可发送待传输消息,若可发送,执行步骤S304,若不可发送,则进行等待,并按照第一时间间隔重新执行步骤S303。
在步骤S303中,所述待传输消息中携带有识别所述待传输消息和所述工作队列元素的序列号。
需要说明的是,具体是实现步骤S303的过程,包括以下步骤:
步骤S11:计算所述连接表的等待队列中处理状态为已发送的工作队列元素的第一数量。
在具体实现步骤S11的过程中,统计算所述连接表的等待队列中处理状态为已发送的工作队列元素的数量,将其设置为第一数量。
需要说明的是,第一数量是指第一设备已经发送出去,但第二设备还没有回确认信息的消息message的个数。
步骤S12:判断所述第一数量是否小于预设阈值,在所述第一数量小于预设阈值时,执行步骤S13,在所述第一数量大于等于预设阈值,进入等待操作。
在具体实现步骤S12的过程中,比较第一数量与预设阈值的大小,在所述第一数量小于预设阈值时,执行步骤S13,在所述第一数量大于等于预设阈值,进入等待操作,并按照第一时间间隔重新执行步骤S303。
需要说明的是,第一时间间隔是技术人员按照经验或实验进行设置。
步骤S13:确定可发送待传输信息。
在具体实现步骤S13的过程中,此时可向第二设备发送待传输信息。
步骤S304:按照所述等待队列的写入顺序,确定可发送的工作队列元素。
需要说明的是,具体实现步骤S304的过程中,包括以下步骤:
步骤S21:确定所述处理状态为空的工作队列元素,以及所述处理状态为空的工作队列元素的第二数量。
在具体实现步骤S21的过程中,获取等待队列中处理状态为空的工作队列元素,并统计所述处理状态为空的工作队列元素的数量,将其设置为第二数量。
步骤S22:基于所述第一数量与预设阈值的差值,确定可发送数量。
在具体实现步骤S22的过程中,计算所述第一数量与预设阈值的差值,得到可发送数量。
步骤S23:确定所述可发送数量与第二数量之间的大小,若可发送数量大于或等于第二数量时,执行步骤S24,若可发送数量小于第二数量时,执行步骤S25。
在具体实现步骤S23的过程中,比较所述可发送数量与第二数量之间的大小,若可发送数量大于或等于第二数量时,执行步骤S24,若可发送数量小于第二数量时,执行步骤S25。
步骤S24:按照所述等待队列的写入顺序将所有所述处理状态为空的工作队列元素作为可发送的工作队列元素。
在具体实现步骤S24的过程中,按照所述等待队列的写入顺序,即等待队列先入先出的顺序将所有所述处理状态为空的工作队列元素作为可发送的工作队列元素。
步骤S25:按照所述等待队列的写入顺序将所述可发送数量个所述处理状态为空的工作队列元素作为可发送的工作队列元素。
在具体实现步骤S25的过程中,按照所述等待队列的写入顺序,即等待队列先入先出的顺序,获取可发送数量个所述处理状态为空的工作队列元素,并将其作为可发送的工作队列元素。
步骤S305:获取与所述可发送的工作队列元素对应的待传输消息,并将所述待传输消息发送给第二设备的第二ROCE设备,以便所述第二ROCE设备在接收到所述待传输消息之后,基于所述待传输消息携带的序列号生成确认消息。
在具体实现步骤S305的过程中,根据可发送的工作队列元素WQE中的地址信息发起直接存储器访问DMA,以读取SOC DDR内存单元中与可发送的工作队列元素WQE对应的消息message数据,将其读取至硬件逻辑单元的FPGA中,并通过RoCE接口发送给第二设备的第二ROCE设备,在第二ROCE设备确定接收到所述待传输消息之后,基于所述待传输消息携带的序列号生成确认消息,同时将所述待传输消息发送给第二设备。
可选的,在将待传输消息发送至第二设备的过程中,为了防止消息过大无法直接发送,可根据最大传输单元将待传输消息进行切块,并将切块的数据发送给第二设备的第二ROCE设备,在第二ROCE设备确定接收到所述待传输消息之后,基于所述待传输消息携带的序列号生成确认消息,并将所述确认消息反馈给第一ROCE设备,同时将所述待传输消息发送给第二设备。
可选的,第二设备读取接收连接表,根据接收连接表中的状态决定接收的message是否合法,若决定其合法,将待传输消息message和待传输消息message的完成队列元素(Complete Queue Element,CQE)以直接存储器访问DMA的方式写到第二设备的SOC DDR模块中。
可选的,在将所述待传输消息发送给第二设备的第二ROCE设备时,记录所述待传输消息的发送时间。
步骤S306:在接收到反馈的所述确认消息时,将与所述序列号对应的工作队列元素从所述连接表的等待队列中移除。
在具体实现步骤S306的过程中,每个待传输消息message发送到第二设备后,第二设备会回一个确认信息ackmessage,其携带有序列号MSN;基于序列号MSN将pending等待队列与所述序列号对应的工作队列元素WQE;对其工作队列元素WQE进行出队操作。
例如:灰色表示处理状态为已发送的工作队列元素WQE,白色表示空。如图4所示。
需要说明的是,如图4所示,头指针指向pending等待队列中处理状态处于已发送的工作队列元素中记录的发送时间最小的;尾指针指向pending等待队列中处理状态处于已发送的工作队列元素中记录的发送时间最大的数。一般来说,头指针的发送时间最小,因此最快接收到确认ackmessage信息的序列号MSN指向头指针的工作队列元素,对该头指针所指向的工作队列元素进行出队操作。
在本发明实施例中,本方案先将工作队列元素写入连接表的等待队列中,基于工作队列元素在等待队列中的处理状态,确定是否可发送待传输消息,以在发生拥塞前提前采取措施,避免拥塞,进而避免因拥塞对网络产生的负面影响。
基于上述本发明实施例示出的消息处理方法,相应的,本发明实施例还对应公开另一种消息数量方法,如图5所示,所述方法包括:
步骤S501:获取第一设备待发送至第二设备的工作队列元素。
步骤S502:将所述工作队列元素写入连接表的等待队列中,并将所述工作队列元素的处理状态标记为未处理。
步骤S503:基于所述工作队列元素在所述等待队列中的处理状态,确定是否可发送待传输消息,若可发送,执行步骤S504,若不可发送,则进行等待。
在步骤S503中,所述待传输消息中携带有识别所述待传输消息和所述工作队列元素的序列号。
步骤S504:按照所述等待队列的写入顺序,确定可发送的工作队列元素。
步骤S505:获取与所述可发送的工作队列元素对应的待传输消息,并将所述待传输消息发送给第二设备的第二ROCE设备。
需要说明的是,步骤S501至步骤S505的具体实现步骤与上述步骤S301至步骤S305的具体实现过程相同,可相互参见。
步骤S506:在将所述待传输消息发送给第二设备的第二ROCE设备时,记录所述工作队列元素对应的待传输消息的发送时间。
在具体实现步骤S506的过程中,在将所述待传输消息发送给第二设备的第二ROCE设备时,将当前的时间作为所述工作队列元素对应的待传输消息的发送时间,并记录。
可选的,将发送时间写入超时时间表timeout,该表可通过发送时间的表项确定该等待队列中的工作队列元素对应的连接。
步骤S507:检测是否接收到第二设备反馈的与所述待传输消息相关的确认消息,若未接收到与所述待传输消息相关的确认消息,则执行步骤S508至步骤S510,若接收到与所述待传输消息相关的确认消息,执行步骤S511。
步骤S508:按照预设时间间隔获取当前时间。
在具体实现步骤S508的过程中,预设时间间隔获取当前时间,并记录。
需要说明的是,预设时间间隔是技术人员根据经验或多次试验进行设置的。
步骤S509:基于所述工作队列元素对应的待传输消息的发送时间与所述当前时间,确定所述工作队列元素对应的待传输消息是否发送超时,若超时,执行步骤S510,若不超时,则返回执行步骤S507。
在具体实现步骤S509的过程中,计算所述工作队列元素对应的待传输消息的发送时间与所述当前时间的时间差;判断所述时间差是否大于预设超出时间Ttimeout,若大于或等于,则执行步骤S510,若小于,则返回执行步骤S507。
需要说明的是,预设超时时间Ttimeout是技术人员根据经验或多次试验进行设置的。
步骤S510:重新将所述工作队列元素对应的待传输消息发送给第二设备的第二ROCE设备。
在具体实现步骤S510的过程中,重传这个pending队列中与所述工作队列元素WQE对应的待传输消息发送给第二设备的第二ROCE设备,并返回执行步骤S507。
可选的,在超时时间表timeout中增加1bit比特的立即发送标记,记为send_now,当pending等待队列的队头的处理标记为未发送flag_sent==0时,则将该队头的工作队列元素WQE立即发送标记置为1,也就是说当轮询到这条连接,即工作队列元素WQE时,无论是否超时,只要需要第一数量pend_num小于等于预设阈值theshold,都立即发送pending队列中的表项。即只发送pending等待队列中从对头开始连续的处理标记为未发送flag_sent==0的工作队列元素WQE所对应的待传输消息发送至第二设备。
可选的,在其发送完毕后,将发送send_now置,即立即发送标记为0。
步骤S511:将与所述序列号对应的工作队列元素从所述连接表的等待队列中移除。
需要说明的是,步骤S511的具体实现过程与上述步骤S306的具体实现过程中相同,可相互参见。
在本发明实施例中,本方案先将所述工作队列元素写入连接表的等待队列中,在发生拥塞前,基于工作队列元素在等待队列中的处理状态,确定是否可发送待传输消息,从而提前采取措施,以避免拥塞;若未接收到与所述待传输消息相关的确认消息,按照预设时间间隔获取当前时间;基于所述工作队列元素对应的待传输消息的发送时间与所述当前时间,确定所述工作队列元素对应的待传输消息是否发送超时;若超时,重新将所述工作队列元素对应的待传输消息发送给第二设备的第二ROCE设备。从而避免因拥塞对网络产生的负面影响。以在发生拥塞前提前采取措施,避免拥塞,进而避免因拥塞对网络产生的负面影响。
基于上述本发明实施例示出的消息处理方法,相应的,本发明实施例,还对应公开了一种消息处理装置的结构示意图,如图6所示,该装置包括:
获取单元601,用于获取第一设备待发送至第二设备的工作队列元素。
写入单元602,用于将所述工作队列元素写入连接表的等待队列中,并将所述工作队列元素的处理状态标记为未处理。
第一处理单元603,用于基于所述工作队列元素在所述等待队列中的处理状态,确定是否可发送待传输消息,所述待传输消息中携带有识别所述待传输消息和所述工作队列元素的序列号;若可发送,按照所述等待队列的写入顺序,确定可发送的工作队列元素。
发送单元604,用于获取与所述可发送的工作队列元素对应的待传输消息,并将所述待传输消息发送给第二设备的第二ROCE设备,以便所述第二ROCE设备在接收到所述待传输消息之后,基于所述待传输消息携带的序列号生成确认消息。
第二处理单元605,用于在接收到反馈的所述确认消息时,将与所述序列号对应的工作队列元素从所述连接表的等待队列中移除。
需要说明的是,上述本发明实施例公开的消息处理装置中的各个单元具体的原理和执行过程,与上述本发明实施示出的消息处理方法相同,可参见上述本发明实施例公开的消息处理方法中相应的部分,这里不再进行赘述。
在本发明实施例中,本方案先将工作队列元素写入连接表的等待队列中,基于工作队列元素在等待队列中的处理状态,确定是否可发送待传输消息,以在发生拥塞前提前采取措施,避免拥塞,进而避免因拥塞对网络产生的负面影响。
可选的,基于上述本发明实施例示出的消息处理装置,所述基于所述工作队列元素在所述等待队列中的处理状态,确定是否发送待传输消息的第一处理单元603,具体用于:
计算所述连接表的等待队列中处理状态为已发送的工作队列元素的第一数量;判断所述第一数量是否小于预设阈值;在所述第一数量小于预设阈值时,确定可发送待传输信息。
可选的,基于上述本发明实施例示出的消息处理装置,所述按照所述等待队列的写入顺序,确定可发送的工作队列元素的第一处理单元603,具体用于:
确定所述处理状态为空的工作队列元素,以及所述处理状态为空的工作队列元素的第二数量;基于所述第一数量与预设阈值的差值,确定可发送数量;若可发送数量大于或等于第二数量时,按照所述等待队列的写入顺序将所有所述处理状态为空的工作队列元素作为可发送的工作队列元素;若可发送数量小于第二数量时,按照所述等待队列的写入顺序将所述可发送数量个所述处理状态为空的工作队列元素作为可发送的工作队列元素。
可选的,基于上述本发明实施例示出的消息处理装置,所述第一处理单元603,还用于:在将所述待传输消息发送给第二设备的第二ROCE设备之后,将所述待传输消息对应的工作队列元素的处理状态标记为已发送;在将所述待传输消息发送给第二设备的第二ROCE设备时,记录所述工作队列元素对应的待传输消息的发送时间。
可选的,基于上述本发明实施例示出的消息处理装置,所述第一处理单元603,还用于:若未接收到与所述待传输消息相关的确认消息,按照预设时间间隔获取当前时间;
基于所述工作队列元素对应的待传输消息的发送时间与所述当前时间,确定所述工作队列元素对应的待传输消息是否发送超时;
若超时,重新将所述工作队列元素对应的待传输消息发送给第二设备的第二ROCE设备。
本发明实施例还公开了一种电子设备,该电子设备用于运行数据库存储过程,其中,所述运行数据库存储过程时执行上述图3和图5公开的消息处理方法。
本发明实施例还公开了一种计算机存储介质,所述存储介质包括存储数据库存储过程,其中,在所述数据库存储过程运行时控制所述存储介质所在设备执行上述图3和图5公开的消息处理方法。
在本公开的上下文中,计算机存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种消息处理方法,其特征在于,所述方法包括:
获取第一设备待发送至第二设备的工作队列元素;
将所述工作队列元素写入连接表的等待队列中,并将所述工作队列元素的处理状态标记为未处理;
基于所述工作队列元素在所述等待队列中的处理状态,确定是否可发送待传输消息,所述待传输消息中携带有识别所述待传输消息和所述工作队列元素的序列号;
若可发送,按照所述等待队列的写入顺序,确定可发送的工作队列元素;
获取与所述可发送的工作队列元素对应的待传输消息,并将所述待传输消息发送给第二设备的第二ROCE设备,以便所述第二ROCE设备在接收到所述待传输消息之后,基于所述待传输消息携带的序列号生成确认消息;
在接收到反馈的所述确认消息时,将与所述序列号对应的工作队列元素从所述连接表的等待队列中移除。
2.根据权利要求1所述的方法,其特征在于,所述基于所述工作队列元素在所述等待队列中的处理状态,确定是否发送待传输消息,包括:
计算所述连接表的等待队列中处理状态为已发送的工作队列元素的第一数量;
判断所述第一数量是否小于预设阈值;
在所述第一数量小于预设阈值时,确定可发送待传输信息。
3.根据权利要求2的所述的方法,其特征在于,所述按照所述等待队列的写入顺序,确定可发送的工作队列元素,包括:
确定所述处理状态为空的工作队列元素,以及所述处理状态为空的工作队列元素的第二数量;
基于所述第一数量与预设阈值的差值,确定可发送数量;
若所述可发送数量大于或等于所述第二数量时,按照所述等待队列的写入顺序将所有所述处理状态为空的工作队列元素作为可发送的工作队列元素;
若所述可发送数量小于所述第二数量时,按照所述等待队列的写入顺序将所述可发送数量个所述处理状态为空的工作队列元素作为可发送的工作队列元素。
4.根据权利要求1所述的方法,其特征在于,还包括:
在将所述待传输消息发送给第二设备的第二ROCE设备之后,将所述待传输消息对应的工作队列元素的处理状态标记为已发送;
在将所述待传输消息发送给第二设备的第二ROCE设备时,记录所述工作队列元素对应的待传输消息的发送时间。
5.根据权利要求4所述的方法,其特征在于,还包括:
若未接收到与所述待传输消息相关的确认消息,按照预设时间间隔获取当前时间;
基于所述工作队列元素对应的待传输消息的发送时间与所述当前时间,确定所述工作队列元素对应的待传输消息是否发送超时;
若超时,重新将所述工作队列元素对应的待传输消息发送给第二设备的第二ROCE设备。
6.一种消息处理装置,其特征在于,所述装置包括:
获取单元,用于获取第一设备待发送至第二设备的工作队列元素;
写入单元,用于将所述工作队列元素写入连接表的等待队列中,并将所述工作队列元素的处理状态标记为未处理;
第一处理单元,用于基于所述工作队列元素在所述等待队列中的处理状态,确定是否可发送待传输消息,所述待传输消息中携带有识别所述待传输消息和所述工作队列元素的序列号;若可发送,按照所述等待队列的写入顺序,确定可发送的工作队列元素;
发送单元,用于获取与所述可发送的工作队列元素对应的待传输消息,并将所述待传输消息发送给第二设备的第二ROCE设备,以便所述第二ROCE设备在接收到所述待传输消息之后,基于所述待传输消息携带的序列号生成确认消息;
第二处理单元,用于在接收到反馈的所述确认消息时,将与所述序列号对应的工作队列元素从所述连接表的等待队列中移除。
7.根据权利要求6所述的装置,其特征在于,所述基于所述工作队列元素在所述等待队列中的处理状态,确定是否发送待传输消息的第一处理单元,具体用于:
计算所述连接表的等待队列中处理状态为已发送的工作队列元素的第一数量;
判断所述第一数量是否小于预设阈值;
在所述第一数量小于预设阈值时,确定可发送待传输信息。
8.根据权利要求6所述的装置,其特征在于,所述按照所述等待队列的写入顺序,确定可发送的工作队列元素的第一处理单元,具体用于:
确定所述处理状态为空的工作队列元素,以及所述处理状态为空的工作队列元素的第二数量;
基于所述第一数量与预设阈值的差值,确定可发送数量;
若所述可发送数量大于或等于所述第二数量时,按照所述等待队列的写入顺序将所有所述处理状态为空的工作队列元素作为可发送的工作队列元素;
若所述可发送数量小于所述第二数量时,按照所述等待队列的写入顺序将所述可发送数量个所述处理状态为空的工作队列元素作为可发送的工作队列元素。
9.一种电子设备,其特征在于,所述电子设备用于运行程序,其中,所述程序运行时执行如权利要求1-5中任一所述的消息处理方法。
10.一种计算机存储介质,其特征在于,所述存储介质包括存储程序,其中,在所述程序运行时控制所述存储介质所在设备执行如权利要求1-5中任一所述的消息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211427437.4A CN115776475A (zh) | 2022-11-15 | 2022-11-15 | 一种消息处理方法、装置、电子设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211427437.4A CN115776475A (zh) | 2022-11-15 | 2022-11-15 | 一种消息处理方法、装置、电子设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115776475A true CN115776475A (zh) | 2023-03-10 |
Family
ID=85389134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211427437.4A Pending CN115776475A (zh) | 2022-11-15 | 2022-11-15 | 一种消息处理方法、装置、电子设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115776475A (zh) |
-
2022
- 2022-11-15 CN CN202211427437.4A patent/CN115776475A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100366029C (zh) | 通信控制器、主机端控制器、通信设备、通信系统和方法 | |
US5604866A (en) | Flow control system having a counter in transmitter for decrementing and incrementing based upon transmitting and received message size respectively for indicating free space in receiver | |
CN106462474B (zh) | 使用故意延迟发送的网络超时 | |
EP1545042A2 (en) | Retransmission system and method for a transport offload engine | |
EP2661029A1 (en) | Avoiding Delayed Data | |
CN116582492B (zh) | 优化rdma读取的拥塞控制方法、系统及存储介质 | |
EP2846470A1 (en) | A method of mobile terminal internal communications | |
CN113992654A (zh) | 一种高速的文件传输方法、系统、设备及介质 | |
CN104065465A (zh) | 一种报文重传的方法、请求端、响应端以及系统 | |
CN116566921A (zh) | 远程直接内存访问读取的拥塞控制方法、系统及存储介质 | |
CN111352888A (zh) | 异步收发器的中断信号产生方法及装置 | |
US9544401B2 (en) | Device and method for data communication using a transmission ring buffer | |
JP2006270469A (ja) | 通信データ制御装置 | |
CN111404842B (zh) | 数据传输方法、装置及计算机存储介质 | |
CN107817944B (zh) | 一种数据处理方法及存储设备 | |
CN115776475A (zh) | 一种消息处理方法、装置、电子设备及计算机存储介质 | |
CN110781104A (zh) | 一种数据处理系统、方法和装置 | |
US9450706B2 (en) | Communication apparatus and packet transfer method | |
KR20110134465A (ko) | 데이터 전송 시스템 및 그 데이터 판독 방법 | |
CN112351049B (zh) | 数据传输方法、装置、设备及存储介质 | |
US20140071993A1 (en) | Transfer device and transfer method | |
EP2726992B1 (en) | Network control model driver | |
JP2010049314A (ja) | タスクスケジューリング装置およびタスクスケジューリング方法 | |
KR20120042745A (ko) | 비접속 환경에서 신뢰적인 통신을 수립하기 위한 방법 및 시스템 | |
CN115982090B (zh) | 软硬件协同实现远端内存访问的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |