计算机系统应用  2020, Vol. 29 Issue (7): 103-109   PDF    
基于发布/订阅模型的异构网络数据交换方法
杨勇1, 薛化建2, 任鸽1     
1. 新疆师范大学 计算机科学技术学院, 乌鲁木齐830054;
2. 中国科学院 新疆理化技术研究所, 乌鲁木齐 830011
摘要:消息数据高效传输是混合式网络的一个研究重点. 发布/订阅模型实现了消息发布者和消息订阅者之间解耦的消息传递模式, 适用于混合网络之间的消息数据传输. 通过将发布/订阅模型应用于消息数据交换, 规范了消息数据的格式, 实现了对各类通信设备的灵活管理以及基于消息内容的动态数据路由; 并利用一种基于循环调度的动态负载均衡算法, 对低速率网络和高速率网络之间的性能进行合理调度, 提高了低速率网络的性能. 模拟实验结果表明, 在混合式网络中发布/订阅模型能实现可靠的消息数据交换, 在负载平衡算法下性能更好.
关键词: 混合网络    发布/订阅    负载均衡    消息路由    
Data Transmission Method of Hybrid Network Based on Publish/Subscribe Model
YANG Yong1, XUE Hua-Jian2, REN Ge1     
1. School of Computer Science and Technology, Xinjiang Normal University, Urumqi 830054, China;
2. Xinjiang Technical Institute of Physics and Chemistry, Chinese Academy of Sciences, Urumqi 830011, China
Foundation item: National Natural Science Foundation of China (61741120); Scientific Research Start-Up Fund for Doctorate of Xinjiang Normal University (XJNUBS1609); Scientific Research Plan of Higher Education of Xinjiang Uygur Autonomous Region (XJEDU2016S066); Open Fund of Key Laboratory of Data Security, Xinjiang Normal University (XJNUSYS102017B03)
Abstract: Efficient transmission of message data is a research focus of hybrid networks. Publish/subscribe is the messaging pattern to realize the decoupling between publisher of messages and subscriber of messages, which is suitable for message data transmission between hybrid networks. By applying the publish/subscribe model to message data exchange, the format of message data is standardized, flexible management of various communication devices, and dynamic data routing based on message content. Along with publish/subscribe, a dynamic load balancing algorithm based on the round-robin scheduling is proposed to improve performance of low-rate networks. Simulation experiments are carried out, and the experimental results show that publish/subscribe model achieves reliable message data transmission between hybrid networks, and it performs better with load balancing.
Key words: hybrid networks     publish/subscribe     load balancing     message routing    

当前, 通讯网络在人类生活中起着重要作用. 由于地形地貌多种多样和人类活动不均衡等情况, 单一的通讯网络无法覆盖所有的应用场景, 因此存在多种不同的通信网络, 用来满足多样化的需求. 通常, 全球移动通信系统(GSM)和码分多址(CDMA)之类的移动网络常用于人口繁多地区. 出于成本的考虑, GSM和CDMA信号通常不会覆盖人烟稀少的山区或沙漠地区. 天通卫星网络或北斗卫星网络通常是沙漠或山区的最佳通信选择. 在中国新疆等地势恶劣地区, 就使用了许多通信网络, 以满足人们的通讯需求. 不同的通信网络同时使用, 从而构成混合模式的通信网络. 由于通信机制不同, 因此无法在混合式网络之间传输消息数据, 降低了信息的即时性.

随着通信技术重要性日渐增加, 混合网络的研究也变得越来越重要. 早期的研究集中在现场总线和工业局域网领域[1]. 研究热点是分析通信过程并建立多协议转换模型. 这些研究集中在如何规范协议转换, 而不是给出完整的数据交换方法. 本文提出一种基于发布-订阅模型的数据传输交换方法, 为混合网络之间的消息数据传输提供数据转换、映射和重组方法. 基于该方法实现的系统由设备软件代理、消息内容分析组件和负载平衡组件等组成. 设备软件代理负责加载通信设备驱动等初始化工作, 并管理这些设备消息收发功能. 内容分析组件对消息数据的内容进行分析, 解析消息路由, 并根据指定的规则将消息发送到特定的目标设备. 由于在混合网络中存在低速通信设备, 这降低了混合网络的整体通信性能. 负载平衡组件可以管理并聚合多个低速通信设备, 从而提高混合网络的整体消息数据吞吐量.

发布/订阅模型为上述的系统组件之间的消息数据传输提供了可靠通信模式. 每个系统组件都与发布/订阅方面的主题相关联, 从而将这些组件间的数据通信和通信设备控制相分离, 有利于形成高性能的动态消息数据交换网络.

