Professional Documents
Culture Documents
基于发布订阅机制的分布式通信中间件设计
Middleware Design for Distributed Communication System
Based on Publish and Subscribe Mechanism
摘要:为了解决现代模块化医检仪器中通信系统效率低下以及可扩展性差等问题,提出了一种基于发布订阅机 制 的 分
布式通信中间件,此中间件基于发布 / 订阅的模型设计,开发了与通信机制匹配的主题数据缓冲层,并在链路层使用 CAN 总
线并进行具体通信设计,包括报文帧类型的选择、通信报文的格式设计等,极大提高了现代模块化医检仪器通信系统的稳定
性、可靠性。
关键词:发布订阅机制;通信中间件;数据分发服务;分布式系统
Abstract:In order to solve the problems of low efficiency and poor scalability of the communication system in modern
modular medical examination equipment,a distributed communication middleware based on a publish/subscribe mechanism is
proposed in this paper.This middleware is designed and developed based on a publish/subscribe model.The theme data
buffer layer that matches the communication mechanism is adopted,and the CANbus is used at the link layer and specific
communication design is carried out,including the selection of message frame types,the format design of communication
messages,etc.,which greatly improves the modern modular medical examination stability,reliability of the instrument communi-
cation system.
Keywords:mechanism of publish/subscribe,communication middleware,distributed data service,distributed system
图3 发布订阅通信图
图2 星型化的分布式通信模型
发布节点在产生新主题时,要加入发布主题表,并将其更新
在具体实现上, 以分析仪的管理机作为中心管理节点并添
到其他节点的发布主题表中, 订阅节点订阅的主题也将更新到
加通信中间管理器, 以分析仪的控制机作为控制节点并添加通
主题发布节点的订阅登记表中, 当发布节点产生新的主题数据
信节点管理器, 通信节点管理器将自己订阅的主题以及和通信
时,会去自身的订阅登记表中查找是否有订阅者,并将数据按照
相关的配置信息发送到通信中间管理器, 通信中间管理器汇总
要求发送给订阅者,订阅者在接收到订阅的主题数据后,去自身
所有的节点信息,并生成节点主题发布 - 订阅表。 各通信节点为
的 发 布 主 题 表 中 校 验 接 收 到 的 数 据 是 否 来 自 合 法 的 发 布 者 ,并
订阅的主题设计各自独立的数据缓冲区,使用链表进行管理,避
进行后续的处理。
免不同主题数据在同一缓冲区中由于越界访问造成数据错误 ,
3.3 主题缓冲层设计
通信底层以 CAN 总线作为数据传输链路,完成数据的收发。
主题缓冲层是主题数据的中转站,对于应用层业务,在需要
3.2 发布 - 订阅通信模型设计
收发数据时, 仅需调用缓冲层相关的收发接口即可, 对于硬件
分析仪中各通信节点之间关系平等, 因此采用分布式的发
层,使用 CAN 总线依据主题的对应关系接收数据到指定的缓冲
布 / 订 阅 机 制 ,其 中 主 题 的 设 计 是 发 布 / 订 阅 机 制 的 关 键 ,发 布 者
区,或者将缓冲区中的数据发送出去。
制定主题,接收者订阅主题。 在分析仪中管理机与控制机之间的
任一节点可能会有多个发布的主题, 每一主题都需要一个
通信消息包括控制命令、数据请求、状态查询等根据这些消息的
独立的数据缓冲区,因此每一节点会有多个主题缓冲区。 主题缓
类型设计发布 / 订阅主题,如表 1 所示:
冲区中存放着真正的待发送或者已接收的数据, 数据缓冲区本
表 1 主题发布 / 订阅信息表
质是一个数组,采用环形结构实现了首尾相连,形成一个环形缓
冲区。 为了方便对多个主题缓冲区进行管理,又引入数据管理链
表, 每一帧传入缓冲区的数据都会生成一个链表节点加入数据
管理链表。 链表节点记录每一帧数据的主题缓冲区起始地址、当
在系统启动时, 分析仪中心管理节点收集所有控制节点的 前偏移量、帧数据长度等信息,底层封装的总线接口自动地按照
主题信息,制作成主题发布表 P_Table (U_ID 、P_ID ),U_ID 代表 管理链表的信息去主题缓冲区中取出数据、 清除节点, 并通过
唯一的发布主题标识符,P_ID 代表主题发布者 的 地 址 , 即 发 布 CAN 总线发送出或者拷贝到应用层业务中,主题 缓 冲 区 与 管 理
《工业控制计算机》2022 年第 35 卷第 6 期 113
并将整个数据传输过程分为传输开始、传输进行、传输结束三个
部分并分别做好标志方便数据接受者进行报文重组。
图4 主题缓冲区与管理链表交互流程图 4 结束语
3.4 链路层通信设计 本文为现代模块化医检仪器中的复杂通信系统设计了一个
链 路 层 使 用 CAN 总 线 ,在 物 理 上 采 用 双 线 连 接 ,使 用 差 分 分布式通信系统中间件,使用了分 布 式 发 布 / 订 阅 机 制 和 主 体 缓
信号识别方式传递信息。 因此管理机和控制机的 CAN 收发器均 冲层结构,极大提高了此类模块化系统的通信稳定性、可靠性与
接入一条 CAN 总线上就可以实现多节点的分布式通信。 可扩展性,具有现实意义与参考价值。
CAN 报文根据标识符 ID 的长度分为两种 类 型 :标 准 帧 (标
识符 11 位)与扩展帧(标识符 29 位),标识符是每一个接入总线 参考文献
节点的唯一身份标识 [8],本设计的接 入 节 点 数 量 有 限 ,使 用 标 准 [1 ]张志伟 . 面向对象异步通信中间件的研究与实现 [D]. 长沙:国防科学
帧即可满足本设计的需求。 技术大学,2004
[2 ]刘巍 ,黄 智 勇 . 国 产 化 实 时 通 信 中 间 件 DDS 的 跨 平 台 实 现 和 优 化 技
此外,总线上的节点总是以广播的方式向外发送消息,总线
术[J ]. 现代雷达,2019 ,41 (7 ):39-43
上的其他节点均可以接收到这一消息并且存放在自己的硬件缓
[3 ]童恒庆,聂会琴,李锡喆 .CORBA/COM/EJB 三种组件模型 的 分 析 与
冲区汇中, 在实际应用中某些节点只需要接收指定节点发送过
比较[J ]. 计算机应用研究,2004 (4 ):66-67 ,94
来的消息,因此有必要在每一个节点中加入报文过滤机制,标识
[4 ]王 硕 ,胡 飞 . 基 于 数 据 发 布 订 阅 服 务 的 嵌 入 式 通 信 中 间 件 设 计 [C]//
不配的节点发送过来的报文会被直接丢弃, 减少通信中间管理 第九届中国航空学会青年科技论坛论文集,2020:235-242
器与通信节点管理器因为接收到不需要的消息而产生不必要的 [5 ]左家兴 . 实时通信中间件设计与实现[D]. 成都:电子科技大学,2021
开销。 本设计中管理机与所有的控制机均有通信需求,但控制机 [6 ]Ioana Alexandru,Korodi Adrian. Improving OPC UA Publish -
之间并无通信需求,因此可以通过设置 CAN 设备的过滤寄存器 Subscribe Mechanism over UDP with Synchronization Algo-
的值来实现这一功能。 rithm and Multithreading Broker Application[J].Sensors (Basel,
根据报文帧的功能不同, 可以将 CAN 报文分为数据帧、远 Switzerland),2020,20(19)
程帧、错误帧、过载帧 。 数据帧顾名思义即是传输数据的帧,每
[9] [7 ]冷枫麒 . 基于发布 / 订阅的分布式数据分发技术的研究 与 实 现 [D]. 成
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
(上接第 110 页) 南大学,2010
[4 ]王涵 .LEO 卫星移动通信系统馈电链 路 载 波 跟 踪 中 的 频 率 补 偿 方 法 [11 ]Jian Nianchuan, Dmitry Mikushin, Jianguo Yan,et al.A GPU-
[D]. 哈尔滨:哈尔滨工业大学,2011 based phase tracking method for planetary radio science
[5 ]Ryan Mukai, David Hansen, Anthony Mittskus,et al.Juno_DES- applications[J].Measurement Science and Technology,2020,31
CANSO_Post121106H--Compact[K].Juno Telecommunications, (4)
2012 [12 ] 段 海 滨 , 张 祥 银 , 徐 春 芳 . 仿 生 智 能 计 算 [M ]. 北 京 : 科 学 出 版 社 ,
[6 ]陈智远 . 深空多普勒接收机频率估计算法研究及实现 [D]. 南京:东南 2011
大学,2014 [13 ]Anna Franziska Purkhauser.On the Use of Doppler Mea-
[7 ]Mamoru Sekido,Yasuhiro Koyama,Tstsuro Kondo.Introduction surements for Dynamic Orbit Computation. Case Study:
to K5 System [C]∥Fifth IVS Technical Operations Workshop, GRAIL [D].Graz University of Technology:Institute of Geodesy,
2009 2015
[8 ]C Chen,X Gu,Z Li,et al.Tracking deep space aircraft via [14 ]L Iess,B Militzer,Y Kaspi,et al.Measurement and implications
one-way Doppler mode [J].ICIC Express Letters ,2013,7(3A): of saturn ’s gravity fifield and ring mass[J].Science,2019,364
747-782 (6445)
[9 ]刘萌 .RSR 系统控制与信号处理技术研究[D]. 南京:东南大学,2013 [收稿日期:2022-01-07 ]
[10 ]朱妮娅 . 多 通 道 RSR 接 收 机 高 速 DDC 的 FPGA 设 计 [D]. 南 京 :东