You are on page 1of 3

《工业控制计算机》2022 年第 35 卷第 6 期 111

基于发布订阅机制的分布式通信中间件设计
Middleware Design for Distributed Communication System
Based on Publish and Subscribe Mechanism

王玉杰 马旭东 房 芳 王 昕 徐 新 董自权 (东南大学自动化学院,江苏 南京 210096 )

摘要:为了解决现代模块化医检仪器中通信系统效率低下以及可扩展性差等问题,提出了一种基于发布订阅机 制 的 分
布式通信中间件,此中间件基于发布 / 订阅的模型设计,开发了与通信机制匹配的主题数据缓冲层,并在链路层使用 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

1 问题的提出 2)DDS (Data Distribution Service,数据分发 服 务 )是 2003


随着医学技术的不断发展,医检仪器也在不断地更新换代。 年 OMG 在 CORBA 标 准 的 基 础 上 推 出 的 实 时 通 信 中 间 件 ,其
为了提高工作效率与检测质量, 医检仪器正在从传统的单机单 工作原理是各通信节点通过主题信息进行匹配, 建立各节点之
模块仪器向多机多模块的复杂设备转变, 仪器的通信需求也变 间的连接关系,当匹配完成之后,从数据缓存区中获取到相关数
得越来越复杂, 传统的点对点通信模型已经难以满足多模块之 据推送给订阅方,完成通信节点之间的信息交互 [4]。
间通信的可靠性与准确性要求。 以此问题为契机,并借由医检仪 2.2 通信模型
器中一种模块化血小板功能分析仪为目标, 本文提出一种基于 一个合适的通信模型是决定通信中间件传输效率的关键因
发布订阅机制的分布式通信中间件, 此中间件介于管理机与控 素 ,常 见 的 通 信 模 型 有 三 种 :点 到 点 通 信 模 型 、C/S 通 信 模 型 以
制机之间, 负责对分析仪多个模块之间的复杂通信进行统一的 及 P/S 通信模型 [5]。
管理与分发,采 用 基 于 主 题 的 分 布 式 发 布 - 订 阅 模 型 ,将 各 类 通 1 )点到点模型是一种通信双方直接连接进行信息交换的方
信以主题进行划分,设计相应的报文协议,并开辟对应的主题数 式,简单但是灵活性差,无法应对一对多的工作环境;
据缓冲区,以满足复杂通信系统之间的通信稳定性、可靠性与实 2 )C/S 模型是以服务器接节点为中心进行客户端 节 点 的 通
时性要求。 信 ,以 请 求 应 答 的 方 式 完 成 信 息 交 换 ,可 以 实 现 多 对 一 的 场 景 ,
2 通信中间件技术 但是也使得客户端与服务端之间耦合性增强 [6];
2.1 通信中间件介绍 3 )P/S 模型以主题信息发 布 订 阅 数 据 , 不 关 心 通 信 对 象 的
为了解决传统通信技术中软硬件过度耦合以及多样化通信 位 置 与 数 目 ,以 数 据 为 中 心 ,可 以 适 用 于 多 种 多 样 的 通 信 场 景 ,
需求造成的繁琐底层处理问题 [1],中间件技术应运而生。 中间件 增强了通信系统的灵活性 [6]。
作为一种介于应用层和系统底层之间的软件屏蔽了不同硬件或 本 文 采 用 的 即 是 基 于 发 布 订 阅 模 型 的 DDS 通 信 中 间 件 设
者软件之间的差异,抽象出繁琐的网络细节,向开发人员提供了 计, 使用中间件技术屏蔽了底层通信链路以及应用层通信协议
同一标准的开发接口,极大提高了 程 序 开 发 效 率 [2]。 目 前 ,中 间 不同,更有利于分析仪各模块之间的分工合作以及功能扩展,同
件技术是国内外各行业的一个重要发展目标, 其中又以通信中 时使用发布订阅通信模型,使得通信系统更加灵活,可以实现了
间件技术为重中之重,通信中间件以软件设计为主体,将传统单 一对一、一对多、多对一以及多对多的分布式通信框架。
机且封闭的通信系统引导向了 开 放 智 能 化 的 通 信 系 统 [2]。 目 前 3 分析仪通信中间件设计
研究比较多的通信中间件有 CORBA 、DDS 。 3.1 通信中间件整体设计
1 )CORBA 的全称 叫 做 公 共 对 象 请 求 代 理 体 系 结 构 , 是 由 此血小板功能分析仪属于传统的上下位机结构辅以多模块
对 象 管 理 组 织 (Object Management Group ,OMG ), 在 1991 的工作架构, 目的是提高检测样本的效率以及检测项目的丰富
年发布的标准开放的通信中间 件 , 以 Clien/Server 模 式 传 输 数 程度。 此仪器中管理机只有一个, 但是控制机却有 4 个甚至更
据,其能够屏蔽底层复杂的硬件信息及操作系统的多样性,支持 多,通过一个管理机对 4 个控制机进行整体控制,并接收 4 个控
不同的数据传输协议,并可以实现跨语言编程 [3]。 制机的检测数据,单个管理机与多个控制机分布在总线网络上,
112 基于发布订阅机制的分布式通信中间件设计