本文的其余部分安排如下. 第1节介绍了有关发布/订阅模型的相关研究工作. 第2节详细介绍了基于该方法实现的系统架构以及系统中格式化的消息数据结构和负载平衡算法. 第3节中介绍实验方法, 并分析了实验结果. 第4节总结了论文.

1 相关工作

发布/订阅是一种消息传递模式, 由Frank Schmuck在1987年提出[2]. 在发布/订阅模型中, 消息的发送者称为发布者, 消息的接收者称为订阅者. 发布者不直接将消息发送给特定的接收者, 而是对发布的消息进行分类, 然后在不了解订阅者的情况下将消息数据按照分类结果发到消息中间件. 在不了解发布者的情况下, 消息接收者可以订阅一个或多个类别的消息, 从消息中间件接收感兴趣的消息. 上述方法实现了消息发布者和消息接收者之间的解耦, 使得整个系统具有良好的扩展性和伸缩性[3]. 发布/订阅模型已广泛用于数据分发[4], 中间件[5]和无线传感器网络[6].

存在多种发布/订阅系统的变体, 分别称为基于主题和基于内容的发布/订阅系统, 这些系统具有不同的性能开销. 基于主题的发布/订阅系统中的主题由唯一的名称(通常是字符串)标识, 主题抽象易于理解, 系统将各个主题映射到不同的通信渠道, 从而增强了平台的互操作性. 基于主题的发布/订阅很简单, 仅提供原始的表达能力. 然而, 基于内容的发布/订阅具有很高的表达力, 并在某些研究中得到使用[7]. 基于内容的发布/订阅依赖于复杂的协议, 从而导致更高的运行时开销[8].

发布/订阅已成功在多种分布式应用中使用. 本文利用基于内容的发布/订阅模型来分离混合网络中的消息发送者和消息接收者. 根据某些预定义的标准对消息内容进行格式化和分类, 同时利用负载均衡算法将消息内容分发到多个内容分析组件, 从而减少了分析消息内容时的整体运行时开销, 提高系统的整体性能.

2 体系结构

本文所述的混合网络主要应用于新疆地区, 用来解决新疆戈壁、沙漠等无人地区的即时通信问题. 该混合网络主要由北斗导航卫星网络、移动通信网络(GSM等)、移动背负式数字电台网络和基于TCP/IP的局域网(LAN)等组成. 其中北斗网络设备、GSM网络设备、数字电台设备、计算机等通信设备通过以太网或串口接入混合网络网关来完成混合网络之间进行数据传输. 通常情况下通过串口接入的通信设备的通信性能较低, 而通过以太网接入的通信设备是高速通信设备. 为了提高混合网络的整体数据吞吐量, 该系统允许同时接入多个GSM设备和多个北斗设备来提高低速通信网络的吞吐量, 负载均衡算法会自动管理并分配空闲设备的通信通道. 该系统的体系结构如图1所示.

图1所示, 该系统主要分为4层, 其中底部的通信设备层包含不同通信网络的通信设备, 用于建立各设备对应通信网络的通信链路. 在设备层上方的设备驱动软件代理层中, 每一个设备对应一个软件代理, 通信网络类型和对应通信设备标识符规定了软件代理的标识符. 在系统初始化时, 由软件代理完成通信设备的驱动加载、设备初始化、通信链路建立、建立设备消息接收和发送等操作环境. 在系统运行中, 设备软件代理的标识符将作为发布/订阅模型的主题由软件代理订阅. 发往该标识符主题的数据均由该软件代理处理并通过对应的通信设备发送到相应的通信网络中. 其中, 低速网络的设备软件代理的主题选择由各自的负载均衡算法完成.

图 1 系统体系结构图

从通信设备收到的消息由设备的软件代理推送到图1的消息内容分析层. 根据预定义规则的数据消息格式分析, 从数据内容中提取数据的目标设备地址, 根据该地址能够获得目标通信网络, 从而选择合适的通信设备将数据推送到相应的设备软件代理, 最终由通信设备完成在目标通信网络中的数据传递. 为了更好地利用多核CPU的处理能力, 在数据内容分析层中, 系统运行时将构建内容分析组件的多个实例, 由负载均衡算法确定具体的实例来处理当前消息数据.

2.1 消息数据格式

