CN111752728A - 消息传输方法及装置 - Google Patents
消息传输方法及装置 Download PDFInfo
- Publication number
- CN111752728A CN111752728A CN202010620904.XA CN202010620904A CN111752728A CN 111752728 A CN111752728 A CN 111752728A CN 202010620904 A CN202010620904 A CN 202010620904A CN 111752728 A CN111752728 A CN 111752728A
- Authority
- CN
- China
- Prior art keywords
- message
- tuple
- transmitted
- message tuple
- thread
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种消息传输方法及装置,该方法包括:通过接收线程接收客户端发送的初始消息元组,并获取初始消息元组的任务号,基于该任务号确定目标执行器组,通过接收线程将初始消息元组传输至目标执行器组中,经过目标执行器组中包含的N个执行器依次对初始消息元组进行处理,由目标执行器组中的第N个执行器输出初始消息元组对应的目标消息元组,并将目标消息元组发送至发送线程的传输队列;通过发送线程将传输队列接收到的目标消息元组确定为待传输消息元组,并判断传输队列中存储的待传输消息元组是否满足预先设置的传输条件,若满足,则将传输队列中的待传输消息元组传输至服务端。能够节约处理器的资源,从而提升处理器的工作效率。
Description
技术领域
本发明涉及流式数据处理技术领域,特别涉及一种消息传输方法及装置。
背景技术
随着科学技术的发展,流式计算框架也得到了越来越广泛的应用。流式计算是不同于批量计算的一种计算方法,流式计算更加的强调计算数据流和低时延,因此,对于时延敏感型的分布式大数据应用程序,通常会常用流式计算框架对这类应用程序的数据流进行处理,从而能够保障应用的稳定运行,提高用户的体验。
目前,流式计算框架一般是通过Java虚拟机(JavaVirtualMachine,JVM)作为计算节点的底层处理环境,因此,当流式计算系统的两个计算节点进行数据交互时,往往会采用基于Java的异步通信框架,例如,采用Netty等基于TCP/IP协议的异步通信架构的组件进行通信。
流式计算系统通常会利用其各个计算节点的多个并行的工作进程来实时处理大量的数据。为了尽可能的降低数据处理时延,现有的基于异步通信架构的流式计算系统中的计算节点的工作进程,通过一个特定的线程将数据传输至另一工作进程。在该数据的传输过程中,计算节点的内核控制权从线程传递至操作系统,线程进入等待状态,直至该数据传输完成时,线程再次被激活,并继续传输下一个数据。
然而,在流式计算系统中的各个工作进程间存在大量的小消息交互的情况下,采用现有的基于TCP/IP协议的异步通信架构进行通信,会导致处理器进行频繁的上下文切换,而且,在计算节点在处理应用程序的基于TCP/IP协议的消息过程中,应用程序的工作线程和操作系统之间频繁地进行缓冲拷贝,以及操作系统内部的协议栈缓冲区拷贝,造成大量的处理器资源被耗费。
发明内容
本发明所要解决的技术问题是提供一种消息传输方法,能够节约了处理器的工作资源,从而提升处理器的工作效率。
本发明还提供了一种消息传输装置,用以保证上述方法在实际中的实现及应用。
一种消息传输方法,应用于流式计算系统的流式计算节点,所述流式计算节点包括工作进程;所述工作进程包括接收线程、发送线程以及M个执行器,所述方法包括:
通过所述接收线程接收预置的客户端发送的初始消息元组,并获取所述初始消息元组的任务号,在所述M个执行器中确定目标执行器组,其中,所述目标执行器组包含按调度顺序排序的N个执行器,所述调度顺序依据所述任务号确定;M和N均为正整数,N小于等于M;
通过所述接收线程将所述初始消息元组传输至所述目标执行器组中,经过所述目标执行器组中包含的各个执行器依次对所述初始消息元组进行处理,由所述目标执行器组中的第N个执行器输出所述初始消息元组对应的目标消息元组,并将所述目标消息元组发送至所述发送线程的传输队列;其中,所述接收线程将所述初始消息元组传输至所述目标执行器组中的首个执行器的接收队列,以作为所述首个执行器的输入,所述执行器组中的每个执行器的输出作为下一个执行器的输入;
通过所述发送线程将所述传输队列接收到的目标消息元组确定为待传输消息元组,并判断所述传输队列中存储的待传输消息元组是否满足预先设置的传输条件,若满足,则将所述传输队列中的待传输消息元组传输至预置的服务端。
上述的方法,可选的,所述获取所述初始消息元组的任务号,包括:
通过所述接收线程对所述初始消息元组进行解析,得到所述初始消息元组的元组信息;
由所述接收线程在所述元组信息的预设字段中提取出所述初始消息元组的任务号。
上述的方法,可选的,依据任务号确定调度顺序的过程,包括:
通过所述接收线程遍历预先设置的配置文件,得到所述任务号对应的各个执行器的调度顺序。
上述的方法,可选的,所述判断所述传输队列中存储的待传输消息元组是否满足预先设置的传输条件,包括:
通过所述发送线程判断所述传输队列中存储的待传输消息元组的数量是否大于预先设置的数量阈值;
若所述待传输队列中存储的待传输消息元组的数量大于预先设置的数量阈值,则判定所述传输队列中存储的待传输消息元组满足所述传输条件;
若所述待传输队列中存储的待传输消息元组的数量未大于预先设置的数量阈值,则判定所述传输队列中存储的待传输消息元组不满足所述传输条件。
上述的方法,可选的,还包括:
通过所述发送线程将所述传输队列中的待传输消息元组备份至预先设置的数据备份区域;
通过所述发送线程将所述传输队列中的待传输消息元组传输至预置的服务端之后,当接收到所述服务端发送的与每个所述待传输消息元组对应的反馈消息时,对于每个所述待传输消息元组对应的反馈消息,若该待传输消息元组对应的反馈消息表征所述服务端对该待传输消息元组处理失败,则在所述数据备份区域中获取该待传输消息元组,并将该待传输消息元组发送至所述服务端,若该待传输消息元组对应的反馈消息表征所述服务端对该待传输消息元组处理成功,则在所述数据备份存储区域中将该待传输消息元组进行删除。
一种消息传输装置,应用于流式计算系统的流式计算节点,所述流式计算节点包括工作进程;所述工作进程包括接收线程、发送线程以及M个执行器,所述装置包括:
接收单元,用于通过所述接收线程接收预置的客户端发送的初始消息元组,并获取所述初始消息元组的任务号,在所述M个执行器中确定目标执行器组,其中,所述目标执行器组包含按调度顺序排序的N个执行器,所述调度顺序依据所述任务号确定;M和N均为正整数,N小于等于M;
处理单元,用于通过所述接收线程将所述初始消息元组传输至所述目标执行器组中,经过所述目标执行器组中包含的各个执行器依次对所述初始消息元组进行处理,由所述目标执行器组中的第N个执行器输出所述初始消息元组对应的目标消息元组,并将所述目标消息元组发送至所述发送线程的传输队列;其中,所述接收线程将所述初始消息元组传输至所述目标执行器组中的首个执行器的接收队列,以作为所述首个执行器的输入,所述执行器组中的每个执行器的输出作为下一个执行器的输入;
传输单元,用于通过所述发送线程将所述传输队列接收到的目标消息元组确定为待传输消息元组,并判断所述传输队列中存储的待传输消息元组是否满足预先设置的传输条件,若满足,则将所述传输队列中的待传输消息元组传输至预置的服务端。
上述的装置,可选的,所述获取所述初始消息元组的任务号的接收单元,被配置为:
通过所述接收线程对所述初始消息元组进行解析,得到所述初始消息元组的元组信息;
由所述接收线程在所述元组信息的预设字段中提取出所述初始消息元组的任务号。
上述的装置,可选的,依据任务号确定调度顺序的接收单元,包括:
通过所述接收线程遍历预先设置的配置文件,得到所述任务号对应的各个执行器的调度顺序。
上述的装置,可选的,所述判断所述传输队列中存储的待传输消息元组是否满足预先设置的传输条件的传输单元,被配置为:
通过所述发送线程判断所述传输队列中存储的待传输消息元组的数量是否大于预先设置的数量阈值;
若所述待传输队列中存储的待传输消息元组的数量大于预先设置的数量阈值,则判定所述传输队列中存储的待传输消息元组满足所述传输条件;
若所述待传输队列中存储的待传输消息元组的数量未大于预先设置的数量阈值,则判定所述传输队列中存储的待传输消息元组不满足所述传输条件。
上述的装置,可选的,所述传输单元,还被配置为:
通过所述发送线程将所述传输队列中的待传输消息元组备份至预先设置的数据备份区域;
通过所述发送线程将所述传输队列中的待传输消息元组传输至预置的服务端之后,当接收到所述服务端发送的与每个所述待传输消息元组对应的反馈消息时,对于每个所述待传输消息元组对应的反馈消息,若该待传输消息元组对应的反馈消息表征所述服务端对该待传输消息元组处理失败,则在所述数据备份区域中获取该待传输消息元组,并将该待传输消息元组发送至所述服务端,若该待传输消息元组对应的反馈消息表征所述服务端对该待传输消息元组处理成功,则在所述数据备份存储区域中将该待传输消息元组进行删除。
与现有技术相比,本发明包括以下优点:
本发明提供了一种消息传输方法和装置,该方法应用于流式计算系统的流式计算节点,所述流式计算节点包括工作进程;所述工作进程包括接收线程、发送线程以及M个执行器,该方法包括:通过所述接收线程接收预置的客户端发送的初始消息元组,并获取所述初始消息元组的任务号,在所述M个执行器中确定目标执行器组,其中,所述目标执行器组包含按调度顺序排序的N个执行器,所述调度顺序依据所述任务号确定;M和N均为正整数,N小于等于M;通过所述接收线程将所述初始消息元组传输至所述目标执行器组中,经过所述目标执行器组中包含的各个执行器依次对所述初始消息元组进行处理,由所述目标执行器组中的第N个执行器输出所述初始消息元组对应的目标消息元组,并将所述目标消息元组发送至所述发送线程的传输队列;其中,所述接收线程将所述初始消息元组传输至所述目标执行器组中的首个执行器的接收队列,以作为所述首个执行器的输入,所述执行器组中的每个执行器的输出作为下一个执行器的输入;通过所述发送线程将所述传输队列接收到的目标消息元组确定为待传输消息元组,并判断所述传输队列中存储的待传输消息元组是否满足预先设置的传输条件,若满足,则将所述传输队列中的待传输消息元组传输至预置的服务端。能够避免使用TCP/IP协议导致的处理器频繁的上下文切换,且无需通过操作系统进行消息传输,避免了工作进程中的线程和操作系统频繁地进行缓冲拷贝,以及操作系统内部的协议栈缓冲区拷贝,节约了处理器的资源。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明提供的一种消息传输方法的方法流程图;
图2为本发明提供的判断传输队列中存储的待传输消息元组是否满足传输条件的过程的流程图;
图3为本发明提供的一种实施场景示例图;
图4为本发明提供的一种消息传输装置的结构示意图;
图5为本发明提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
本发明实施例提供了一种消息传输方法,应用于流式计算系统的流式计算节点,所述流式计算节点包括工作进程;所述工作进程包括接收线程、发送线程以及M个执行器,该方法的执行主体可以为计算节点的处理器,该流式计算节点可以为计算机终端或各种移动设备,所述方法的方法流程图如图1所示,具体包括:
S101:通过所述接收线程接收预置的客户端发送的初始消息元组,并获取所述初始消息元组的任务号,在所述M个执行器中确定目标执行器组;其中,所述目标执行器组包含按调度顺序排序的N个执行器,所述调度顺序依据所述任务号确定;M和N均为正整数,N小于等于M。
本发明实施例提供的方法中,该客户端可以为该流式计算节点的上游计算节点中的工作进程的发送线程;通过接收线程接收上游计算节点的初始消息元组,从而实现将上游计算节点的工作进程的内存中的初始消息元组传输至本计算节点中的工作进程对应的内存中,无需经过流式计算节点的操作系统的内存,使得流式计算节点的处理器减少了传统的通过操作系统的内存接收上游计算节点的流式数据,再将操作系统的内存中的流式数据拷贝至流式计算点的工作进程的内存的操作过程,从而提高了处理器的处理效率。
其中,该初始消息元组可以为流式计算系统当前待处理的流式数据的最小数据单元;该消息元组中包含待处理数据,该待处理数据可以为文本或数字等形式的数据。
具体的,每个初始消息元组携带对应的任务号,该任务号可以包含上游计算节点的节点标识以及该消息元组的消息编号。
可选的,初始消息元组对应的各个执行器的调度顺序,可以由接收线程基于该初始消息元组的任务号进行确定,该任务号与该调度顺序相对应。
S102:通过所述接收线程将所述初始消息元组传输至所述目标执行器组中,经过所述目标执行器组中包含的各个执行器依次对所述初始消息元组进行处理,由所述目标执行器组中的第N个执行器输出所述初始消息元组对应的目标消息元组,并将所述目标消息元组发送至所述发送线程的传输队列;其中,所述接收线程将所述初始消息元组传输至所述目标执行器组中的首个执行器的接收队列,以作为所述首个执行器的输入,所述执行器组中的每个执行器的输出作为下一个执行器的输入。
在本发明实施例提供的方法中,每个执行器均具有对应的逻辑处理功能,例如,可以对文本数据进行分词操作或词频统计等。
具体的,该目标执行器组中除首个执行器以外的每个执行器输入,为该执行器的上一个执行器的输出。
例如,该目标执行器组中包含按调度顺序排序的执行器A、执行器B以及执行器C,其中,执行器A为目标执行器组中的首个执行器,执行器A将其接收队列中接收到的该接收线程发送的初始消息元组作为输入,从而对该初始消息元组进行相应的逻辑处理;并将处理后的初始消息元组发送至执行器B的接收队列,执行器B将该经由处理A处理后的初始消息元组进行相应的逻辑处理,并在处理完成后传输至执行器C的接收队列,由执行器C对该初始消息元组进行相应的逻辑处理后输出目标消息元组,执行器C将其产生的目标消息元组传输至发送线程的传输队列中。
其中,每个执行器包含一个子工作线程以及子发送线程,该子工作线程用于当监听到该执行器的任务缓冲区的初始消息元组时,对该初始消息元组进行处理,并将处理后的消息发送至该执行器的发送队列;该子发送线程用于将发送队列中的消息进行输出,若存在该执行器的下一执行器,则该子工作线程可以将该处理后的消息输出至下一执行器的接收队列,使得该接收队列将数据传输至该执行器的任务缓冲区;若不存在该执行器的下一执行器,则该执行器的子发送线程可以将该处理后的消息,即目标消息元组,传输至发送线程的传输队列中。
可选的,目标执行器组中的第N个执行器可以将其接收到初始消息元组的任务号中的上游计算节点标识,替换为本流式计算节点的节点标识,得到目标消息元组的任务号。
S103:通过所述发送线程将所述传输队列接收到的目标消息元组确定为待传输消息元组,并判断传输队列中存储的待传输消息元组是否满足预先设置的传输条件,若满足,则将传输队列中的待传输消息元组传输至预置的服务端。
本发明实施例提供的方法中,通过发送线程将传输队列中的待传输消息元组传输至预置的服务端的一种方式可以为:通过该发送线程获取到预先存储的与所述待传输消息元组的任务号对应的目标地址,基于该目标地址将该待传输消息元组发送至预置的服务端,该目标地址包含IP地址以及端口号。
可选的,该服务端可以为下游计算节点相应的接收线程。通过发送线程将传输队列中的待传输消息元组传输至下游计算节点的服务端,使得流式计算节点的处理器无需将工作进程的内存中的待传输数据发送至操作系统的内存,再将操作系统的内存的待传输数据传输至下游计算节点,节约了处理器的工作资源,从而提升处理器的工作效率。
应用本发明实施例提供的消息传输方法,能够避免使用TCP/IP协议导致处理器频繁的上下文切换;使得流式计算系统中的流式计算节点可以通过工作进程中的接收线程接收上游计算节点发送的消息,并通过发送线程将处理后的消息发送至下游计算节点,无需通过操作系统进行消息传输,避免了工作进程中的线程和操作系统频繁地进行缓冲拷贝,以及操作系统内部的协议栈缓冲区拷贝,节约了处理器的资源。
本发明实施例提供的方法,基于上述的实施过程,具体的,所述获取所述初始消息元组的任务号,包括:
通过所述接收线程对所述初始消息元组进行解析,得到所述初始消息元组的元组信息;
由所述接收线程在所述元组信息的预设字段中提取出所述初始消息元组的任务号。
本发明实施例提供的方法中,按预先设置的解析方式对接收到的初始消息元组进行解析,即,该初始消息元组进行格式转换,得到该初始消息元组中包含的元组信息,该元组信息中包含任务号以及待处理数据。
本发明实施例提供的方法,基于上述的实施过程,具体的,依据任务号确定调度顺序的过程,包括:
通过所述接收线程遍历预先设置的配置文件,得到所述任务号对应的各个执行器的调度顺序。
本发明实施例提供的方法中,该配置文件预先记录任务号与调度顺序之间的对应关系。该调度顺序包含该任务号对应的各个执行器的处理该初始消息元组的次序。
本发明实施例提供的方法,基于上述的实施过程,具体的,所述判断所述传输队列中存储的待传输消息元组是否满足预先设置的传输条件的一种可行的过程,如图2所示,具体包括:
S201:通过所述发送线程判断所述传输队列中存储的待传输消息元组的数量是否大于预先设置的数量阈值;若是,则执行S202,若否,则执行S203。
本发明实施例提供的方法中,该数量阈值可以设置为1000、5000或10000等等,具体可以依据实际情况进行设定。
S202:判定传输队列中存储的待传输消息元组满足所述传输条件。
S203:判定传输队列中存储的待传输消息元组不满足所述传输条件。
本发明实施例提供的方法中,判断传输队列中存储的待传输消息元组是否满足预先设置的传输条件的又一方式,可以为:
通过发送线程判断传输队列中存储的待传输消息元组所占用的内存空间的大小是否大于预先设定的内存阈值;
若传输队列中存储的待传输消息元组所占用的内存空间的大小大于预先设定的内存阈值,则可以判定传输队列中存储的待传输消息元组满足该传输条件;
若传输队列中存储的待传输消息元组所占用的内存空间的大小未大于预先设定的内存阈值,则可以判定传输队列中存储的待传输消息元组不满足该传输条件。
本发明实施例提供的方法,基于上述的实施过程,具体的,还包括:
通过所述发送线程将所述传输队列中的待传输消息元组备份至预先设置的数据备份区域;
通过所述发送线程将所述传输队列中的待传输消息元组传输至预置的服务端之后,当接收到所述服务端发送的与每个所述待传输消息元组对应的反馈消息时,对于每个所述待传输消息元组对应的反馈消息,若该待传输消息元组对应的反馈消息表征所述服务端对该待传输消息元组处理失败,则在所述数据备份区域中获取该待传输消息元组,并将该待传输消息元组发送至所述服务端,若该待传输消息元组对应的反馈消息表征所述服务端对该待传输消息元组处理成功,则在所述数据备份存储区域中将该待传输消息元组进行删除。
参见图3,为本发明提供的一实施场景示例图,本发明实施例提供的实施场景包括了流式计算系统,该流式计算系统所采用的框架可以为Storm流式计算框架,该流式计算系统可以包括消息输入节点301、流式计算节点集合302以及存储系统303,该流式计算节点集合中可以包含K个流式计算节点,其中,每个流式计算节点均包括工作进程;所述工作进程包括接收线程、发送线程以及多个执行器,K为正整数,该接收线程可以是基于RDMA协议的通信接收线程,发送线程可以是基于RDMA协议的通信发送线程。
实施时,图3所示的消息输入节点可以是诸如手机、平板电脑、个人计算机等电子设备。流式计算节点集合中的每个流式计算节点可以是诸如一台服务器,也可以是由多台服务器组成的服务器集群。消息输入节点301与流式计算节点集合302中的流式计算节点通过InfiniBand技术建立通信连接,流式计算节点集合305中的流式计算节点可以与存储系统303通过InfiniBand技术建立通信连接;流式计算系统中的各个流式计算节点之间可以通过InfiniBand技术建立通信连接。
本发明实施例涉及的网络为提供通信链路的介质,该网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
消息输入节点301以及流式计算系统集合302中的每个流式计算节点设置有客户端,存储系统303以及流式计算系统集合302中的每个流式计算节点设置有服务端,每个流式计算节点的客户端可以为运行在该流式计算节点上的工作进程的发送线程,每个流式计算节点的服务端可以为运行在该流式计算节点上的接收线程。
当消息输入节点301需要对文本类型的消息进行处理时,在流式计算系统集合302中确定该消息对应的目标节点组,使得该目标节点组对该文本类型的消息进行处理,并将处理后的消息发送至存储系统303,由存储系统303对处理后的消息进行存储;该目标节点组包含至少一个按特定顺序排序的流式计算节点。
对于该目标节点组的每个流式计算节点,该流式计算节点的工作进程中的接收线程实时监听对应的接收端口,当监听到接收端口的初始消息元组时,获取该初始消息元组的任务号;该初始消息元组可以为该流式计算节点的上游流式计算节点的客户端将初始消息元组发送的,也可以为消息输入节点的客户端发送的。
该流式计算节点的工作进程中的接收线程基于该任务号,在工作进程的各个执行器中确定目标执行器组,目标执行器组包含一个或多个执行器,若该执行器组包含一个执行器,则将该初始消息元组发送至该执行器的接收队列,经由该接收队列将该初始消息元组传输至该执行器的子工作线程的任务缓冲区,使得该执行器的子工作线程对该初始消息元组进行处理,得到目标消息元组,将该目标消息元组传输至执行器的发送队列,由该执行器的子发送线程将发送队列中的目标消息元组传输至工作进程的发送线程的传输队列。
工作进程的发送线程将传输队列接收到的目标消息元组确定为待传输消息元组,并在传输队列中的待传输消息元组满足预设的传输条件时,将传输队列中的待传输消息元组传输至服务端,该服务端可以为下游流式计算节点的服务端,也可以为存储系统302的服务端。
其中,该流式计算系可以应用在实时查询业务、中间计算以及电商业务等各种领域中。
各个流式计算节点的工作进程之间需要频繁的交互通信,对于每个流式计算节点,该流式计算节点可以记录本地进程与其他节点上的工作进程的状态信息,以及消息的收发状态等。当工作进程有消息发送时,需要调用通信工厂来创建客户端从而发送消息。每当工作进程启动时,该类自动调用工厂创建接收消息的服务线程,并通过异步回调的方式来非阻塞的接收来自其他进程的消息。
其中,可以根据定义的配置文件,或者不同的通信硬件资源,选择支持相应协议的通信模块,本发明实施例可以支持两种通信协议,即TCP/IP或者RDMA。该类通过调用通信上下文接口来对通信的发送端(客户端)或者接收端(服务端)进行实例化,并返回给上层的结构,在流式计算节点支持RDMA协议的情况下,优先选择RDMA协议。
对于服务端,通过完成接收连接方法,通信事件调度方法以及完成事件调度方法,从而实现通信的服务端结构。由于服务端接收方法(accept)的调用会被阻塞,因此有必要为服务端逻辑创建一个额外的线程用来处理接收的消息以及发送响应。一旦建立了连接,连接事件调度器方法将设置多个verbs接收方法(recv)调用,其编号由接收的初始化方法配置。消息到达后,将使用完成事件调度器,通过调用注册的回调接收消息方法将消息包通过异步的方式传递给上层,即进行工作流水线进行计算处理。
对于客户端,一旦上层调用发送方法,消息被放入任务消息队列,等待客户端线程接收。在客户端线程中,通过不断地从队列中取出消息,注册内存区域,构造并执行相应的verbs发送方法(send)调用。在调用的执行过程中,使用任务请求ID集合以及查询表来跟踪正在使用的挂起消息和内存区域。然后在通信事件调度方法中,通过检查工作完成对象中的工作请求ID,并确定发送是否成功。对于失败的工作请求,根据工作完成对象的状态代码,需要再次发送或连接请求。
其中,在实际应用的过程中,可以在具有InfiniBand互联设备的集群中安装相关的软件库及应用,具体包括通信库DiSNI与分布式协调服务应用Zookeeper与流式计算框架Storm;随后建立配置文件,文件中应当包括使用的通信协议,使用的网络设备名称以及消息缓冲区的大小等并指定所使用的通信组件;之后启动分布式协调服务应用以及分布式计算系统;用户定义相应的计算拓扑图,计算图由数据源点与中间流式计算节点组成;计算的数据在系统中被细分为元组,经过源点从前端获取,并发送到相应的流式计算节点,经过多个流式计算节点的计算与加工,最后将最终结果写入到存储系统中;计算拓扑图中的每一条边代表着两个进程之间的通信信道。当采用广播分组的消息处理策略时,通信复杂度达到最大,此种情况下可以更好地进行性能对比;向系统提交用户定义的计算拓扑图,经过一段系统分配调度资源的时间,可以打开浏览器,输入本地的IP地址与8080(默认)端口,可以查看各个计算节点的性能监视图;流式计算系统的调度器通过将拓扑图划分为若干个子图,将其中的计算节点分配到配置文件中给出的计算集群中,每一个流式计算节点映射为一个进程,流式计算节点间的边映射为进程间的通信;通过性能监视器,可以观测到流式计算系统中消息元组的吞吐量与处理时延。
与图1所述的方法相对应,本发明实施例还提供了一种消息传输装置,用于对图1中方法的具体实现,本发明实施例提供的消息传输装置可以应用于流式计算系统的流式计算节点,所述流式计算节点包括工作进程;所述工作进程包括接收线程、发送线程以及M个执行器,,其结构示意图如图4所示,具体包括:
接收单元401,用于通过所述接收线程接收预置的客户端发送的初始消息元组,并获取所述初始消息元组的任务号,在所述M个执行器中确定目标执行器组,其中,所述目标执行器组包含按调度顺序排序的N个执行器,所述调度顺序依据所述任务号确定;M和N均为正整数,N小于等于M;
处理单元402,用于通过所述接收线程将所述初始消息元组传输至所述目标执行器组中,经过所述目标执行器组中包含的各个执行器依次对所述初始消息元组进行处理,由所述目标执行器组中的第N个执行器输出所述初始消息元组对应的目标消息元组,并将所述目标消息元组发送至所述发送线程的传输队列;其中,所述接收线程将所述初始消息元组传输至所述目标执行器组中的首个执行器的接收队列,以作为所述首个执行器的输入,所述执行器组中的每个执行器的输出作为下一个执行器的输入;
传输单元403,用于通过所述发送线程将所述传输队列接收到的目标消息元组确定为待传输消息元组,并判断所述传输队列中存储的待传输消息元组是否满足预先设置的传输条件,若满足,则将所述传输队列中的待传输消息元组传输至预置的服务端。
应用本发明实施例提供的消息传输装置,使得流式计算系统中的流式计算节点可以通过工作进程中的接收线程接收上游计算节点发送的消息,并通过发送线程将处理后的消息发送至下游计算节点,无需通过操作系统进行消息传输,避免了工作进程中的线程和操作系统频繁地进行缓冲拷贝,以及操作系统内部的协议栈缓冲区拷贝,节约了处理器的资源。
在本发明提供的一实施例中,基于上述的方案,可选的,所述获取所述初始消息元组的任务号的接收单元401,被配置为:
通过所述接收线程对所述初始消息元组进行解析,得到所述初始消息元组的元组信息;
由所述接收线程在所述元组信息的预设字段中提取出所述初始消息元组的任务号。
在本发明提供的一实施例中,基于上述的方案,可选的,依据任务号确定调度顺序的接收单元401,包括:
通过所述接收线程遍历预先设置的配置文件,得到所述任务号对应的各个执行器的调度顺序。
在本发明提供的一实施例中,基于上述的方案,可选的,所述判断所述传输队列中存储的待传输消息元组是否满足预先设置的传输条件的传输单元403,被配置为:
通过所述发送线程判断所述传输队列中存储的待传输消息元组的数量是否大于预先设置的数量阈值;
若所述待传输队列中存储的待传输消息元组的数量大于预先设置的数量阈值,则判定所述传输队列中存储的待传输消息元组满足所述传输条件;
若所述待传输队列中存储的待传输消息元组的数量未大于预先设置的数量阈值,则判定所述传输队列中存储的待传输消息元组不满足所述传输条件。
在本发明提供的一实施例中,基于上述的方案,可选的,所述传输单元403,还被配置为:
通过所述发送线程将所述传输队列中的待传输消息元组备份至预先设置的数据备份区域;
通过所述发送线程将所述传输队列中的待传输消息元组传输至预置的服务端之后,当接收到所述服务端发送的与每个所述待传输消息元组对应的反馈消息时,对于每个所述待传输消息元组对应的反馈消息,若该待传输消息元组对应的反馈消息表征所述服务端对该待传输消息元组处理失败,则在所述数据备份区域中获取该待传输消息元组,并将该待传输消息元组发送至所述服务端,若该待传输消息元组对应的反馈消息表征所述服务端对该待传输消息元组处理成功,则在所述数据备份存储区域中将该待传输消息元组进行删除。
上述本发明实施例公开的消息传输装置中的各个单元和模块具体的原理和执行过程,与上述本发明实施例公开的消息传输方法相同,可参见上述本发明实施例提供的消息传输方法中相应的部分,这里不再进行赘述。
本发明实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述消息传输方法。
本发明实施例还提供了一种电子设备,其结构示意图如图5所示,具体包括存储器501,以及一个或者一个以上的指令502,其中一个或者一个以上指令502存储于存储器501中,且经配置以由一个或者一个以上处理器503执行所述一个或者一个以上指令502进行以下操作:
通过接收线程接收预置的客户端发送的初始消息元组,并获取初始消息元组的任务号,在M个执行器中确定目标执行器组,其中,目标执行器组包含按调度顺序排序的N个执行器,调度顺序依据任务号确定;M和N均为正整数,N小于等于M;
通过接收线程将初始消息元组传输至目标执行器组中,经过目标执行器组中包含的各个执行器依次对初始消息元组进行处理,由目标执行器组中的第N个执行器输出初始消息元组对应的目标消息元组,并将目标消息元组发送至发送线程的传输队列;其中,接收线程将初始消息元组传输至目标执行器组中的首个执行器的接收队列,以作为首个执行器的输入,执行器组中的每个执行器的输出作为下一个执行器的输入;
通过发送线程将传输队列接收到的目标消息元组确定为待传输消息元组,并判断传输队列中存储的待传输消息元组是否满足预先设置的传输条件,若满足,则将传输队列中的待传输消息元组传输至预置的服务端。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上对本发明所提供的一种消息传输方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种消息传输方法,其特征在于,应用于流式计算系统的流式计算节点,所述流式计算节点包括工作进程;所述工作进程包括接收线程、发送线程以及M个执行器,所述方法包括:
通过所述接收线程接收预置的客户端发送的初始消息元组,并获取所述初始消息元组的任务号,在所述M个执行器中确定目标执行器组,其中,所述目标执行器组包含按调度顺序排序的N个执行器,所述调度顺序依据所述任务号确定;M和N均为正整数,N小于等于M;
通过所述接收线程将所述初始消息元组传输至所述目标执行器组中,经过所述目标执行器组中包含的各个执行器依次对所述初始消息元组进行处理,由所述目标执行器组中的第N个执行器输出所述初始消息元组对应的目标消息元组,并将所述目标消息元组发送至所述发送线程的传输队列;其中,所述接收线程将所述初始消息元组传输至所述目标执行器组中的首个执行器的接收队列,以作为所述首个执行器的输入,所述执行器组中的每个执行器的输出作为下一个执行器的输入;
通过所述发送线程将所述传输队列接收到的目标消息元组确定为待传输消息元组,并判断所述传输队列中存储的待传输消息元组是否满足预先设置的传输条件,若满足,则将所述传输队列中的待传输消息元组传输至预置的服务端。
2.根据权利要求1所述的方法,其特征在于,所述获取所述初始消息元组的任务号,包括:
通过所述接收线程对所述初始消息元组进行解析,得到所述初始消息元组的元组信息;
由所述接收线程在所述元组信息的预设字段中提取出所述初始消息元组的任务号。
3.根据权利要求1所述的方法,其特征在于,依据任务号确定调度顺序的过程,包括:
通过所述接收线程遍历预先设置的配置文件,得到所述任务号对应的各个执行器的调度顺序。
4.根据权利要求1所述的方法,其特征在于,所述判断所述传输队列中存储的待传输消息元组是否满足预先设置的传输条件,包括:
通过所述发送线程判断所述传输队列中存储的待传输消息元组的数量是否大于预先设置的数量阈值;
若所述待传输队列中存储的待传输消息元组的数量大于预先设置的数量阈值,则判定所述传输队列中存储的待传输消息元组满足所述传输条件;
若所述待传输队列中存储的待传输消息元组的数量未大于预先设置的数量阈值,则判定所述传输队列中存储的待传输消息元组不满足所述传输条件。
5.根据权利要求1所述的方法,其特征在于,还包括:
通过所述发送线程将所述传输队列中的待传输消息元组备份至预先设置的数据备份区域;
通过所述发送线程将所述传输队列中的待传输消息元组传输至预置的服务端之后,当接收到所述服务端发送的与每个所述待传输消息元组对应的反馈消息时,对于每个所述待传输消息元组对应的反馈消息,若该待传输消息元组对应的反馈消息表征所述服务端对该待传输消息元组处理失败,则在所述数据备份区域中获取该待传输消息元组,并将该待传输消息元组发送至所述服务端,若该待传输消息元组对应的反馈消息表征所述服务端对该待传输消息元组处理成功,则在所述数据备份存储区域中将该待传输消息元组进行删除。
6.一种消息传输装置,其特征在于,应用于流式计算系统的流式计算节点,所述流式计算节点包括工作进程;所述工作进程包括接收线程、发送线程以及M个执行器,所述装置包括:
接收单元,用于通过所述接收线程接收预置的客户端发送的初始消息元组,并获取所述初始消息元组的任务号,在所述M个执行器中确定目标执行器组,其中,所述目标执行器组包含按调度顺序排序的N个执行器,所述调度顺序依据所述任务号确定;M和N均为正整数,N小于等于M;
处理单元,用于通过所述接收线程将所述初始消息元组传输至所述目标执行器组中,经过所述目标执行器组中包含的各个执行器依次对所述初始消息元组进行处理,由所述目标执行器组中的第N个执行器输出所述初始消息元组对应的目标消息元组,并将所述目标消息元组发送至所述发送线程的传输队列;其中,所述接收线程将所述初始消息元组传输至所述目标执行器组中的首个执行器的接收队列,以作为所述首个执行器的输入,所述执行器组中的每个执行器的输出作为下一个执行器的输入;
传输单元,用于通过所述发送线程将所述传输队列接收到的目标消息元组确定为待传输消息元组,并判断所述传输队列中存储的待传输消息元组是否满足预先设置的传输条件,若满足,则将所述传输队列中的待传输消息元组传输至预置的服务端。
7.根据权利要求6所述的装置,其特征在于,所述获取所述初始消息元组的任务号的接收单元,被配置为:
通过所述接收线程对所述初始消息元组进行解析,得到所述初始消息元组的元组信息;
由所述接收线程在所述元组信息的预设字段中提取出所述初始消息元组的任务号。
8.根据权利要求6所述的装置,其特征在于,依据任务号确定调度顺序的接收单元,包括:
通过所述接收线程遍历预先设置的配置文件,得到所述任务号对应的各个执行器的调度顺序。
9.根据权利要求6所述的装置,其特征在于,所述判断所述传输队列中存储的待传输消息元组是否满足预先设置的传输条件的传输单元,被配置为:
通过所述发送线程判断所述传输队列中存储的待传输消息元组的数量是否大于预先设置的数量阈值;
若所述待传输队列中存储的待传输消息元组的数量大于预先设置的数量阈值,则判定所述传输队列中存储的待传输消息元组满足所述传输条件;
若所述待传输队列中存储的待传输消息元组的数量未大于预先设置的数量阈值,则判定所述传输队列中存储的待传输消息元组不满足所述传输条件。
10.根据权利要求6所述的装置,其特征在于,所述传输单元,还被配置为:
通过所述发送线程将所述传输队列中的待传输消息元组备份至预先设置的数据备份区域;
通过所述发送线程将所述传输队列中的待传输消息元组传输至预置的服务端之后,当接收到所述服务端发送的与每个所述待传输消息元组对应的反馈消息时,对于每个所述待传输消息元组对应的反馈消息,若该待传输消息元组对应的反馈消息表征所述服务端对该待传输消息元组处理失败,则在所述数据备份区域中获取该待传输消息元组,并将该待传输消息元组发送至所述服务端,若该待传输消息元组对应的反馈消息表征所述服务端对该待传输消息元组处理成功,则在所述数据备份存储区域中将该待传输消息元组进行删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010620904.XA CN111752728B (zh) | 2020-06-30 | 2020-06-30 | 消息传输方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010620904.XA CN111752728B (zh) | 2020-06-30 | 2020-06-30 | 消息传输方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111752728A true CN111752728A (zh) | 2020-10-09 |
CN111752728B CN111752728B (zh) | 2022-09-06 |
Family
ID=72680261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010620904.XA Active CN111752728B (zh) | 2020-06-30 | 2020-06-30 | 消息传输方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111752728B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115190124A (zh) * | 2022-06-24 | 2022-10-14 | 远光软件股份有限公司 | 基于分布式工业控制系统的消息传输方法、装置、存储介质及调度服务器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040158795A1 (en) * | 2003-02-06 | 2004-08-12 | International Business Machines Corporation | Method and apparatus for implementing infiniband transmit queue |
CN104063293A (zh) * | 2014-07-04 | 2014-09-24 | 华为技术有限公司 | 一种数据备份方法及流计算系统 |
CN107451092A (zh) * | 2017-08-09 | 2017-12-08 | 郑州云海信息技术有限公司 | 一种基于ib网络的数据传输系统 |
CN109491809A (zh) * | 2018-11-12 | 2019-03-19 | 西安微电子技术研究所 | 一种降低高速总线延迟的通信方法 |
CN109783255A (zh) * | 2019-01-07 | 2019-05-21 | 中国银行股份有限公司 | 数据解析分发装置及高并发数据处理方法 |
CN110519242A (zh) * | 2019-08-13 | 2019-11-29 | 新华三大数据技术有限公司 | 数据传输方法及装置 |
-
2020
- 2020-06-30 CN CN202010620904.XA patent/CN111752728B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040158795A1 (en) * | 2003-02-06 | 2004-08-12 | International Business Machines Corporation | Method and apparatus for implementing infiniband transmit queue |
CN104063293A (zh) * | 2014-07-04 | 2014-09-24 | 华为技术有限公司 | 一种数据备份方法及流计算系统 |
CN107451092A (zh) * | 2017-08-09 | 2017-12-08 | 郑州云海信息技术有限公司 | 一种基于ib网络的数据传输系统 |
CN109491809A (zh) * | 2018-11-12 | 2019-03-19 | 西安微电子技术研究所 | 一种降低高速总线延迟的通信方法 |
CN109783255A (zh) * | 2019-01-07 | 2019-05-21 | 中国银行股份有限公司 | 数据解析分发装置及高并发数据处理方法 |
CN110519242A (zh) * | 2019-08-13 | 2019-11-29 | 新华三大数据技术有限公司 | 数据传输方法及装置 |
Non-Patent Citations (2)
Title |
---|
YANG, SEOKWOO: "Performance improvement of Apache Storm using InfiniBand RDMA", 《JOURNAL OF SUPERCOMPUTING》 * |
叶庆: "基于Infiniband网络的消息传输技术研究", 《四川大学学报(自然科学版)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115190124A (zh) * | 2022-06-24 | 2022-10-14 | 远光软件股份有限公司 | 基于分布式工业控制系统的消息传输方法、装置、存储介质及调度服务器 |
CN115190124B (zh) * | 2022-06-24 | 2023-12-26 | 远光软件股份有限公司 | 基于分布式工业控制系统的消息传输方法、装置、存储介质及调度服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN111752728B (zh) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3637733B1 (en) | Load balancing engine, client, distributed computing system, and load balancing method | |
CN106161537B (zh) | 远程过程调用的处理方法、装置、系统及电子设备 | |
US9501319B2 (en) | Method and apparatus for scheduling blocking tasks | |
CN109117252B (zh) | 基于容器的任务处理的方法、系统及容器集群管理系统 | |
US8286194B2 (en) | Coupling state aware systems | |
US9323591B2 (en) | Listening for externally initiated requests | |
CN112099935B (zh) | 一种任务处理方法及装置 | |
US20140068165A1 (en) | Splitting a real-time thread between the user and kernel space | |
CN112068847B (zh) | 基于kubernets平台的计算环境部署方法及装置 | |
CN113641410A (zh) | 一种基于Netty的高性能网关系统的处理方法及系统 | |
CN115794262A (zh) | 任务处理方法、装置、设备、存储介质以及程序产品 | |
CN112787999A (zh) | 跨链调用方法、装置、系统与计算机可读存储介质 | |
CN114116149A (zh) | 一种任务调度方法、装置、设备及介质 | |
Li et al. | Hone: Mitigating stragglers in distributed stream processing with tuple scheduling | |
CN112104679B (zh) | 处理超文本传输协议请求的方法、装置、设备和介质 | |
Mohamed et al. | MidCloud: an agent‐based middleware for effective utilization of replicated Cloud services | |
CN111752728B (zh) | 消息传输方法及装置 | |
CN111555987B (zh) | 限流配置方法、装置、设备及计算机存储介质 | |
CN114979286B (zh) | 容器服务的访问控制方法、装置、设备及计算机存储介质 | |
CN112448833A (zh) | 一种多管理域的通信方法和装置 | |
CN114090268B (zh) | 容器管理方法及容器管理系统 | |
Tsenos et al. | Amesos: A scalable and elastic framework for latency sensitive streaming pipelines | |
CN110928693B (zh) | 一种计算设备及资源分配方法 | |
CN114741165A (zh) | 数据处理平台的处理方法、计算机设备及存储装置 | |
CN115250276A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |