CN118524151B - FPGA-based publish-subscribe message transmission method, system, device, and medium - Google Patents
FPGA-based publish-subscribe message transmission method, system, device, and medium Download PDFInfo
- Publication number
- CN118524151B CN118524151B CN202411003281.6A CN202411003281A CN118524151B CN 118524151 B CN118524151 B CN 118524151B CN 202411003281 A CN202411003281 A CN 202411003281A CN 118524151 B CN118524151 B CN 118524151B
- Authority
- CN
- China
- Prior art keywords
- message forwarding
- fpga
- data
- forwarding platform
- module
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种基于FPGA的发布订阅式消息传输方法、系统、设备、介质,上述方法包括:与消息转发平台建立通讯连接;通过通信模块向与管理节点地址标识对应的管理节点发送查询指令;响应于接收到的与预设订阅主题具有对应关系的运行节点地址标识,与消息转发平台的运行节点建立连接;向运行节点发送预设订阅主题,使得消息转发平台保存FPGA与订阅主题的对应关系;响应于接收到的消息转发平台发送的配置指令,消费模块利用预设解码算法基于配置指令得到配置数据;基于配置数据配置FPGA;响应于接收到探测器发送的采集数据,向运行节点发送封装后的采集数据,使得消息转发平台缓存并转发封装后的采集数据。
The present invention provides a publish-subscribe message transmission method, system, device and medium based on FPGA. The method comprises: establishing a communication connection with a message forwarding platform; sending a query instruction to a management node corresponding to an address identifier of the management node through a communication module; establishing a connection with an operation node of the message forwarding platform in response to a received operation node address identifier having a corresponding relationship with a preset subscription topic; sending a preset subscription topic to the operation node, so that the message forwarding platform saves the corresponding relationship between the FPGA and the subscription topic; in response to a configuration instruction sent by the message forwarding platform, a consumption module obtains configuration data based on the configuration instruction using a preset decoding algorithm; configuring the FPGA based on the configuration data; in response to receiving collection data sent by a detector, sending the encapsulated collection data to the operation node, so that the message forwarding platform caches and forwards the encapsulated collection data.
Description
技术领域Technical Field
本发明涉及通信技术领域,更具体地涉及一种基于FPGA的发布订阅式消息传输方法、系统、设备、介质。The present invention relates to the field of communication technology, and more specifically to a publish-subscribe message transmission method, system, device, and medium based on FPGA.
背景技术Background Art
信号读出系统是核与粒子物理实验装置的核心部分之一,其性能影响到实验数据的获取能力,随着网络的发展和数据处理性能的提高,许多数据处理任务能够在单个或小型计算机集群中实时完成。这种基于软件的实时数据处理方法相比在数据存储后离线进行或使用专用快速电子设备完成的数据处理方法,具有更大的灵活性和更好的适应性,因此成为物理实验数据获取系统的发展趋势。The signal readout system is one of the core parts of nuclear and particle physics experimental equipment. Its performance affects the ability to obtain experimental data. With the development of the network and the improvement of data processing performance, many data processing tasks can be completed in real time on a single or small computer cluster. Compared with data processing methods that are performed offline after data storage or using dedicated fast electronic equipment, this software-based real-time data processing method has greater flexibility and better adaptability, and has become a development trend in physical experiment data acquisition systems.
在相关技术中,需要CPU(Central Processing Unit,中央处理单元)在FPGA(Field-Programmable Gate Array,现场可编程门阵列)和数据获取平台中转发信息来完成信号的读出,但CPU的性能会限制数据获取平台获取的数据量,对于数据量较大的情况,数据传输速度较慢。In the related art, a CPU (Central Processing Unit) is required to forward information between an FPGA (Field-Programmable Gate Array) and a data acquisition platform to complete signal reading. However, the performance of the CPU will limit the amount of data acquired by the data acquisition platform. For large amounts of data, the data transmission speed is slow.
发明内容Summary of the invention
鉴于上述问题,本发明提供了基于FPGA的发布订阅式消息传输方法、系统、设备、介质。In view of the above problems, the present invention provides a publish-subscribe message transmission method, system, device, and medium based on FPGA.
根据本发明的第一个方面,提供了一种基于FPGA的发布订阅式消息传输方法,上述FPGA包括通信模块和消费模块,上述通信模块与消息转发平台进行信息交互,上述消息转发平台部署于分布式集群,上述消息转发平台包括管理节点和运行节点,上述FPGA还存储有上述消息转发平台的管理节点地址标识,包括:与所述消息转发平台建立通讯连接;通过上述通信模块向与上述管理节点地址标识对应的管理节点发送查询指令,上述查询指令包括预设订阅主题,上述预设订阅主题是根据与上述FPGA交互的探测器的探测通道设置的,上述探测通道表征探测器采集的数据类型和/或采集位置;响应于接收到的与上述预设订阅主题具有对应关系的运行节点地址标识,与上述消息转发平台的运行节点建立连接;向上述运行节点发送上述预设订阅主题,使得上述消息转发平台保存上述FPGA与订阅主题的对应关系;响应于接收到的上述消息转发平台发送的配置指令, 上述消费模块利用预设解码算法基于上述配置指令得到配置数据;基于上述配置数据配置上述FPGA;以及响应于接收到上述探测器发送的采集数据,向上述运行节点发送封装后的采集数据,使得上述消息转发平台缓存并转发上述封装后的采集数据,上述采集数据是基于上述探测器的多个探测通道采集得到的。According to a first aspect of the present invention, a publish-subscribe message transmission method based on FPGA is provided, wherein the FPGA comprises a communication module and a consumption module, the communication module performs information interaction with a message forwarding platform, the message forwarding platform is deployed in a distributed cluster, the message forwarding platform comprises a management node and an operation node, and the FPGA also stores the management node address identifier of the message forwarding platform, including: establishing a communication connection with the message forwarding platform; sending a query instruction to the management node corresponding to the management node address identifier through the communication module, the query instruction comprising a preset subscription topic, the preset subscription topic is set according to the detection channel of the detector interacting with the FPGA, and the detection channel represents the data type and/or collection location collected by the detector; in response to the received operation node address identifier having a corresponding relationship with the preset subscription topic, establishing a connection with the operation node of the message forwarding platform; sending the preset subscription topic to the operation node, so that the message forwarding platform saves the corresponding relationship between the FPGA and the subscription topic; in response to the received configuration instruction sent by the message forwarding platform, The above-mentioned consumption module obtains configuration data based on the above-mentioned configuration instructions using a preset decoding algorithm; configures the above-mentioned FPGA based on the above-mentioned configuration data; and in response to receiving the collection data sent by the above-mentioned detector, sends the packaged collection data to the above-mentioned operation node, so that the above-mentioned message forwarding platform caches and forwards the above-mentioned packaged collection data, and the above-mentioned collection data is obtained based on the collection of multiple detection channels of the above-mentioned detector.
根据本发明的实施例,上述FPGA还包括协调模块和多个生产模块,上述方法还包括:对于每个处于空闲状态的上述生产模块,响应于接收到的上述协调模块发送的使能信号,获取待封装探测数据;利用预设封装算法,对上述待封装探测数据进行封装得到待传输信息;通过上述通信模块向上述运行节点发送上述待传输信息;响应于接收到的上述消息转发平台发送的与上述待传输信息对应的确认标识,删除缓存中的上述待传输信息。According to an embodiment of the present invention, the above-mentioned FPGA also includes a coordination module and multiple production modules, and the above-mentioned method also includes: for each of the above-mentioned production modules in an idle state, in response to the enable signal sent by the above-mentioned coordination module, obtaining the detection data to be packaged; using a preset packaging algorithm, encapsulating the above-mentioned detection data to be packaged to obtain the information to be transmitted; sending the above-mentioned information to be transmitted to the above-mentioned running node through the above-mentioned communication module; in response to the confirmation mark corresponding to the above-mentioned information to be transmitted sent by the above-mentioned message forwarding platform, deleting the above-mentioned information to be transmitted in the cache.
根据本发明的实施例,上述方法还包括:响应于接收到的上述消息转发平台发送的控制信息, 上述消费模块利用预设解码算法基于上述控制信息得到控制指令和订阅主题;向与上述订阅主题对应的探测器发送上述控制指令,使得上述探测器执行与上述控制指令对应的操作。According to an embodiment of the present invention, the above method also includes: in response to the control information sent by the above message forwarding platform, the above consumption module uses a preset decoding algorithm to obtain control instructions and subscription topics based on the above control information; and sends the above control instructions to the detector corresponding to the above subscription topic, so that the above detector performs the operation corresponding to the above control instructions.
根据本发明的实施例,上述消息转发平台还存储有不同订阅主题与FPGA的第一对应关系,上述方法还包括:上述消息转发平台响应于接收到数据获取平台发送的第一配置指令,获取上述第一配置指令中的订阅主题以及配置数据;上述消息转发平台基于上述订阅主题和上述第一对应关系确定目标FPGA;上述消息转发平台利用预设编码算法,对上述订阅主题和上述配置数据进行编码得到第二配置指令;上述消息转发平台向上述目标FPGA发送第二配置指令,使得上述FPGA基于上述第二配置指令进行配置。According to an embodiment of the present invention, the message forwarding platform also stores a first correspondence between different subscription topics and FPGAs, and the method further includes: the message forwarding platform obtains the subscription topic and configuration data in the first configuration instruction in response to receiving the first configuration instruction sent by the data acquisition platform; the message forwarding platform determines the target FPGA based on the subscription topic and the first correspondence; the message forwarding platform uses a preset encoding algorithm to encode the subscription topic and the configuration data to obtain a second configuration instruction; the message forwarding platform sends the second configuration instruction to the target FPGA, so that the FPGA is configured based on the second configuration instruction.
根据本发明的实施例,上述消息转发平台基于上述编码类型从多个解码算法中确定目标解码算法;上述消息转发平台利用上述目标解码算法,基于上述消息体中的第一配置指令得到订阅主题以及配置数据。According to an embodiment of the present invention, the message forwarding platform determines a target decoding algorithm from multiple decoding algorithms based on the encoding type; the message forwarding platform uses the target decoding algorithm to obtain a subscription topic and configuration data based on the first configuration instruction in the message body.
根据本发明的实施例,上述消息转发平台与多个FPGA进行信息交互,上述方法还包括:上述消息转发平台响应于接收到上述多个FPGA发送的传输信息,利用预设解码算法,基于上述传输信息得到探测数据;上述消息转发平台缓存上述探测数据;上述消息转发平台响应于数据获取平台的拉取指令,向上述数据获取平台发送上述探测数据。According to an embodiment of the present invention, the message forwarding platform interacts with multiple FPGAs for information exchange, and the method further includes: the message forwarding platform, in response to receiving transmission information sent by the multiple FPGAs, obtains detection data based on the transmission information using a preset decoding algorithm; the message forwarding platform caches the detection data; the message forwarding platform responds to a pull instruction from the data acquisition platform and sends the detection data to the data acquisition platform.
本发明的第二方面提供了一种基于FPGA的发布订阅式消息传输系统,上述FPGA包括通信模块和消费模块,上述通信模块与消息转发平台进行信息交互,上述消息转发平台部署于分布式集群,所述消息转发平台包括管理节点和运行节点,上述FPGA还存储有上述消息转发平台的管理节点地址标识,包括:连接建立模块,用于与上述消息转发平台建立通讯连接;查询模块,用于通过上述通信模块向上述管理节点地址标识对应的管理节点发送查询指令,上述查询指令包括预设订阅主题,上述预设订阅主题是基于与上述FPGA交互的探测器的探测通道设置的,上述探测通道表征探测器采集的数据类型和/或采集位置;连接模块,用于响应于接收到的与上述预设订阅主题具有对应关系的运行节点地址标识,与上述运行节点建立连接;订阅主题发送模块,用于向上述运行节点发送预设订阅主题,使得上述消息转发平台保存上述FPGA与订阅主题的对应关系;解码模块,用于响应于接收到的上述消息转发平台发送的配置指令, 上述消费模块利用预设解码算法基于上述配置指令得到配置数据;配置模块,用于基于上述配置数据配置上述FPGA;以及采集数据发送模块,用于响应于接收到上述探测器发送的采集数据,向上述运行节点发送封装后的采集数据,使得上述消息转发平台缓存并转发上述封装后的采集数据,上述采集数据是基于上述探测器的多个探测通道采集得到的。The second aspect of the present invention provides a publish-subscribe message transmission system based on FPGA, wherein the FPGA includes a communication module and a consumption module, the communication module interacts with a message forwarding platform, the message forwarding platform is deployed in a distributed cluster, the message forwarding platform includes a management node and an operation node, and the FPGA also stores the management node address identifier of the message forwarding platform, including: a connection establishment module, used to establish a communication connection with the message forwarding platform; a query module, used to send a query instruction to the management node corresponding to the management node address identifier through the communication module, the query instruction includes a preset subscription topic, the preset subscription topic is set based on the detection channel of the detector interacting with the FPGA, and the detection channel represents the data type and/or collection location collected by the detector; a connection module, used to establish a connection with the operation node in response to a received operation node address identifier having a corresponding relationship with the preset subscription topic; a subscription topic sending module, used to send a preset subscription topic to the operation node, so that the message forwarding platform saves the corresponding relationship between the FPGA and the subscription topic; a decoding module, used to respond to the received configuration instruction sent by the message forwarding platform, The above-mentioned consumption module uses a preset decoding algorithm to obtain configuration data based on the above-mentioned configuration instructions; the configuration module is used to configure the above-mentioned FPGA based on the above-mentioned configuration data; and the collection data sending module is used to respond to receiving the collection data sent by the above-mentioned detector, send the packaged collection data to the above-mentioned operation node, so that the above-mentioned message forwarding platform caches and forwards the above-mentioned packaged collection data, and the above-mentioned collection data is obtained based on the collection of multiple detection channels of the above-mentioned detector.
根据本发明的实施例,上述FPGA还包括协调模块和多个生产模块,上述系统还包括:待封装数据获取模块,用于对于每个处于空闲状态的上述生产模块,响应于接收到的上述协调模块发送的使能信号,获取待封装探测数据;封装模块,用于利用预设封装算法,对上述待封装探测数据进行封装得到待传输信息;待传输信息发送模块,用于通过上述通信模块向上述运行节点发送上述待传输信息;删除模块,用于响应于接收到的上述消息转发平台发送的与上述待传输信息对应的确认标识,删除缓存中的上述待传输信息。According to an embodiment of the present invention, the above-mentioned FPGA also includes a coordination module and multiple production modules, and the above-mentioned system also includes: a data acquisition module for obtaining data to be packaged, which is used for obtaining detection data to be packaged for each of the above-mentioned production modules in an idle state in response to an enable signal sent by the above-mentioned coordination module; an encapsulation module, which uses a preset encapsulation algorithm to encapsulate the above-mentioned detection data to be packaged to obtain information to be transmitted; an information sending module for sending the above-mentioned information to be transmitted to the above-mentioned running node through the above-mentioned communication module; and a deletion module, which is used to delete the above-mentioned information to be transmitted in the cache in response to a confirmation identifier corresponding to the above-mentioned information to be transmitted sent by the above-mentioned message forwarding platform.
根据本发明的实施例,上述系统还包括:控制信息解码模块,用于响应于接收到的上述消息转发平台发送的控制信息, 上述消费模块利用预设解码算法基于上述控制信息得到控制指令和订阅主题;探测器控制模块,用于向与上述订阅主题对应的探测器发送上述控制指令,使得上述探测器执行与上述控制指令对应的操作。According to an embodiment of the present invention, the above-mentioned system also includes: a control information decoding module, which is used to respond to the control information sent by the above-mentioned message forwarding platform, and the above-mentioned consumption module obtains the control instruction and the subscription topic based on the above-mentioned control information using a preset decoding algorithm; a detector control module, which is used to send the above-mentioned control instruction to the detector corresponding to the above-mentioned subscription topic, so that the above-mentioned detector performs the operation corresponding to the above-mentioned control instruction.
根据本发明的实施例,上述系统还包括消息转发平台,上述消息转发平台还存储有不同订阅主题与FPGA的第一对应关系,上述消息转发平台还包括:获取模块,用于响应于接收到数据获取平台发送的第一配置指令,获取上述第一配置指令中的订阅主题以及配置数据;确定模块,用于基于上述订阅主题和上述第一对应关系确定目标FPGA;编码模块,用于利用预设编码算法,对上述订阅主题和上述配置数据进行编码得到第二配置指令;配置指令发送模块,用于向上述目标FPGA发送第二配置指令,使得上述FPGA基于上述第二配置指令进行配置。According to an embodiment of the present invention, the system also includes a message forwarding platform, which also stores a first correspondence between different subscription topics and FPGAs. The message forwarding platform also includes: an acquisition module, which is used to obtain the subscription topic and configuration data in the first configuration instruction in response to receiving a first configuration instruction sent by the data acquisition platform; a determination module, which is used to determine the target FPGA based on the subscription topic and the first correspondence; an encoding module, which is used to encode the subscription topic and the configuration data using a preset encoding algorithm to obtain a second configuration instruction; and a configuration instruction sending module, which is used to send the second configuration instruction to the target FPGA so that the FPGA is configured based on the second configuration instruction.
根据本发明的实施例,上述第一配置指令为预设编码格式,上述预设编码格式包括包长度、编码类型、包头长度、包头和信息体,上述获取模块包括:目标解码算法确定子模块,用于基于上述编码类型从多个解码算法中确定目标解码算法;第一配置指令解码子模块,用于利用上述目标解码算法,基于上述消息体中的第一配置指令得到订阅主题以及配置数据。According to an embodiment of the present invention, the above-mentioned first configuration instruction is a preset coding format, and the above-mentioned preset coding format includes packet length, coding type, packet header length, packet header and information body. The above-mentioned acquisition module includes: a target decoding algorithm determination submodule, which is used to determine the target decoding algorithm from multiple decoding algorithms based on the above-mentioned coding type; a first configuration instruction decoding submodule, which is used to use the above-mentioned target decoding algorithm to obtain the subscription topic and configuration data based on the first configuration instruction in the above-mentioned message body.
根据本发明的实施例,上述消息转发平台与多个FPGA进行信息交互,上述系统还包括:传输信息解码模块,用于响应于接收到上述多个FPGA发送的传输信息,利用预设解码算法,基于上述传输信息得到探测数据;探测数据缓存模块,用于缓存上述探测数据;探测数据发送模块,用于响应于数据获取平台的拉取指令,向上述数据获取平台发送上述探测数据。According to an embodiment of the present invention, the message forwarding platform interacts with multiple FPGAs for information exchange, and the system further includes: a transmission information decoding module for obtaining detection data based on the transmission information received from the multiple FPGAs using a preset decoding algorithm; a detection data caching module for caching the detection data; and a detection data sending module for sending the detection data to the data acquisition platform in response to a pull instruction from the data acquisition platform.
本发明的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个计算机程序,其中,上述一个或多个处理器执行上述一个或多个计算机程序以实现上述方法的步骤。A third aspect of the present invention provides an electronic device, comprising: one or more processors; a memory for storing one or more computer programs, wherein the one or more processors execute the one or more computer programs to implement the steps of the above method.
本发明的第四方面还提供了一种计算机可读存储介质,其上存储有计算机程序或指令,上述计算机程序或指令被处理器执行时实现上述方法的步骤。The fourth aspect of the present invention further provides a computer-readable storage medium having a computer program or instructions stored thereon, which implements the steps of the above method when the computer program or instructions are executed by a processor.
本发明的第五方面还提供了一种计算机程序产品,包括计算机程序或指令,上述计算机程序或指令被处理器执行时实现上述方法的步骤。The fifth aspect of the present invention also provides a computer program product, including a computer program or instructions, which implement the steps of the above method when executed by a processor.
根据本发明实施例,通过向消息转发平台中的管理节点发送查询指令获得FPGA上对应订阅主题的运行节点地址标识并与上述运行节点建立连接发送预设订阅主题,使得消息转发平台保存FPGA和订阅主题的对应关系,从而在消息转发平台接收到对应主题的配置指令时,转发给对应的FPGA进行配置,解决了CPU限制数据转发量的问题,进一步地通过发布订阅式的数据传输,对系统进行解耦,提升系统的拓展性。According to an embodiment of the present invention, a query instruction is sent to a management node in a message forwarding platform to obtain an address identifier of a running node corresponding to a subscription topic on the FPGA, and a connection is established with the above-mentioned running node to send a preset subscription topic, so that the message forwarding platform saves the correspondence between the FPGA and the subscription topic. When the message forwarding platform receives a configuration instruction of the corresponding topic, it forwards it to the corresponding FPGA for configuration, thereby solving the problem of the CPU limiting the amount of data forwarding. Further, through publish-subscribe data transmission, the system is decoupled and the scalability of the system is improved.
附图说明BRIEF DESCRIPTION OF THE DRAWINGS
通过以下参照附图对本发明实施例的描述,本发明的上述内容以及其他目的、特征和优点将更为清楚,在附图中:The above contents and other objects, features and advantages of the present invention will become more apparent through the following description of the embodiments of the present invention with reference to the accompanying drawings, in which:
图1示出了相关技术中一种读出电子学系统;FIG1 shows a readout electronics system in the related art;
图2示出了相关技术中另一种读出电子学系统;FIG2 shows another readout electronics system in the related art;
图3示出了根据本发明实施例的基于FPGA的发布订阅式消息传输方法、系统的应用场景图;FIG3 shows an application scenario diagram of a publish-subscribe message transmission method and system based on FPGA according to an embodiment of the present invention;
图4示出了根据本发明实施例的基于FPGA的发布订阅式消息传输方法的流程图;FIG4 shows a flow chart of a publish-subscribe message transmission method based on FPGA according to an embodiment of the present invention;
图5示出了根据本发明实施例的通信模块的有限状态机示意图;FIG5 shows a schematic diagram of a finite state machine of a communication module according to an embodiment of the present invention;
图6示出了根据本发明实施例的FPGA中的消息机制通信模块的示意图;FIG6 shows a schematic diagram of a message mechanism communication module in an FPGA according to an embodiment of the present invention;
图7示出了根据本发明实施例的生产模块的单元时序图;FIG7 shows a unit timing diagram of a production module according to an embodiment of the present invention;
图8示出了根据本发明实施例的消息编码方式;FIG8 shows a message encoding method according to an embodiment of the present invention;
图9示出了根据本发明实施例的推送消费模块示意图;FIG9 shows a schematic diagram of a push consumption module according to an embodiment of the present invention;
图10示出了根据本发明实施例的数据读出系统;FIG10 shows a data readout system according to an embodiment of the present invention;
图11示出了根据本发明实施例的吞吐率测试结果;FIG11 shows a throughput test result according to an embodiment of the present invention;
图12示出了根据本发明实施例的基于FPGA的发布订阅式消息传输系统的结构框图;FIG12 shows a block diagram of a publish-subscribe message transmission system based on FPGA according to an embodiment of the present invention;
图13示出了根据本发明实施例的适于实现基于FPGA的发布订阅式消息传输方法的电子设备的方框图。FIG. 13 shows a block diagram of an electronic device suitable for implementing a publish-subscribe message transmission method based on FPGA according to an embodiment of the present invention.
具体实施方式DETAILED DESCRIPTION
以下,将参照附图来描述本发明的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本发明实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。Below, embodiments of the present invention will be described with reference to the accompanying drawings. However, it should be understood that these descriptions are exemplary only and are not intended to limit the scope of the present invention. In the following detailed description, for ease of explanation, many specific details are set forth to provide a comprehensive understanding of embodiments of the present invention. However, it is apparent that one or more embodiments may also be implemented without these specific details. In addition, in the following description, descriptions of known structures and technologies are omitted to avoid unnecessary confusion of concepts of the present invention.
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。The terms used herein are only for describing specific embodiments and are not intended to limit the present invention. The terms "comprise", "include", etc. used herein indicate the existence of the features, steps, operations and/or components, but do not exclude the existence or addition of one or more other features, steps, operations or components.
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。All terms (including technical and scientific terms) used herein have the meanings commonly understood by those skilled in the art unless otherwise defined. It should be noted that the terms used herein should be interpreted as having a meaning consistent with the context of this specification and should not be interpreted in an idealized or overly rigid manner.
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。When using expressions such as "at least one of A, B, and C, etc.", they should generally be interpreted according to the meaning of the expression commonly understood by those skilled in the art (for example, "a system having at least one of A, B, and C" should include but is not limited to a system having A alone, B alone, C alone, A and B, A and C, B and C, and/or A, B, C, etc.).
在本发明的技术方案中,所涉及的用户信息(包括但不限于用户个人信息、用户图像信息、用户设备信息,例如位置信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、存储、使用、加工、传输、提供、发明和应用等处理,均遵守相关法律法规和标准,采取了必要保密措施,不违背公序良俗,并提供有相应的操作入口,供用户选择授权或者拒绝。In the technical solution of the present invention, the user information (including but not limited to user personal information, user image information, user device information, such as location information, etc.) and data (including but not limited to data used for analysis, stored data, displayed data, etc.) involved are all information and data authorized by the user or fully authorized by all parties, and the collection, storage, use, processing, transmission, provision, invention and application of the relevant data comply with relevant laws, regulations and standards, take necessary confidentiality measures, do not violate public order and good morals, and provide corresponding operation entrances for users to choose to authorize or refuse.
在利用个人信息进行自动化决策的场景下,本发明实施例提供的方法、设备和系统均为用户提供相应的操作入口,供用户选择同意或者拒绝自动化决策结果;若用户选择拒绝,则进入专家决策流程。此处的表述“自动化决策”是指通过计算机程序自动分析、评估个人的行为习惯、兴趣爱好或者经济、健康、信用状况等,并进行决策的活动。此处的表述“专家决策”是指专门从事某一领域的工作、具有专门的经验、知识和技能并达到一定的专业水平的人员进行决策的活动。In the scenario of using personal information for automated decision-making, the methods, devices, and systems provided by the embodiments of the present invention provide users with corresponding operation portals for users to choose to agree or reject the automated decision-making results; if the user chooses to reject, the expert decision-making process will be entered. The expression "automated decision-making" here refers to the activity of automatically analyzing and evaluating an individual's behavioral habits, interests and hobbies, or economic, health, credit status, etc. through computer programs, and making decisions. The expression "expert decision-making" here refers to the activity of making decisions by people who specialize in a certain field, have specialized experience, knowledge and skills, and have reached a certain level of professionalism.
随着实验装置功率的提升和新探测技术的应用,核与粒子物理实验中产生的数据量显著增加。在这种情况下,信号读出系统面临的主要挑战是如何灵活、高效、实时地读出多通道的海量数据。因此,高性能、灵活解耦的数据传输技术成为当前读出系统设计的关键。信号读出系统的主要部分包括:探测器,前端模拟电路,读出电子学和数据获取系统。其中在核与粒子物理实验装置中各式探测器用来捕获实验过程中的各种微观粒子产生的电信号,然后送到紧邻探测器的前端电子学,将电信号进行模拟调理和处理,得到有关物理信息(如能量、时间、电荷量等)的信号,接着信号被送到读出电子学系统,将相关物理信息转化为约定格式的数字信号,最后这些数字信号被数据获取系统接收、实时处理和存储。在传统的读出电子学系统中,通常由一个CPU来在FPGA和数据获取系统之间转发数据。With the increase in the power of experimental devices and the application of new detection technologies, the amount of data generated in nuclear and particle physics experiments has increased significantly. In this case, the main challenge facing the signal readout system is how to flexibly, efficiently and in real time read out the massive data of multiple channels. Therefore, high-performance, flexible and decoupled data transmission technology has become the key to the design of the current readout system. The main parts of the signal readout system include: detectors, front-end analog circuits, readout electronics and data acquisition systems. Among them, various detectors in nuclear and particle physics experimental devices are used to capture the electrical signals generated by various microscopic particles during the experiment, and then sent to the front-end electronics adjacent to the detectors to perform analog conditioning and processing on the electrical signals to obtain signals related to physical information (such as energy, time, charge, etc.). Then the signals are sent to the readout electronics system to convert the relevant physical information into digital signals in a specified format. Finally, these digital signals are received, processed and stored in real time by the data acquisition system. In traditional readout electronics systems, a CPU is usually used to forward data between the FPGA and the data acquisition system.
图1示出了相关技术中一种读出电子学系统。FIG. 1 shows a readout electronics system in the related art.
如图1所示,FPGA和CPU互相独立,FPGA通过NIM(Network Interface Module,网络接口模块),PCI(Peripheral Component Interconnect,外围组件互连)或PCIe(Peripheral Component Interconnect Express,周边设备高速连接标准)板间总线实现和机箱零槽中CPU的通信。数据从各个读出插件(FPGA)通过机箱背板总线汇总到零槽中,零槽中的CPU将汇总后的数据通过TCP/IP(Transmission Control Protocol/InternetProtocol,传输控制协议/互联网协议)发往数据获取系统,在这种读出电子学结构中,将FPGA侧的数据通过机箱背板总线汇总集中,这种设计使得机箱背板总线的传输速度容易成为整个电子学读出系统的性能瓶颈。As shown in Figure 1, FPGA and CPU are independent of each other. FPGA communicates with CPU in slot zero of chassis through NIM (Network Interface Module), PCI (Peripheral Component Interconnect) or PCIe (Peripheral Component Interconnect Express). Data is aggregated from each readout plug-in (FPGA) to slot zero through chassis backplane bus. CPU in slot zero sends the aggregated data to data acquisition system through TCP/IP (Transmission Control Protocol/Internet Protocol). In this readout electronics structure, data on FPGA side is aggregated through chassis backplane bus. This design makes the transmission speed of chassis backplane bus easily become the performance bottleneck of the entire electronic readout system.
图2示出了相关技术中另一种读出电子学系统。FIG. 2 shows another readout electronics system in the related art.
如图2所示,该读出电子学系统采用了SoC(System on Chip,片上系统) FPGA技术,将嵌入式系统中常用的CPU系统以及FPGA集成在了同一块芯片中。FPGA与CPU之间利用片内总线、采用芯片内总线标准进行数据传输,CPU将单个读出插件中FPGA采集的数据直接发往数据获取系统。这种读出电子学系统结构中,SoC FPGA简化了硬件设计,但它的成本、功耗比普通FPGA更高;并且由于SoC FPGA芯片同时集成了处理器和可编程逻辑,其处理器部分的性能有限,会成为读出插件数据传输的吞吐率瓶颈,其处理器特性是固定的,灵活性不如纯FPGA。As shown in Figure 2, the readout electronics system uses SoC (System on Chip) FPGA technology, integrating the CPU system and FPGA commonly used in embedded systems into the same chip. The FPGA and CPU use the on-chip bus and the on-chip bus standard for data transmission, and the CPU directly sends the data collected by the FPGA in a single readout plug-in to the data acquisition system. In this readout electronics system structure, SoC FPGA simplifies the hardware design, but its cost and power consumption are higher than ordinary FPGAs; and because the SoC FPGA chip integrates both the processor and programmable logic, the performance of its processor part is limited, which will become the throughput bottleneck of the readout plug-in data transmission. Its processor characteristics are fixed and its flexibility is not as good as that of pure FPGA.
有鉴于此,本发明的实施例提供了一种基于FPGA的发布订阅式消息传输方法,FPGA包括通信模块和消费模块,通信模块与消息转发平台进行信息交互,消息转发平台部署于分布式集群,消息转发平台包括管理节点和运行节点,FPGA还存储有消息转发平台的管理节点地址标识,方法包括:与消息转发平台建立通讯连接; 通过通信模块向与管理节点地址标识对应的管理节点发送查询指令,查询指令包括预设订阅主题,预设订阅主题是根据与FPGA交互的探测器的探测通道设置的,探测通道表征探测器采集的数据类型和/或采集位置;响应于接收到的与预设订阅主题具有对应关系的运行节点地址标识,与消息转发平台的运行节点建立连接;向运行节点发送预设订阅主题,使得消息转发平台保存FPGA与订阅主题的对应关系;响应于接收到的消息转发平台发送的配置指令, 消费模块利用预设解码算法基于配置指令得到配置数据;基于配置数据配置FPGA。In view of this, an embodiment of the present invention provides a publish-subscribe message transmission method based on FPGA, wherein the FPGA includes a communication module and a consumption module, the communication module interacts with a message forwarding platform for information, the message forwarding platform is deployed in a distributed cluster, the message forwarding platform includes a management node and an operation node, and the FPGA also stores an address identifier of the management node of the message forwarding platform, and the method includes: establishing a communication connection with the message forwarding platform; sending a query instruction to the management node corresponding to the address identifier of the management node through the communication module, the query instruction including a preset subscription topic, the preset subscription topic is set according to the detection channel of the detector interacting with the FPGA, and the detection channel represents the data type and/or collection location collected by the detector; in response to the received operation node address identifier having a corresponding relationship with the preset subscription topic, establishing a connection with the operation node of the message forwarding platform; sending the preset subscription topic to the operation node, so that the message forwarding platform saves the corresponding relationship between the FPGA and the subscription topic; in response to the received configuration instruction sent by the message forwarding platform, the consumption module obtains configuration data based on the configuration instruction using a preset decoding algorithm; and configures the FPGA based on the configuration data.
图3示出了根据本发明实施例的基于FPGA的发布订阅式消息传输方法、系统的应用场景图。FIG. 3 shows an application scenario diagram of a publish-subscribe message transmission method and system based on FPGA according to an embodiment of the present invention.
如图3所示,根据该实施例的应用场景300可以包括第一探测器301、第二探测器302、第三探测器303、第一读出节点304、第二读出节点305、第三读出节点306、网络307、第一服务器308和终端设备309。网络307用以在第一探测器301、第二探测器302、第三探测器303、第一读出节点304、第二读出节点305、第三读出节点306、第一服务器308和终端设备309之间提供通信链路的介质。网络307可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。As shown in Fig. 3, the application scenario 300 according to this embodiment may include a first detector 301, a second detector 302, a third detector 303, a first readout node 304, a second readout node 305, a third readout node 306, a network 307, a first server 308, and a terminal device 309. The network 307 is used to provide a medium for a communication link between the first detector 301, the second detector 302, the third detector 303, the first readout node 304, the second readout node 305, the third readout node 306, the first server 308, and the terminal device 309. The network 307 may include various connection types, such as wired, wireless communication links or optical fiber cables, etc.
第一探测器301、第二探测器302、第三探测器303通过网络307分别与第一读出节点304、第二读出节点305、第三读出节点306交互,以接收或发送消息等。The first detector 301 , the second detector 302 , and the third detector 303 interact with the first readout node 304 , the second readout node 305 , and the third readout node 306 respectively through the network 307 to receive or send messages and the like.
第一读出节点304、第二读出节点305、第三读出节点306可以包含有数字化模块和FPGA,前述数字化模块用于将探测器采集数据进行数字化并发送给FPGA,FPGA通过内部映射模块将不同探测器通道和订阅主题进行映射,通过网络307将数据发送给运行有消息转发平台的第一服务器308。The first readout node 304, the second readout node 305, and the third readout node 306 may include a digitization module and an FPGA. The digitization module is used to digitize the data collected by the detector and send it to the FPGA. The FPGA maps different detector channels and subscription topics through an internal mapping module, and sends the data to a first server 308 running a message forwarding platform through a network 307.
第一服务器308可以是提供各种服务的服务器,例如为浏览网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备,其中第一服务器308可以运行有消息转发平台。The first server 308 may be a server that provides various services, such as a background management server that provides support for browsing websites (for example only). The background management server may analyze and process the received user request and other data, and feed back the processing results (such as web pages, information, or data obtained or generated according to the user request) to the terminal device, wherein the first server 308 may run a message forwarding platform.
终端设备309可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。The terminal device 309 may be any electronic device having a display screen and supporting web browsing, including but not limited to a smart phone, a tablet computer, a laptop computer, a desktop computer, and the like.
需要说明的是,本发明实施例所提供的基于FPGA的发布订阅式消息传输方法一般可以由第一服务器308执行。相应地,本发明实施例所提供的基于FPGA的发布订阅式消息传输装置一般可以设置于第一服务器308中。本发明实施例所提供的基于FPGA的发布订阅式消息传输方法也可以由不同于第一服务器308且能够与第一读出节点304、第二读出节点305、第三读出节点306和/或第一服务器308通信的服务器或服务器集群执行。相应地,本发明实施例所提供的基于FPGA的发布订阅式消息传输装置也可以设置于不同于第一服务器308且能够与第一读出节点304、第二读出节点305、第三读出节点306和/或第一服务器308通信的服务器或服务器集群中。It should be noted that the FPGA-based publish-subscribe message transmission method provided in the embodiment of the present invention can generally be executed by the first server 308. Accordingly, the FPGA-based publish-subscribe message transmission device provided in the embodiment of the present invention can generally be set in the first server 308. The FPGA-based publish-subscribe message transmission method provided in the embodiment of the present invention can also be executed by a server or server cluster that is different from the first server 308 and can communicate with the first read node 304, the second read node 305, the third read node 306 and/or the first server 308. Correspondingly, the FPGA-based publish-subscribe message transmission device provided in the embodiment of the present invention can also be set in a server or server cluster that is different from the first server 308 and can communicate with the first read node 304, the second read node 305, the third read node 306 and/or the first server 308.
应该理解,图3中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的探测器、读出节点、终端设备、网络和服务器。It should be understood that the number of terminal devices, networks and servers in Figure 3 is only illustrative. According to implementation requirements, there may be any number of detectors, readout nodes, terminal devices, networks and servers.
以下将基于图3描述的场景,通过图4~图11对本发明实施例的基于FPGA的发布订阅式消息传输方法进行详细描述。Based on the scenario described in FIG. 3 , the publish-subscribe message transmission method based on FPGA according to an embodiment of the present invention will be described in detail below through FIGS. 4 to 11 .
图4示出了根据本发明实施例的基于FPGA的发布订阅式消息传输方法的流程图。FIG. 4 shows a flow chart of a publish-subscribe message transmission method based on FPGA according to an embodiment of the present invention.
如图4所示,该实施例的基于FPGA的发布订阅式消息传输方法包括操作S410~操作S470。As shown in FIG. 4 , the publish-subscribe message transmission method based on FPGA of this embodiment includes operations S410 to S470 .
需要注意的是,本发明实施例的FPGA包括通信模块和消费模块,通信模块与消息转发平台进行信息交互,消息转发平台部署于分布式集群,消息转发平台包括管理节点和运行节点,FPGA还存储有消息转发平台的管理节点地址标识。It should be noted that the FPGA of the embodiment of the present invention includes a communication module and a consumption module. The communication module interacts with the message forwarding platform. The message forwarding platform is deployed in a distributed cluster. The message forwarding platform includes a management node and an operation node. The FPGA also stores the management node address identifier of the message forwarding platform.
在操作S410,与消息转发平台建立通讯连接。In operation S410, a communication connection is established with a message forwarding platform.
需要注意的是,本发明中是直接由FPGA与消息转发平台建立通讯连接的,本发明中的FPGA是不包含CPU的。It should be noted that in the present invention, the communication connection is directly established between the FPGA and the message forwarding platform, and the FPGA in the present invention does not include a CPU.
在操作S420,通过通信模块向与管理节点地址标识对应的管理节点发送查询指令。In operation S420, a query instruction is sent to a management node corresponding to the management node address identifier through a communication module.
其中,查询指令包括预设订阅主题,预设订阅主题是根据与FPGA交互的探测器的探测通道设置的,探测通道表征探测器采集的数据类型和/或采集位置。The query instruction includes a preset subscription topic, which is set according to a detection channel of a detector interacting with the FPGA, and the detection channel represents the type of data and/or the collection position collected by the detector.
根据本发明实施例,上述消息转发平台例如可以是Apache Kafka、Apache Pulsar等,优选地可以是RocketMQ,其中,Kafka、Pulsar均使用ZooKeeper协调服务器集群元数据,Pulsar还需使用BookKeeper实现消息存储,这些外部组件的依赖会增加系统设计复杂度和维护难度。RocketMQ不依赖于任何外部组件,并与Kafka同为当前吞吐率最高的消息技术(单机吞吐率为十万条/秒量级),出于性能、复杂度与可维护性考虑,本发明实施例优选RocketMQ来实现基于FPGA的发布订阅式消息传输方法。以下将以RocketMQ来进行举例说明,相关技术中RocketMQ不支持与FPGA进行通信,因此需要在现有RocketMQ协议基础上,针对FPGA制定通信协议,其包含网络层、数据交互层和消息层三部分。According to an embodiment of the present invention, the message forwarding platform may be, for example, Apache Kafka, Apache Pulsar, etc., preferably RocketMQ, wherein both Kafka and Pulsar use ZooKeeper to coordinate server cluster metadata, and Pulsar also needs to use BookKeeper to implement message storage. The reliance on these external components will increase the complexity of system design and the difficulty of maintenance. RocketMQ does not rely on any external components, and is the message technology with the highest throughput rate (single-machine throughput rate is in the order of 100,000 messages/second) together with Kafka. For performance, complexity and maintainability considerations, RocketMQ is preferably used in an embodiment of the present invention to implement a publish-subscribe message transmission method based on FPGA. RocketMQ will be used as an example below. In the related art, RocketMQ does not support communication with FPGA, so it is necessary to formulate a communication protocol for FPGA based on the existing RocketMQ protocol, which includes three parts: network layer, data interaction layer and message layer.
根据本发明实施例,RocketMQ网络层基于TCP/IP协议通信基础之上,FPGA采用SiTCP模块来与RocketMQ的服务器进行基础的TCP/IP连接建立与通信,SiTCP是一个IPCore(Intellectual Property Core,知识产权核心),可以集成到FPGA中。According to an embodiment of the present invention, the RocketMQ network layer is based on the TCP/IP protocol communication. The FPGA uses the SiTCP module to establish and communicate with the RocketMQ server through a basic TCP/IP connection. SiTCP is an IPCore (Intellectual Property Core) that can be integrated into the FPGA.
为了便于理解,首先对本发明中的发布订阅式消息传输做出解释,发布订阅式是一种消息传递模式,其包括了生产者和消费者,在生产者和消费者间通过消息转发平台进行通信,生产者发布消息到消息转发平台,而消费者订阅感兴趣的消息类型,当消息转发平台接收到新消息是,会将消息传递给所有订阅了相应消息类型的消费者。For ease of understanding, the publish-subscribe message transmission in the present invention is first explained. The publish-subscribe mode is a message delivery mode, which includes producers and consumers. Producers and consumers communicate through a message forwarding platform. Producers publish messages to the message forwarding platform, and consumers subscribe to the message types of interest. When the message forwarding platform receives a new message, it will pass the message to all consumers who have subscribed to the corresponding message type.
根据本发明实施例,在上述网络层上是数据交互层,RocketMQ作为消息转发平台会在生产者和消费者之间进行消息传递,FPGA和消息转发平台之间采用请求/响应模式的通信协议,请求和响应一般使用相同的通用格式和相同的编码解码方法。消息转发平台会将生产者和消费者视为客户端,在消息机制通信中,客户端的请求包括:生产消息请求、发布消息请求、订阅主题请求和查询主题的路由信息请求等,消息转发平台则按照预定义的协议响应这些请求。According to an embodiment of the present invention, the data interaction layer is located above the network layer. RocketMQ, as a message forwarding platform, transmits messages between producers and consumers. A request/response communication protocol is used between the FPGA and the message forwarding platform. Requests and responses generally use the same general format and the same encoding and decoding methods. The message forwarding platform regards producers and consumers as clients. In the message mechanism communication, the client's requests include: message production request, message publishing request, topic subscription request, topic query routing information request, etc. The message forwarding platform responds to these requests according to the predefined protocol.
根据本发明实施例,在上述通信协议最上层是消息协议,其定义了消息的生产和消费行为,FPGA发送探测器采集的科学数据,属于消息生产;而FPGA接收来自数据获取平台的配置信息和慢控制信息,则属于消息消费。According to an embodiment of the present invention, the top layer of the above-mentioned communication protocol is the message protocol, which defines the production and consumption behaviors of messages. FPGA sends scientific data collected by the detector, which belongs to message production; and FPGA receives configuration information and slow control information from the data acquisition platform, which belongs to message consumption.
在操作S430,响应于接收到的与预设订阅主题具有对应关系的运行节点地址标识,与消息转发平台的运行节点建立连接。In operation S430, in response to the received operating node address identifier having a corresponding relationship with the preset subscription topic, a connection is established with the operating node of the message forwarding platform.
在操作S440,向运行节点发送预设订阅主题,使得消息转发平台保存FPGA与订阅主题的对应关系。In operation S440, a preset subscription topic is sent to the running node, so that the message forwarding platform saves the corresponding relationship between the FPGA and the subscription topic.
图5示出了根据本发明实施例的通信模块的有限状态机示意图。FIG5 shows a schematic diagram of a finite state machine of a communication module according to an embodiment of the present invention.
如图5所示,通信模块在启动后会自动进行初始化并基于消息转发平台的管理节点地址标识来与消息转发平台(RocketMQ)的管理节点(名字服务器)建立连接,并根据预设订阅主题从管理节点中查询到对应的运行节点(代理服务器),在地址查询解析成功后,通信模块让SiTCP模块断开与管理节点的连接,并重新与运行节点建立连接。在连接成功后,FPGA的通信模块向运行节点发送订阅主题的请求,使得消息转发平台保存上述FPGA与订阅主题的对应关系,之后通信模块将进入消息转发状态,当接收到消息转发平台的消息时将其广播至FPGA中对应的消费模块进行处理,当消息生产模块产出消息后会通过通信模块发送到消息转发平台中。需要注意的是,消息生产模块和消息消费模块可以根据消息的编号检测消息并自行处理。如果在连接消息转发平台运行节点或消息转发过程中连接中断导致超时,通信模块将进入异常超时状态,其会选择另一个运行节点进行连接或重新连接到管理节点以更新运行节点的地址。As shown in FIG5 , after startup, the communication module will automatically initialize and establish a connection with the management node (name server) of the message forwarding platform (RocketMQ) based on the management node address identifier of the message forwarding platform, and query the corresponding running node (proxy server) from the management node according to the preset subscription topic. After the address query and resolution is successful, the communication module allows the SiTCP module to disconnect from the management node and reconnect with the running node. After the connection is successful, the communication module of the FPGA sends a request for subscription topic to the running node, so that the message forwarding platform saves the corresponding relationship between the above FPGA and the subscription topic. After that, the communication module will enter the message forwarding state. When receiving the message from the message forwarding platform, it will broadcast it to the corresponding consumption module in the FPGA for processing. When the message production module produces the message, it will be sent to the message forwarding platform through the communication module. It should be noted that the message production module and the message consumption module can detect the message according to the message number and process it by themselves. If the connection is interrupted during the connection to the running node of the message forwarding platform or the message forwarding process, resulting in a timeout, the communication module will enter an abnormal timeout state, and it will select another running node to connect or reconnect to the management node to update the address of the running node.
根据本发明实施例,上述管理节点地址标识例如可以是管理节点的IP(InternetProtocol,互联网协议)地址和MAC(Media Access Control,媒体访问控制)地址。According to an embodiment of the present invention, the management node address identifier may be, for example, an IP (Internet Protocol) address and a MAC (Media Access Control) address of the management node.
在操作S450,响应于接收到的消息转发平台发送的配置指令,消费模块利用预设解码算法基于配置指令得到配置数据。In operation S450, in response to the received configuration instruction sent by the message forwarding platform, the consumption module obtains configuration data based on the configuration instruction using a preset decoding algorithm.
根据本发明实施例,上述消费模块接收由通信模块转发的配置指令,并将其解析为配置数据给FPGA中对应的用户逻辑执行。According to an embodiment of the present invention, the consumption module receives the configuration instruction forwarded by the communication module, and parses it into configuration data for execution by the corresponding user logic in the FPGA.
可选地,上述消费模块还可以配置为在在解析完成后向消息转发平台的运行节点返回确认消息,以确保消息的可靠消费。Optionally, the above-mentioned consumption module can also be configured to return a confirmation message to the running node of the message forwarding platform after the parsing is completed to ensure reliable consumption of the message.
在操作S460,基于配置数据配置FPGA。In operation S460 , the FPGA is configured based on the configuration data.
在操作S470,响应于接收到探测器发送的采集数据,向运行节点发送封装后的采集数据,使得消息转发平台缓存并转发封装后的采集数据。In operation S470, in response to receiving the collected data sent by the detector, the encapsulated collected data is sent to the running node, so that the message forwarding platform caches and forwards the encapsulated collected data.
其中,采集数据是基于探测器的多个探测通道采集得到的。The collected data is obtained based on multiple detection channels of the detector.
根据本发明实施例,在接收消息转发平台发送的配置指令的同时还可以将探测器采集到的数据封装后发送给消息转发平台,消息转发平台对采集数据进行封装并等待数据获取平台的拉取,在接收到拉取指令后将对应数据发送给数据获取平台。According to an embodiment of the present invention, while receiving the configuration instructions sent by the message forwarding platform, the data collected by the detector can also be encapsulated and sent to the message forwarding platform. The message forwarding platform encapsulates the collected data and waits for the data acquisition platform to pull it. After receiving the pulling instruction, the corresponding data is sent to the data acquisition platform.
根据本发明实施例,通过向消息转发平台中的管理节点发送查询指令获得FPGA上对应订阅主题的运行节点地址标识并与上述运行节点建立连接发送预设订阅主题,使得消息转发平台保存FPGA和订阅主题的对应关系,从而在消息转发平台接收到对应主题的配置指令时,转发给对应的FPGA进行配置,解决了CPU限制数据转发量的问题,进一步地通过发布订阅式的数据传输,对系统进行解耦,提升系统的拓展性,同时在接收配置指令时将采集数据发送给消息转发平台,由消息转发平台对采集数据进行缓存,可以提升系统的灵活性和拓展性。According to an embodiment of the present invention, a query instruction is sent to a management node in a message forwarding platform to obtain an address identifier of a running node corresponding to a subscription topic on the FPGA, and a connection is established with the above-mentioned running node to send a preset subscription topic, so that the message forwarding platform saves the correspondence between the FPGA and the subscription topic. When the message forwarding platform receives a configuration instruction of the corresponding topic, it forwards it to the corresponding FPGA for configuration, thereby solving the problem of CPU limiting the amount of data forwarding. Further, through publish-subscribe data transmission, the system is decoupled and the scalability of the system is improved. At the same time, when receiving the configuration instruction, the collected data is sent to the message forwarding platform, and the message forwarding platform caches the collected data, which can improve the flexibility and scalability of the system.
根据本发明实施例,上述FPGA还包括协调模块和多个生产模块,上述方法还包括:对于每个处于空闲状态的生产模块,响应于接收到的协调模块发送的使能信号,获取待封装探测数据;利用预设封装算法,对待封装探测数据进行封装得到待传输信息;通过通信模块向运行节点发送待传输信息;响应于接收到的消息转发平台发送的与待传输信息对应的确认标识,删除缓存中的待传输信息。According to an embodiment of the present invention, the above-mentioned FPGA also includes a coordination module and multiple production modules, and the above-mentioned method also includes: for each production module in an idle state, in response to the enable signal sent by the coordination module, obtaining the detection data to be packaged; using a preset packaging algorithm, packaging the detection data to be packaged to obtain information to be transmitted; sending the information to be transmitted to the running node through the communication module; in response to the confirmation identifier corresponding to the information to be transmitted sent by the received message forwarding platform, deleting the information to be transmitted in the cache.
图6示出了根据本发明实施例的FPGA中的消息机制通信模块的示意图。FIG6 shows a schematic diagram of a message mechanism communication module in an FPGA according to an embodiment of the present invention.
如图6所示,在FPGA中例化了多个生产模块来实现可靠的并发式消息生产,以利用万兆以太网带宽提高消息传输速率。每个生产模块将探测器采集到的数据封装成消息请求,通过发送互连模块传输给连接与路由模块中的通信模块通过SiTCP发送到消息转发平台,并缓存消息等待消息转发平台的运行节点确认,多个生产平台分别维护各自的消息生产流程控制,并共用一个发送通道,由一个协调模块协调各生产单元的数据输入与传输使能。As shown in Figure 6, multiple production modules are instantiated in the FPGA to achieve reliable concurrent message production, so as to improve the message transmission rate by using the 10 Gigabit Ethernet bandwidth. Each production module encapsulates the data collected by the detector into a message request, transmits it to the communication module in the connection and routing module through the sending interconnection module, and sends it to the message forwarding platform through SiTCP, and caches the message waiting for the confirmation of the running node of the message forwarding platform. Multiple production platforms maintain their own message production process control respectively, and share a sending channel. A coordination module coordinates the data input and transmission enable of each production unit.
图7示出了根据本发明实施例的生产模块的单元时序图。FIG. 7 shows a unit timing diagram of a production module according to an embodiment of the present invention.
如图7所示,生产模块存在6种状态,分别是空闲(idle)、接收数据消息封装(rx)、消息封装进程(process),等待使能(wait)、发送消息(tx)、等待确认(wait_ack)、接收确认(ack)。协调模块通过轮训选择一个处于空闲状态的生产模块,拉高其输入使能,将数据传输至该生产模块,在数据接收完成后,该生产单元对数据进行消息化封装,等待协调模块的使能信号,协调模块轮询选择已经封装完消息,准备就绪的生产模块,将该生产模块的发送使能信号拉高,该生产模块将数据传输至连接与路由模块进行发送;在发送结束后,生产模块进入等待确认状态,此时该生产模块依然缓存着之前发送的消息;直到协调模块接收到与发送消息具有相同编号值的响应消息,拉高该生产模块的接收确认(ack)信号,生产单元认为消息生产成功,清除缓存,进入空闲状态,等待下一轮消息生产。As shown in Figure 7, there are 6 states in the production module, namely idle, receiving data message encapsulation (rx), message encapsulation process (process), waiting for enable (wait), sending message (tx), waiting for confirmation (wait_ack), and receiving confirmation (ack). The coordination module selects a production module in an idle state through polling, pulls up its input enable, and transmits data to the production module. After the data is received, the production unit encapsulates the data into messages and waits for the enable signal of the coordination module. The coordination module polls and selects the production module that has completed the message encapsulation and is ready, pulls up the sending enable signal of the production module, and the production module transmits the data to the connection and routing module for sending; after the sending is completed, the production module enters the waiting for confirmation state, at which time the production module still caches the previously sent message; until the coordination module receives a response message with the same number value as the sent message, and pulls up the receiving confirmation (ack) signal of the production module, the production unit considers that the message production is successful, clears the cache, enters the idle state, and waits for the next round of message production.
根据本发明实施例,如果长时间没有收到响应消息,生产模块将重新向对应的运行节点发送该信息,直到超过预设重设次数。According to an embodiment of the present invention, if no response message is received for a long time, the production module will resend the message to the corresponding operation node until the preset reset times are exceeded.
根据本发明实施例,通过在FPGA中设置多个生产单元可以同时生产大量消息,提升消息传输速度,并且通过收到响应消息之前缓存发送消息,当接收到响应消息后才清除缓存中的消息,可以保证消息被消息转发平台正确接收和处理,提升了系统的可靠性,进一步地实现高吞吐、高可靠的数据消息传输机制。According to an embodiment of the present invention, by setting up multiple production units in the FPGA, a large number of messages can be produced simultaneously, thereby improving the message transmission speed. By caching the sent messages before receiving the response messages and clearing the messages in the cache after receiving the response messages, it can be ensured that the messages are correctly received and processed by the message forwarding platform, thereby improving the reliability of the system and further realizing a high-throughput, high-reliability data message transmission mechanism.
根据本发明实施例,上述方法还包括:响应于接收到的消息转发平台发送的控制信息, 消费模块利用预设解码算法基于控制信息得到控制指令和订阅主题;向与订阅主题对应的探测器发送控制指令,使得探测器执行与控制指令对应的操作。According to an embodiment of the present invention, the above method also includes: in response to the control information sent by the received message forwarding platform, the consumption module uses a preset decoding algorithm to obtain the control instruction and the subscription topic based on the control information; and sends the control instruction to the detector corresponding to the subscription topic, so that the detector performs the operation corresponding to the control instruction.
根据本发明实施例,在FPGA中还可以配置一个探测器通道主题映射模块,用于将探测器的通道与主题进行映射,从而实现对探测器的精确控制。According to an embodiment of the present invention, a detector channel-theme mapping module may also be configured in the FPGA to map the detector channel with the theme, thereby achieving precise control of the detector.
根据本发明实施例,通过消息转发平台来实时将控制信息转发给对应的FPGA,可以有效提高系统响应速度,并且通过将探测器通道与订阅主题进行映射关联,可以实现对探测器的精确控制。According to the embodiment of the present invention, the control information is forwarded to the corresponding FPGA in real time through the message forwarding platform, which can effectively improve the system response speed, and the detector can be accurately controlled by mapping and associating the detector channel with the subscription topic.
根据本发明实施例,上述消息转发平台还存储有不同订阅主题与FPGA的第一对应关系,上述方法还包括:消息转发平台响应于接收到数据获取平台发送的第一配置指令,获取第一配置指令中的订阅主题以及配置数据;消息转发平台基于订阅主题和第一对应关系确定目标FPGA;消息转发平台利用预设编码算法,对订阅主题和配置数据进行编码得到第二配置指令;消息转发平台向目标FPGA发送第二配置指令,使得FPGA基于第二配置指令进行配置。According to an embodiment of the present invention, the message forwarding platform also stores a first correspondence between different subscription topics and FPGAs, and the method also includes: the message forwarding platform obtains the subscription topic and configuration data in the first configuration instruction in response to receiving the first configuration instruction sent by the data acquisition platform; the message forwarding platform determines the target FPGA based on the subscription topic and the first correspondence; the message forwarding platform uses a preset encoding algorithm to encode the subscription topic and configuration data to obtain a second configuration instruction; the message forwarding platform sends the second configuration instruction to the target FPGA, so that the FPGA is configured based on the second configuration instruction.
根据本发明实施例,上述第一配置指令为预设编码格式,预设编码格式包括包长度、编码类型、包头长度、包头和信息体,获取第一配置指令中的订阅主题以及配置数据,包括:消息转发平台基于编码类型从多个解码算法中确定目标解码算法;消息转发平台利用目标解码算法,基于消息体中的第一配置指令得到订阅主题以及配置数据。According to an embodiment of the present invention, the above-mentioned first configuration instruction is a preset coding format, and the preset coding format includes packet length, coding type, packet header length, packet header and information body. Obtaining the subscription topic and configuration data in the first configuration instruction includes: the message forwarding platform determines the target decoding algorithm from multiple decoding algorithms based on the coding type; the message forwarding platform uses the target decoding algorithm to obtain the subscription topic and configuration data based on the first configuration instruction in the message body.
根据本发明实施例,上述第二配置指令也为上述预设编码格式。According to an embodiment of the present invention, the second configuration instruction is also in the preset encoding format.
根据本发明实施例,RocketMQ中统一的通信格式称为RemotingCommand,其定义了包长度、序列化类型、消息头和消息体,其中,消息头包含了请求码、请求编号以及用于扩展请求参数的字符串类型键值对表。现有对RemotingCommand的编解码方式为JSON、RocketMQ自定义编码等软件通用的序列化方法,为了适应FPGA的工作方式,本发明设计了一种基于码值定义的编码方式(FPGA_Serialize),如下图8示出了根据本发明实施例的消息编码方式。According to an embodiment of the present invention, the unified communication format in RocketMQ is called RemotingCommand, which defines the packet length, serialization type, message header and message body, wherein the message header includes a request code, a request number and a string type key-value pair table for extending request parameters. The existing encoding and decoding methods for RemotingCommand are software-general serialization methods such as JSON and RocketMQ custom encoding. In order to adapt to the working mode of FPGA, the present invention designs an encoding method (FPGA_Serialize) based on code value definition, as shown in Figure 8 below, which shows the message encoding method according to an embodiment of the present invention.
如图8所示,该编码格式包括包长度、编码类型、包头长度、包头和消息体,FPGA依据该编码方式来将数据进行序列化,并解析从RocketMQ运行接地那接收的消息或响应,RocketMQ也扩展了相应的协议格式支持,可以通过解析包格式中的编码类型字段,来找到对应的解码算法进行解编码,从而实现对来自数据获取平台或者FPGA的消息的通用化处理。As shown in Figure 8, the encoding format includes packet length, encoding type, header length, header and message body. FPGA serializes the data according to the encoding method and parses the message or response received from the RocketMQ running ground. RocketMQ has also expanded the corresponding protocol format support. By parsing the encoding type field in the packet format, the corresponding decoding algorithm can be found for decoding, thereby realizing universal processing of messages from the data acquisition platform or FPGA.
根据本发明实施例,在RemotingCommand的编码的现有基础上还需要增加对应于本发明中新增的编码方式对应的解码方式,可以在RocketMQ中定义一个对于FPGA的解码函数和一个对于FPGA的编码函数,在识别到编码类型字段为FPGA_Serialize时选择调用对应函数即可实现编码方式的扩展。According to an embodiment of the present invention, on the basis of the existing encoding of RemotingCommand, a decoding method corresponding to the newly added encoding method in the present invention needs to be added. A decoding function for FPGA and an encoding function for FPGA can be defined in RocketMQ. When the encoding type field is identified as FPGA_Serialize, the corresponding function can be called to implement the expansion of the encoding method.
根据本发明实施例,RocketMQ的运行节点目前并不支持推送消费模块,因此本方法在其中对应增加了推送消费模块。According to an embodiment of the present invention, the running node of RocketMQ currently does not support the push consumption module, so this method adds a push consumption module therein accordingly.
图9示出了根据本发明实施例的推送消费模块示意图。FIG. 9 shows a schematic diagram of a push consumption module according to an embodiment of the present invention.
如图9所示,消息转发平台RocketMQ在接收到来自生产者的消息后会通过生产处理器查询主题映射表,在主题映射表中存储着不同订阅主题与FPGA中消费者的关系,查询到订阅该主题的对应消费者后将通过消费者通信通道推送给对应的消费者;上述主题映射表是在消息转发平台接收到包括订阅主题的订阅消息后保存的。As shown in Figure 9, after receiving a message from a producer, the message forwarding platform RocketMQ will query the topic mapping table through the production processor. The topic mapping table stores the relationship between different subscription topics and consumers in the FPGA. After querying the corresponding consumer who subscribes to the topic, it will be pushed to the corresponding consumer through the consumer communication channel; the above topic mapping table is saved after the message forwarding platform receives a subscription message including a subscription topic.
根据本发明实施例,通过在消息转发平台支持的编码格式上增加与FPGA通信的编码格式,并在消息转发平台中配置对应的解码算法,在检测到编码类型为预设编码类型后,采用对应的解码算法来进行解码,提高了系统的扩展性。According to an embodiment of the present invention, by adding a coding format for communicating with FPGA to the coding format supported by the message forwarding platform, and configuring a corresponding decoding algorithm in the message forwarding platform, after detecting that the coding type is a preset coding type, the corresponding decoding algorithm is used for decoding, thereby improving the scalability of the system.
根据本发明实施例,上述消息转发平台与多个FPGA进行信息交互,上述方法还包括:消息转发平台响应于接收到多个FPGA发送的传输信息,利用预设解码算法,基于传输信息得到探测数据;消息转发平台缓存探测数据;消息转发平台响应于数据获取平台的拉取指令,向数据获取平台发送探测数据。According to an embodiment of the present invention, the message forwarding platform interacts with multiple FPGAs, and the method further includes: the message forwarding platform obtains detection data based on the transmission information received from the multiple FPGAs using a preset decoding algorithm; the message forwarding platform caches the detection data; and the message forwarding platform sends the detection data to the data acquisition platform in response to a pull instruction from the data acquisition platform.
图10示出了根据本发明实施例的数据读出系统。FIG. 10 shows a data readout system according to an embodiment of the present invention.
如图10所示,消息转发平台可以同时与多个读出节点中的FPGA进行通信,上述读出节点由ADC模块和一块FPGA组成,前述FPGA 例如可以是Xilinx UltraScale FPGAXCKU060(型号为XCKU060的赛灵思FPGA),ADC模块负责接受探测器数据并进行数字化,FPGA中对接收到的数据进行实时分析和判断,确定是否满足触发条件从而触发进一步的数据处理。FPGA对本发明中提出的消息机制传输模块进行了实例化,其用于接收配置以及对数据进行传输,数据通过AXI(Advanced eXtensible Interface,高级可扩展接口)进行交互,订阅主题通过通道交换模块将来自探测器不同通道的数据映射为不同主题作为信号输出给消息机制传输模块,图中传输节点通过光纤线缆接入万兆交换机组成万兆网络,与数据获取平台共同接入消息转发平台中,实现解耦式的数据交互以及控制,图中黑色箭头表示电信号,双向箭头表示消息发布/订阅。As shown in FIG10 , the message forwarding platform can communicate with FPGAs in multiple readout nodes at the same time. The readout node is composed of an ADC module and an FPGA. The FPGA can be, for example, Xilinx UltraScale FPGAXCKU060 (Xilinx FPGA with model XCKU060). The ADC module is responsible for receiving and digitizing the detector data. The FPGA performs real-time analysis and judgment on the received data to determine whether the trigger condition is met to trigger further data processing. The FPGA instantiates the message mechanism transmission module proposed in the present invention, which is used to receive configuration and transmit data. The data is interacted through AXI (Advanced eXtensible Interface). The subscription topic maps the data from different channels of the detector to different topics as signals and outputs them to the message mechanism transmission module through the channel exchange module. The transmission node in the figure is connected to the 10G switch through an optical fiber cable to form a 10G network, and is connected to the message forwarding platform together with the data acquisition platform to realize decoupled data interaction and control. The black arrow in the figure represents an electrical signal, and the bidirectional arrow represents message publishing/subscription.
根据本发明实施例,上述数据获取平台例如可以是DAQ(Data AcquisitionPlatform,数据采集平台),消息转发平台可以部署于计算机上,使用内存作为存储介质来进行加速。According to an embodiment of the present invention, the data acquisition platform may be, for example, a DAQ (Data Acquisition Platform), and the message forwarding platform may be deployed on a computer, using a memory as a storage medium for acceleration.
图11示出了根据本发明实施例的吞吐率测试结果。FIG. 11 shows throughput test results according to an embodiment of the present invention.
如图11所示,其中横坐标表示测试时间,纵坐标表示吞吐率,在对上述基于FPGA的发布订阅式消息传输方法进行24小时的吞吐率测试后,可以发现单块FPGA向RocketMQ服务器生产消息的吞吐率可稳定达到8.5Gbps,具体的吞吐率随时间变化曲线如图所示,在测试过程中,在RocketMQ服务器记录了所接受消息的编号,在24小时测试中,消息编号完整,消息丢失率为0。As shown in Figure 11, the horizontal axis represents the test time and the vertical axis represents the throughput. After a 24-hour throughput test on the above-mentioned FPGA-based publish-subscribe message transmission method, it can be found that the throughput of a single FPGA producing messages to the RocketMQ server can stably reach 8.5 Gbps. The specific throughput change curve over time is shown in the figure. During the test, the number of the received message was recorded on the RocketMQ server. In the 24-hour test, the message numbering was complete and the message loss rate was 0.
根据本发明实施例,消息转发平台可以同时接受多个FPGA发送的消息并缓存,在数据获取平台拉取时将对应的消息传输给前述数据获取平台,实现高吞吐率的传输,并且直接利用FPGA进行数据传输,不需要经过CPU转发,能够避免CPU性能限制导致的吞吐率低的问题,进一步地消息机制传输具有异步、解耦、可回溯的特点,可以对数据进行实时处理,同时在组建系统时,由于不使用CPU也能扩大FPGA的选型范围,节约系统成本,降低系统复杂度,提高组网的便携性和系统的可扩展能力,更加适用于高事例率的实验、高事例率的触发方式和信息更丰富的前端原始波形数据上传,以及为探测器、谱仪分布较为分散的实验提供分布式、灵活集成的读出系统。According to an embodiment of the present invention, a message forwarding platform can simultaneously receive and cache messages sent by multiple FPGAs, and transmit the corresponding messages to the aforementioned data acquisition platform when the data acquisition platform pulls them, thereby achieving high-throughput transmission, and directly using FPGA for data transmission without the need for CPU forwarding, thereby avoiding the problem of low throughput caused by CPU performance limitations. Furthermore, the message mechanism transmission has the characteristics of being asynchronous, decoupled, and traceable, and can process data in real time. At the same time, when building a system, since the CPU is not used, the selection range of FPGA can be expanded, system costs can be saved, system complexity can be reduced, and the portability of the network and the scalability of the system can be improved. It is more suitable for experiments with high event rates, high event rate triggering methods, and front-end raw waveform data upload with richer information, as well as providing a distributed, flexible and integrated readout system for experiments with relatively dispersed detectors and spectrometers.
基于上述基于FPGA的发布订阅式消息传输方法,本发明还提供了一种基于FPGA的发布订阅式消息传输系统。以下将结合图12对该装置进行详细描述。Based on the above FPGA-based publish-subscribe message transmission method, the present invention also provides an FPGA-based publish-subscribe message transmission system. The device will be described in detail below in conjunction with FIG.
图12示出了根据本发明实施例的基于FPGA的发布订阅式消息传输系统的结构框图。FIG. 12 shows a structural block diagram of a publish-subscribe message transmission system based on FPGA according to an embodiment of the present invention.
如图12所示,该实施例的基于FPGA的发布订阅式消息传输系统1200包括连接建立模块1210、查询模块1220、连接模块1230、订阅主题发送模块1240、解码模块1250、配置模块1260和采集数据发送模块1270。As shown in Figure 12, the FPGA-based publish-subscribe message transmission system 1200 of this embodiment includes a connection establishment module 1210, a query module 1220, a connection module 1230, a subscription topic sending module 1240, a decoding module 1250, a configuration module 1260 and a collection data sending module 1270.
连接建立模块1210,用于与消息转发平台建立通讯连接。在一实施例中,连接建立模块1210可以用于执行前文描述的操作S410,在此不再赘述。The connection establishment module 1210 is used to establish a communication connection with the message forwarding platform. In one embodiment, the connection establishment module 1210 can be used to perform the operation S410 described above, which will not be described in detail here.
查询模块1220用于通过通信模块向管理节点地址标识对应的管理节点发送查询指令,查询指令包括预设订阅主题,预设订阅主题是基于与FPGA交互的探测器的探测通道设置的,探测通道表征探测器采集的数据类型和/或采集位置。在一实施例中,查询模块1220可以用于执行前文描述的操作S420,在此不再赘述。The query module 1220 is used to send a query instruction to the management node corresponding to the management node address identifier through the communication module, and the query instruction includes a preset subscription topic, and the preset subscription topic is set based on the detection channel of the detector interacting with the FPGA, and the detection channel represents the data type and/or collection location collected by the detector. In one embodiment, the query module 1220 can be used to perform the operation S420 described above, which will not be repeated here.
连接模块1230用于响应于接收到的与预设订阅主题具有对应关系的运行节点地址标识,与运行节点建立连接。在一实施例中,连接模块1230可以用于执行前文描述的操作S430,在此不再赘述。The connection module 1230 is used to establish a connection with the operation node in response to the received operation node address identifier corresponding to the preset subscription topic. In one embodiment, the connection module 1230 can be used to perform the operation S430 described above, which will not be repeated here.
订阅主题发送模块1240用于向运行节点发送预设订阅主题,使得消息转发平台保存FPGA与订阅主题的对应关系。在一实施例中,订阅主题发送模块1240可以用于执行前文描述的操作S440,在此不再赘述。The subscription topic sending module 1240 is used to send a preset subscription topic to the running node, so that the message forwarding platform saves the corresponding relationship between the FPGA and the subscription topic. In one embodiment, the subscription topic sending module 1240 can be used to perform the operation S440 described above, which will not be repeated here.
解码模块1250用于响应于接收到的消息转发平台发送的配置指令, 消费模块利用预设解码算法基于配置指令得到配置数据。在一实施例中,解码模块1250可以用于执行前文描述的操作S450,在此不再赘述。The decoding module 1250 is used to respond to the configuration instruction sent by the received message forwarding platform, and the consumption module obtains the configuration data based on the configuration instruction using a preset decoding algorithm. In one embodiment, the decoding module 1250 can be used to perform the operation S450 described above, which will not be repeated here.
配置模块1260用于基于配置数据配置FPGA。在一实施例中,配置模块1260可以用于执行前文描述的操作S460,在此不再赘述。The configuration module 1260 is used to configure the FPGA based on the configuration data. In one embodiment, the configuration module 1260 can be used to perform the operation S460 described above, which will not be described in detail here.
采集数据发送1270用于响应于接收到探测器发送的采集数据,向运行节点发送封装后的采集数据,使得消息转发平台缓存并转发封装后的采集数据,采集数据是基于探测器的多个探测通道采集得到的。在一实施例中,采集数据发送1270可以用于执行前文描述的操作S470,在此不再赘述。The collected data sending 1270 is used to send the encapsulated collected data to the running node in response to receiving the collected data sent by the detector, so that the message forwarding platform caches and forwards the encapsulated collected data, and the collected data is collected based on multiple detection channels of the detector. In one embodiment, the collected data sending 1270 can be used to perform the operation S470 described above, which will not be repeated here.
根据本发明的实施例,上述FPGA还包括协调模块和多个生产模块,上述系统还包括:待封装数据获取模块,用于对于每个处于空闲状态的上述生产模块,响应于接收到的上述协调模块发送的使能信号,获取待封装探测数据;封装模块,用于利用预设封装算法,对上述待封装探测数据进行封装得到待传输信息;待传输信息发送模块,用于通过上述通信模块向上述运行节点发送上述待传输信息;删除模块,用于响应于接收到的上述消息转发平台发送的与上述待传输信息对应的确认标识,删除缓存中的上述待传输信息。According to an embodiment of the present invention, the above-mentioned FPGA also includes a coordination module and multiple production modules, and the above-mentioned system also includes: a data acquisition module for obtaining data to be packaged, which is used for obtaining detection data to be packaged for each of the above-mentioned production modules in an idle state in response to an enable signal sent by the above-mentioned coordination module; an encapsulation module, which uses a preset encapsulation algorithm to encapsulate the above-mentioned detection data to be packaged to obtain information to be transmitted; an information sending module for sending the above-mentioned information to be transmitted to the above-mentioned running node through the above-mentioned communication module; and a deletion module, which is used to delete the above-mentioned information to be transmitted in the cache in response to a confirmation identifier corresponding to the above-mentioned information to be transmitted sent by the above-mentioned message forwarding platform.
根据本发明的实施例,上述系统还包括:控制信息解码模块,用于响应于接收到的上述消息转发平台发送的控制信息, 上述消费模块利用预设解码算法基于上述控制信息得到控制指令和订阅主题;探测器控制模块,用于向与上述订阅主题对应的探测器发送上述控制指令,使得上述探测器执行与上述控制指令对应的操作。According to an embodiment of the present invention, the above-mentioned system also includes: a control information decoding module, which is used to respond to the control information sent by the above-mentioned message forwarding platform, and the above-mentioned consumption module obtains the control instruction and the subscription topic based on the above-mentioned control information using a preset decoding algorithm; a detector control module, which is used to send the above-mentioned control instruction to the detector corresponding to the above-mentioned subscription topic, so that the above-mentioned detector performs the operation corresponding to the above-mentioned control instruction.
根据本发明的实施例,上述系统还包括消息转发平台,上述消息转发平台还存储有不同订阅主题与FPGA的第一对应关系,上述消息转发平台还包括:获取模块,用于响应于接收到数据获取平台发送的第一配置指令,获取上述第一配置指令中的订阅主题以及配置数据;确定模块,用于基于上述订阅主题和上述第一对应关系确定目标FPGA;编码模块,用于利用预设编码算法,对上述订阅主题和上述配置数据进行编码得到第二配置指令;配置指令发送模块,用于向上述目标FPGA发送第二配置指令,使得上述FPGA基于上述第二配置指令进行配置。According to an embodiment of the present invention, the system also includes a message forwarding platform, which also stores a first correspondence between different subscription topics and FPGAs. The message forwarding platform also includes: an acquisition module, which is used to obtain the subscription topic and configuration data in the first configuration instruction in response to receiving a first configuration instruction sent by the data acquisition platform; a determination module, which is used to determine the target FPGA based on the subscription topic and the first correspondence; an encoding module, which is used to encode the subscription topic and the configuration data using a preset encoding algorithm to obtain a second configuration instruction; and a configuration instruction sending module, which is used to send the second configuration instruction to the target FPGA so that the FPGA is configured based on the second configuration instruction.
根据本发明的实施例,上述第一配置指令为预设编码格式,上述预设编码格式包括包长度、编码类型、包头长度、包头和信息体,上述获取模块包括:目标解码算法确定子模块,用于基于上述编码类型从多个解码算法中确定目标解码算法;第一配置指令解码子模块,用于利用上述目标解码算法,基于上述消息体中的第一配置指令得到订阅主题以及配置数据。According to an embodiment of the present invention, the above-mentioned first configuration instruction is a preset coding format, and the above-mentioned preset coding format includes packet length, coding type, packet header length, packet header and information body. The above-mentioned acquisition module includes: a target decoding algorithm determination submodule, which is used to determine the target decoding algorithm from multiple decoding algorithms based on the above-mentioned coding type; a first configuration instruction decoding submodule, which is used to use the above-mentioned target decoding algorithm to obtain the subscription topic and configuration data based on the first configuration instruction in the above-mentioned message body.
根据本发明的实施例,上述消息转发平台与多个FPGA进行信息交互,上述系统还包括:传输信息解码模块,用于响应于接收到上述多个FPGA发送的传输信息,利用预设解码算法,基于上述传输信息得到探测数据;探测数据缓存模块,用于缓存上述探测数据;探测数据发送模块,用于响应于数据获取平台的拉取指令,向上述数据获取平台发送上述探测数据。According to an embodiment of the present invention, the message forwarding platform interacts with multiple FPGAs for information exchange, and the system further includes: a transmission information decoding module for obtaining detection data based on the transmission information received from the multiple FPGAs using a preset decoding algorithm; a detection data caching module for caching the detection data; and a detection data sending module for sending the detection data to the data acquisition platform in response to a pull instruction from the data acquisition platform.
根据本发明的实施例,连接建立模块1210、查询模块1220、连接模块1230、订阅主题发送模块1240、解码模块1250、配置模块1260和采集数据发送模块1270中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,连接建立模块1210、查询模块1220、连接模块1230、订阅主题发送模块1240、解码模块1250、配置模块1260和采集数据发送模块1270中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,连接建立模块1210、查询模块1220、连接模块1230、订阅主题发送模块1240、解码模块1250、配置模块1260和采集数据发送模块1270中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。According to an embodiment of the present invention, any multiple modules among the connection establishment module 1210, the query module 1220, the connection module 1230, the subscription topic sending module 1240, the decoding module 1250, the configuration module 1260 and the collection data sending module 1270 can be combined into one module for implementation, or any one of the modules can be split into multiple modules. Alternatively, at least part of the functions of one or more of these modules can be combined with at least part of the functions of other modules and implemented in one module. According to an embodiment of the present invention, at least one of the connection establishment module 1210, the query module 1220, the connection module 1230, the subscription topic sending module 1240, the decoding module 1250, the configuration module 1260 and the acquisition data sending module 1270 can be at least partially implemented as a hardware circuit, such as a field programmable gate array (FPGA), a programmable logic array (PLA), a system on a chip, a system on a substrate, a system on a package, an application-specific integrated circuit (ASIC), or can be implemented by hardware or firmware such as any other reasonable way of integrating or packaging the circuit, or by any one of the three implementation methods of software, hardware and firmware or by a proper combination of any of them. Alternatively, at least one of the connection establishment module 1210, the query module 1220, the connection module 1230, the subscription topic sending module 1240, the decoding module 1250, the configuration module 1260 and the acquisition data sending module 1270 can be at least partially implemented as a computer program module, and when the computer program module is run, the corresponding function can be performed.
图13示出了根据本发明实施例的适于实现基于FPGA的发布订阅式消息传输方法的电子设备的方框图。FIG. 13 shows a block diagram of an electronic device suitable for implementing a publish-subscribe message transmission method based on FPGA according to an embodiment of the present invention.
如图13所示,根据本发明实施例的电子设备1300包括处理器1301,其可以根据存储在只读存储器(ROM)1302中的程序或者从存储部分1308加载到随机访问存储器(RAM)1303中的程序而执行各种适当的动作和处理。处理器1301例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器1301还可以包括用于缓存用途的板载存储器。处理器1301可以包括用于执行根据本发明实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。As shown in Figure 13, the electronic device 1300 according to an embodiment of the present invention includes a processor 1301, which can perform various appropriate actions and processes according to the program stored in the read-only memory (ROM) 1302 or the program loaded from the storage part 1308 to the random access memory (RAM) 1303. Processor 1301 may include, for example, a general-purpose microprocessor (such as a CPU), an instruction set processor and/or a related chipset and/or a special-purpose microprocessor (for example, an application-specific integrated circuit (ASIC)), etc. Processor 1301 may also include an onboard memory for caching purposes. Processor 1301 may include a single processing unit or multiple processing units for performing different actions of the method flow according to an embodiment of the present invention.
在RAM 1303中,存储有电子设备1300操作所需的各种程序和数据。处理器 1301、ROM 1302以及RAM 1303通过总线1304彼此相连。处理器1301通过执行ROM 1302和/或RAM1303中的程序来执行根据本发明实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1302和RAM 1303以外的一个或多个存储器中。处理器1301也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本发明实施例的方法流程的各种操作。In RAM 1303, various programs and data required for the operation of electronic device 1300 are stored. Processor 1301, ROM 1302 and RAM 1303 are connected to each other through bus 1304. Processor 1301 performs various operations of the method flow according to the embodiment of the present invention by executing the program in ROM 1302 and/or RAM 1303. It should be noted that the program can also be stored in one or more memories other than ROM 1302 and RAM 1303. Processor 1301 can also perform various operations of the method flow according to the embodiment of the present invention by executing the program stored in the one or more memories.
根据本发明的实施例,电子设备1300还可以包括输入/输出(I/O)接口1305,输入/输出(I/O)接口1305也连接至总线1304。电子设备1300还可以包括连接至输入/输出(I/O)接口1305的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至输入/输出(I/O)接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。According to an embodiment of the present invention, the electronic device 1300 may further include an input/output (I/O) interface 1305, which is also connected to the bus 1304. The electronic device 1300 may further include one or more of the following components connected to the input/output (I/O) interface 1305: an input portion 1306 including a keyboard, a mouse, etc.; an output portion 1307 including a cathode ray tube (CRT), a liquid crystal display (LCD), etc., and a speaker, etc.; a storage portion 1308 including a hard disk, etc.; and a communication portion 1309 including a network interface card such as a LAN card, a modem, etc. The communication portion 1309 performs communication processing via a network such as the Internet. A drive 1310 is also connected to the input/output (I/O) interface 1305 as needed. A removable medium 1311, such as a magnetic disk, an optical disk, a magneto-optical disk, a semiconductor memory, etc., is installed on the drive 1310 as needed, so that a computer program read therefrom is installed into the storage portion 1308 as needed.
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本发明实施例的方法。The present invention also provides a computer-readable storage medium, which may be included in the device/apparatus/system described in the above embodiment; or may exist independently without being assembled into the device/apparatus/system. The above computer-readable storage medium carries one or more programs, and when the above one or more programs are executed, the method according to the embodiment of the present invention is implemented.
根据本发明的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本发明的实施例,计算机可读存储介质可以包括上文描述的ROM 1302和/或RAM 1303和/或ROM 1302和RAM 1303以外的一个或多个存储器。According to an embodiment of the present invention, the computer-readable storage medium may be a non-volatile computer-readable storage medium, for example, it may include but is not limited to: a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination thereof. In the present invention, the computer-readable storage medium may be any tangible medium containing or storing a program, which may be used by or in combination with an instruction execution system, an apparatus or a device. For example, according to an embodiment of the present invention, the computer-readable storage medium may include the ROM 1302 and/or RAM 1303 described above and/or one or more memories other than ROM 1302 and RAM 1303.
本发明的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本发明实施例所提供的基于FPGA的发布订阅式消息传输方法。The embodiment of the present invention also includes a computer program product, which includes a computer program, and the computer program includes a program code for executing the method shown in the flowchart. When the computer program product is run in a computer system, the program code is used to enable the computer system to implement the FPGA-based publish-subscribe message transmission method provided by the embodiment of the present invention.
在该计算机程序被处理器1301执行时执行本发明实施例的系统/装置中限定的上述功能。根据本发明的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。The computer program executes the above functions defined in the system/device of the embodiment of the present invention when it is executed by the processor 1301. According to the embodiment of the present invention, the system, device, module, unit, etc. described above can be implemented by a computer program module.
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1309被下载和安装,和/或从可拆卸介质1311被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。In one embodiment, the computer program may be based on a tangible storage medium such as an optical storage device, a magnetic storage device, etc. In another embodiment, the computer program may also be transmitted and distributed in the form of a signal on a network medium, and downloaded and installed through the communication part 1309, and/or installed from a removable medium 1311. The program code contained in the computer program may be transmitted using any appropriate network medium, including but not limited to: wireless, wired, etc., or any suitable combination of the above.
在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被处理器1301执行时,执行本发明实施例的系统中限定的上述功能。根据本发明的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。In such an embodiment, the computer program can be downloaded and installed from the network through the communication part 1309, and/or installed from the removable medium 1311. When the computer program is executed by the processor 1301, the above functions defined in the system of the embodiment of the present invention are performed. According to the embodiment of the present invention, the system, device, means, module, unit, etc. described above can be implemented by a computer program module.
根据本发明的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。According to an embodiment of the present invention, the program code for executing the computer program provided by the embodiment of the present invention can be written in any combination of one or more programming languages. Specifically, these computing programs can be implemented using high-level process and/or object-oriented programming languages, and/or assembly/machine languages. Programming languages include, but are not limited to, such as Java, C++, python, "C" language or similar programming languages. The program code can be executed entirely on the user computing device, partially on the user device, partially on the remote computing device, or entirely on the remote computing device or server. In the case of a remote computing device, the remote computing device can be connected to the user computing device through any type of network, including a local area network (LAN) or a wide area network (WAN), or can be connected to an external computing device (e.g., using an Internet service provider to connect through the Internet).
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。The flow chart and block diagram in the accompanying drawings illustrate the possible architecture, functions and operations of the system, method and computer program product according to various embodiments of the present invention. In this regard, each box in the flow chart or block diagram can represent a module, a program segment, or a part of a code, and the above-mentioned module, program segment, or a part of the code contains one or more executable instructions for realizing the specified logical function. It should also be noted that in some alternative implementations, the functions marked in the box can also occur in a different order from the order marked in the accompanying drawings. For example, two boxes represented in succession can actually be executed substantially in parallel, and they can sometimes be executed in the opposite order, depending on the functions involved. It should also be noted that each box in the block diagram or flow chart, and the combination of the boxes in the block diagram or flow chart can be implemented with a dedicated hardware-based system that performs a specified function or operation, or can be implemented with a combination of dedicated hardware and computer instructions.
本领域技术人员可以理解,本发明的各个实施例中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本发明的范围。It will be appreciated by those skilled in the art that the features described in the various embodiments of the present invention may be combined and/or combined in various ways, even if such combinations or combinations are not explicitly described in the present invention. In particular, without departing from the spirit and teachings of the present invention, the features described in the various embodiments of the present invention may be combined and/or combined in various ways. All of these combinations and/or combinations fall within the scope of the present invention.
以上对本发明的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本发明的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。不脱离本发明的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本发明的范围之内。The embodiments of the present invention are described above. However, these embodiments are only for the purpose of illustration, and are not intended to limit the scope of the present invention. Although each embodiment is described above, it does not mean that the measures in each embodiment cannot be used in combination advantageously. Without departing from the scope of the present invention, those skilled in the art may make various substitutions and modifications, which should all fall within the scope of the present invention.
Claims (10)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202411003281.6A CN118524151B (en) | 2024-07-25 | 2024-07-25 | FPGA-based publish-subscribe message transmission method, system, device, and medium |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202411003281.6A CN118524151B (en) | 2024-07-25 | 2024-07-25 | FPGA-based publish-subscribe message transmission method, system, device, and medium |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN118524151A CN118524151A (en) | 2024-08-20 |
| CN118524151B true CN118524151B (en) | 2024-09-17 |
Family
ID=92274550
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202411003281.6A Active CN118524151B (en) | 2024-07-25 | 2024-07-25 | FPGA-based publish-subscribe message transmission method, system, device, and medium |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN118524151B (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119676088B (en) * | 2024-12-06 | 2025-09-19 | 中国科学院沈阳自动化研究所 | Deterministic publishing and subscribing mode industrial control equipment access and configuration method |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN116260893A (en) * | 2023-02-06 | 2023-06-13 | 中国西安卫星测控中心 | Message subscription and publishing device of data processing system |
| CN117896241A (en) * | 2023-12-05 | 2024-04-16 | 南京臻融科技有限公司 | DDS software and hardware cooperative transmission method based on FPGA and RapidIO |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7406537B2 (en) * | 2002-11-26 | 2008-07-29 | Progress Software Corporation | Dynamic subscription and message routing on a topic between publishing nodes and subscribing nodes |
| US10666712B1 (en) * | 2016-06-10 | 2020-05-26 | Amazon Technologies, Inc. | Publish-subscribe messaging with distributed processing |
-
2024
- 2024-07-25 CN CN202411003281.6A patent/CN118524151B/en active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN116260893A (en) * | 2023-02-06 | 2023-06-13 | 中国西安卫星测控中心 | Message subscription and publishing device of data processing system |
| CN117896241A (en) * | 2023-12-05 | 2024-04-16 | 南京臻融科技有限公司 | DDS software and hardware cooperative transmission method based on FPGA and RapidIO |
Also Published As
| Publication number | Publication date |
|---|---|
| CN118524151A (en) | 2024-08-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20230334051A1 (en) | Data stream analytics at service layer | |
| US10305759B2 (en) | Distributed and adaptive computer network analytics | |
| US20190332522A1 (en) | Microservice platform with messaging system | |
| CN110247784B (en) | Method and device for determining network topology structure | |
| CN118524151B (en) | FPGA-based publish-subscribe message transmission method, system, device, and medium | |
| CN110365758A (en) | A Protocol Adaptive IoT Gateway System | |
| CN111131379A (en) | Distributed flow acquisition system and edge calculation method | |
| US20240147380A1 (en) | Method for obtaining computing power information and related device | |
| US11575659B2 (en) | Systems and methods for establishing secure remote connections to media devices | |
| US10367692B2 (en) | Rules implementation system | |
| CN115964418A (en) | Multi-source heterogeneous data access system and method for Internet of things | |
| CN104052968A (en) | A Remote Video Supervision System Based on Home Gateway | |
| Liu et al. | Implementation of hardware TCP/IP stack for DAQ systems with flexible data channel | |
| CN114518909A (en) | Authorization information configuration method, device, equipment and storage medium based on API gateway | |
| LU505168B1 (en) | Cloud-edge-terminal collaborative method and system applied in comprehensive management of coal transportation intelligent monitoring system | |
| US20180373668A1 (en) | Bridge and asynchronous channel based bus to provide ui-to-ui asynchronous communication | |
| CN117201550A (en) | Internet of things equipment servitization system | |
| CN105100235B (en) | An information sharing method and server for a sweeping robot | |
| CN113779374B (en) | Page query management method and device | |
| US20230412466A1 (en) | Managing cloud-native virtual network functions | |
| US20230315669A1 (en) | Multi-processor arrangement with point of serialization for broadcast communications | |
| US12248691B2 (en) | Architecture for a multi-resolution, in-flight and programmable analytics platform | |
| CN115766834A (en) | Full-service 5G end-to-end network slicing framework | |
| WO2023244311A1 (en) | Managing cloud-native virtual network functions | |
| CN118714085A (en) | Traffic transmission control method, device, medium, electronic device and program product |
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 |