该系统规定了消息数据的特定格式, 对目标设备地址和消息数据内容组成数据内容要求进行规范化, 最重要的是对混合网络中设备地址进行规范化. 该系统规定混合网络中设备地址由通信网络ID和通信设备ID来唯一表示, 从而避免不同通信网络中设备标识符的重名问题. 发送消息的数据格式为“#目标网络ID: 目标设备ID#消息内容”, 如数据“#BD: 112546#速返回”表示将数据内容“速返回”发送到北斗网络“BD”中设备标识符为“112546”的目标设备.

当接入系统的通信设备收到格式化消息数据后, 软件代理将相关的补充信息如发送消息的源设备地址和消息顺序号添加到消息数据中, 形成规范化的系统内部数据格式为“#目标网络ID: 目标设备ID#消息内容#发送网络ID: 发送设备ID”, 直接发布到内容分析组件的订阅主题上.

内容分析组件对该数据内容进行解析, 提取目标网络ID、目标设备ID和消息数据内容“消息内容#发送网络ID: 发送设备ID”. 根据目标网络ID将目标设备ID和消息数据内容发布到合适的主题, 由订阅该主题的软件代理操作对应的通信设备完成目标网络中的通信操作, 将消息数据送往目标设备.

2.2 负载均衡

组成混合网络的通信设备的带宽差异较大, 有线网络的带宽远高于无线网络的带宽, 如以太网的带宽一般为1000 Mbps或100 Mbps; 而在移动网络中, 中国电信运营商要求单台通信设备在一分钟内发送的消息数不能超过200条; 对于北斗导航卫星网络来说, 通常一分钟内只能发送一条140字节的消息数据. 以百兆以太网作为高速通信网络来说, 理论上每秒可传递125 K的消息数据; 而对于低速网络如移动通信网络, 中国运营商规定每条短消息最多140字节, 以1 s发送10条短消息为基准, 需接入约89台移动网络设备才能够达到百兆以太网的通信性能. 因高速网络的通信性能远高于低速网络, 因此高速网络通信设备仅需单个设备直接接入内容分析组件进行内容分析和消息分发即可. 但是对于低速网络, 则需要接入多个同类通信设备聚合为通信网络设备池, 提高低速网络的带宽, 最终提高消息数据的即时性.

负载均衡算法用来管理通信网络设备池, 负责从中选择空闲设备进行消息数据发送等. 除此之外, 负载平衡算法也用于内容分析组件的多个实例的管理, 如图2所示.

图 2 负载均衡算法管理内容分析组件的流程图

在基于发布/订阅模型实现的系统中, 设备软件代理依据网络的不同分别向负载均衡组件报告各自连接设备的状态, 以此为依据, 负载均衡组件实现了一种基于循环调度的通信设备调度算法[9], 实现了依据设备状态对设备进行的合理调度. 该算法假定同类网络的接入设备具有相同的通信能力, 因此各设备具有相同的通信间隔, 但实际使用中, 通信设备的已使用时间长短、购买时间会造成一定的实际使用差异, 因此负载均衡算法考虑了这些问题, 利用权来表示设备的调度差异, 权重均为正值. 用户可根据设备的实际使用状态为通信设备赋予不同权重, 实现通信设备的合理调度. 如用户给新设备赋予高权重, 而给旧设备赋予低权重, 可用实现新设备优先使用, 旧设备作为备份的设备调度管理方法.

为简化算法实现, 虚拟了一个权重为0的通信设备, 表示该类目前没有接入通信设备, 选中虚拟通信设备表示消息数据发送失败. 以移动通信网络设备软件代理的负载平衡为例, 假设有一组可变的移动通信网络设备软件代理DV = {(d1, v1), (d2, v2), ···, (dn, vn), (d0, 0)}, 其中设备编号为d1d2···dn, 对应的设备权重v1v2···vn均为正值, 而虚拟设备编号为d0, 对应的设备权重为0. 变量n表示加入移动通信网络的设备软件代理数量. 变量t表示设备需要t秒发送一条消息. 最终该算法总是选择有序的设备软件代理DV中的第一个通信设备.

该算法的伪代码如算法1所示, 伪代码中定时器到期时总是将设备软件代理DV中的最后一个设备权重v设置为–1×v, 并按权重重新对DV排序.

算法1. 光流扰动效应检测算法

1) 输入: 当前所用的通信设备i

2) 输入: 当前通信设备DV, 按权重值从大到小已排序

3) 输出: 算法选中的下一个可用通信设备topicID

4) 将DV的长度赋予n

5) if n== 1 then

6) topicID = d0

7) 执行无设备接入处理

8) else

9) 将D中第1个通信设备赋予topicID

10) if topicID == d0 then

11) 执行无空闲设备处理

12) else