以通信帧为载体,相互收发信息,以此就构成了一个分布式通信 者的 CAN 总线 ID 标识符,节点收到数据时,根据主题发布表中


系统 [7]。 现有通信系统上下位机 之 间 通 过 总 线 直 接 进 行 点 对 点 的信息来校验数据的有效性。 中心管理节点制作的主题发布表
的通信, 控制机模块功能的不同以及通信链路的差别会导致管 会下发给所有的控制节点,并在所有的通信节点中保持同步。
理机中复杂的程序开发与高度耦合的软件设计。 同时在每一个节点内还有一份订阅登记表 S_Table (U_ID 、
在引入通信中间件之后, 控制机与管理机之间通过中间件 S_ID ),U_ID 代 表 唯 一 的 发 布 主 题 标 识 符 ,S_ID 代 表 主 题 订 阅
进行数据交互, 复杂的处理逻辑与数据传输链路均由中间件完 者的地址,当节点内有新的主题信息准备发送时,则根据订阅登
成,不同模块的控制机开发只需要关注具体业务功能,同时兼顾 记表找到订阅此主题信息的节点,并发送出去。 订阅登记表的内
对于已有控制机模块的功能兼容,极大提高了软件开发效率。 如 容根据各个节点自身的情况而有所不同。
图 1 所示: 软件设计上, 主题发布表与订阅登记表均使用结构体加数
组的形式实现,表项使用结构体定义,结构体内部包含有表项的
相关变量定义,以主题发布表为例,如下所示:
struct P_Table_Info{
uint8_t U_ID; /* 主题标识符 */
uint8_t P_ID; /* 发布者地址 */
};
图1 分析仪中间件通信框图 主 题 发 布 (订 阅 登 记 )表 是 一 个 数 组 ,以 主 题 标 识 符 为 下 标
为了实现分析仪中各个节点之间更加灵活高效的通信机 索 引 ,以 P_Table_Info (S_Table_Info )结 构 体 作 为 数 组 元 素 ,此
制,本文使用发布订阅模型来实现通信中间 件 ,整 体 设 计 如 图 2 实现简洁有效。
所示,所有的节点都通过此中心节点与其他节点进行通信交互, 中间件的主题发布与订阅通信交互过程如图 3 所示:
构成了一种星型的网络拓扑模型。 通信系统中的每一个节点既
是信息的发布者,也是信息的接收者,接收者订阅自己感兴趣的
主题,发布者将主题消息分发给订阅此主题的接收者。

图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 所示: 表3 CAN 通信报文格式

并将整个数据传输过程分为传输开始、传输进行、传输结束三个
部分并分别做好标志方便数据接受者进行报文重组。
图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]. 成

一个数据帧中都有一个数据段,最多 8 个字节,专门用来存储需 都:电子科技大学,2017


[8 ]周 立 功 . 项 目 驱 动 -CAN-bus 现 场 总 线 基 础 教 程 [M ]. 北 京 :北 京 航
要传递的有效信息, 数据段根据传递有效信息的功能又可以分
空航天大学出版社,2012
为命令控制报文、数据传递报文、心跳查询报文等。 不同报文具
[9 ]Zhang Lei. Design of multi node CAN bus in high frequency
有不同的标识字段与报文格式,如表 3 所示。
system[C]∥E3S Web of Conferences,2021
控制命令报文与心跳查询报文数据量少, 单个报文足够容
[收稿日期:2022-01-10 ]
纳所有内容, 数据传递报文因为要传输大量的信息如控制机的
检 测 数 据 等 ,单 报 文 无 法 完 全 容 纳 ,此 时 需 要 对 报 文 进 行 分 段 ,

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
(上接第 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]. 南 京 :东

You might also like