13) 在DV中置v topicID = –1 × vtopicID

14) 按权重值从大到小排序DV

15) 设置定时器时间t, 启动定时器

16) end if

17) end if

18) return topicID

上述算法要求每组设备软件代理添加一个权重为0 的虚拟通信设备d0, 无论系统是否接入该组设备, 均保证每组设备必有一个虚拟通信设备d0可用于通信. 这种方式使每组设备的可调度设备数量比实际接入设备数量多1个, 对数据交换性能几乎没有影响, 同时有利于实现调度算法和错误报告. 以北斗设备为例, 即使系统中没有接入北斗设备, 系统中仍存在虚拟的北斗设备软件代理d0, 当其被调度用于消息发送时, 虚拟北斗设备软件代理d0将向监控组件报告通信设备接入错误信息, 同时在操作日志记录通信错误.

3 实验

为了评估所提出系统的有效性和传输性能, 使用Python语言开发了两个系统进行实验. 其中一个系统利用Mosquitto[10]作为发布/订阅服务器, 实现了发布/订阅模型. 作为一个开源消息代理, Mosquitto能实现基于主题的发布/订阅消息传递模型. 内容分析组件、负载均衡组件和各设备的软件代理组件均由Python编程语言实现的; 另一个系统利用Twisted框架[11]实现了基于事件驱动的数据交换传输系统. Twisted是Python语言编写的一种基于事件驱动的网络引擎, 可用于实现事件驱动的数据传输. 在实验中, 没有使用真实的通信设备. 各设备的软件代理根据表1中列出的参数模拟相关设备的通信特性; 并且实验中使用的单条消息数据不超过100字节. 实验结果主要使用批量数据传输时间来评估不同系统的传输性能[12]. 所有实验均在台式机上执行的, 台式机的处理器为Intel i5-6500 3.2 GHz, 配有16 GB内存, 运行Ubuntu 14.04操作系统. 实验系统中使用局域网即时通信软件飞鸽作为计算机端的通讯软件, 因此实验中使用Python语言实现了飞鸽通信协议作为大批量消息数据发送源.

表 1 模拟设备的数据传输性能设定

3.1 性能分析

实验结果记录了从飞鸽通信软件代理向GSM设备软件代理传输消息数据的花费时间作为传输性能的测量依据. 实验中的消息数量最初为10万条, 然后每次增加10万条直到最终60万条. 当飞鸽通信软件代理发送第一条消息时, 当前时间点被称为t1. 当目标GSM软件代理收到最后一条消息时, 此时的时间点被称为t2. 那么本批消息的传输耗费时间是t1t2的差值. 每个批次的实验均重复10次, 所得到的平均传输耗费时间列于表2. 在表2中也给出了内容分析组件的负载平衡算法的性能.

表 2 基于发布/订阅模型的系统与基于Twisted实现的事件驱动系统的批量消息数据传输时间对比

表2所示, 和基于事件驱动的系统相比, 在仅启用一个内容分析组件实例时, 基于发布/订阅模型的系统的消息传输性能差. 由于实验中传输的消息数量大, 基于事件驱动的系统在运行时, 处理器的单核利用率达到了100%, 经过分析, 内容分析组件实例占用了过多的处理器时间. 受Python语言多线程特性的影响, 基于事件驱动的系统无法充分利用多核处理器的并发功能, 但在基于发布/订阅模型的系统中, 内容分析组件实例运行在独立进程中, 通过主题进行消息的收发, 从而可以通过增加内容分析组件实例, 提高多核处理器的利用率. 实验中从一个内容分析组件实例逐步增加到5个并行的实例, 这些实例的管理和选择由负载平衡算法处理. 如表2所示, 当消息数量为10万条且基于发布/订阅模型的系统中内容分析实例数大于2时, 基于发布/订阅模型的系统的消息传输性能要优于基于事件驱动的系统. 但消息数量逐步增加时, 两个系统的性能均逐步下降, 并且基于发布/订阅模型的系统下降得更快. 随着内容分析组件实例数量的增加, 基于发布/订阅模型的系统的消息传输性能随之增加. 在实验中, 当内容分析组件实例的数量为4时, 和基于事件驱动的系统相比, 基于发布/订阅模型的系统表现出最好的数据传输性能.

3.2 负载均衡分析

表2所示, 随着内容分析组件实例数量增加, 系统的消息传输性能增加, 但传输性能的增加幅度下降. 有研究表明, 当通过网络传输大量消息时, 操作系统自身会缓存消息队列, 从而降低了系统性能, 因此影响了负载均衡算法的有效性, 利用低速通信网络可以更好地测试负载均衡算法的有效性. 本研究对北斗导航卫星网络、移动网络、无线电台网络分别进行负载均衡实验, 实验中的消息数据数量从1千条逐步增加到7千条. 负载均衡实验结果如图3所示.

图 3 负载均衡实验结果

图3所示, 在低速网络中, 随着内容分析组件实例数量的增加, 消息数据传输耗费时间明显减少. 图3中随着内容分析组件实例的数量增加, 耗费时间曲线几乎成比例的下降, 这表明负载平衡算法通过聚合多个低速网络通信设备能有效提高低速网络的数据传输性能.

4 结论

通信网络在人们的生活中得到了广泛使用. 移动通信网络已经普遍覆盖了城市、农村等地区, 但在偏远地区、沙漠、戈壁等无人区, 无线电台、卫星网络等通信网络更加适用, 研究混合网络之间的高性能数据传输, 实现混合网络即时消息数据传递, 能够满足新疆等偏远地区的现实需求. 本文描述了一种基于发布/订阅模型的混合网络数据传输方法, 实现了由移动通信网络、北斗导航卫星网络、无线电台网络和计算机局域网形成的混合网络之间的消息数据传输. 在该方法中, 消息内容分析组件、设备软件代理和负载平衡组件均一一对应发布/订阅模型的主题. 其中, 消息内容分析组件负责消息的格式化内容分析, 解析消息路由; 设备软件代理负责网络通信设备的驱动加载和管理; 负载平衡组件通过聚合多个低速通信设备来提高低速通信网络带宽. 经过模拟实验, 该方法能有效实现混合网络之间的高性能消息数据传输. 目前, 利用该方法实现的混合网络传输系统已经在实际项目中得到了应用. 未来, 我们将进一步优化发布/订阅模型和负载平衡算法来提高系统性能.

参考文献
[1]
Lobashov M, Pratl G, Sauter T. Applicability of Internet protocols for fieldbus access. Proceedings of the 4th IEEE International Workshop on Factory Communication Systems. Vasteras, Sweden. 2002. 205–213.
[2]
Birman K, Joseph T. Exploiting virtual synchrony in distributed systems. Proceedings of the Eleventh ACM Symposium on Operating Systems Principles. New York, NY, USA. 1987. 123–138.
[3]
Eugster PT, Felber PA, Guerraoui R, et al. The many faces of publish/subscribe. ACM Computing Surveys, 2003, 35(2): 114-131. DOI:10.1145/857076.857078
[4]
张明. 基于发布/订阅模式的通信网关系统研究及开发[硕士学位论文]. 北京: 中国科学院大学(工程管理与信息技术学院), 2016.
[5]
叶莹莹, 曹建, 钱诗友, 等. 发布订阅网络中的个性化优先级路由算法. 小型微型计算机系统, 2014, 35(2): 199-204. DOI:10.3969/j.issn.1000-1220.2014.02.002
[6]
郭伟, 秦华旺. 发布/订阅系统中Gossip路由算法的设计及实现. 通信技术, 2016, 49(9): 1206-1210. DOI:10.3969/j.issn.1002-0802.2016.09.019
[7]
薛小平, 王小平, 张思东, 等. 分布式发布/订阅通信系统中的事件路由研究. 通信学报, 2008, 29(4): 114-123. DOI:10.3321/j.issn:1000-436X.2008.04.018
[8]
Eisenhauer G, Wolf M, Abbasi H, et al. Event-based systems: Opportunities and challenges at exascale. Proceedings of the Third ACM International Conference on Distributed Event-Based Systems. Nashville, TN, USA. 2009. 2.
[9]
Alam F, Thayananthan V, Katib I. Analysis of round-robin load-balancing algorithm with adaptive and predictive approaches. Proceedings of 2016 UKACC 11th International Conference on Control. Belfast, UK. 2016.1–7.
[10]
Da Silva ACF, Breitenbücher U, Képes K, et al. OpenTOSCA for IoT: Automating the deployment of IoT Applications based on the Mosquitto message broker. Proceedings of the 6th International Conference on the Internet of Things. Stuttgart, Germany. 2016. 181–182.
[11]
Kinder K. Event-driven programming with twisted and python. Linux Journal, 2005, 2005(131): 74-77.
[12]
Fudzee MFM, Mohamed J, Ramli AA, et al. Associating user’s psychology into quality of service: An example of web adaptation services. Acta Informatica Malaysia, 2017, 1(1): 29-31. DOI:10.26480/aim.01.2017.29.31