一种降低消息中间件网络负载的消息传递方法

文档序号:7749868阅读:219来源:国知局
专利名称:一种降低消息中间件网络负载的消息传递方法
技术领域
本发明涉及一种优化网络性能的消息传递方法,尤其是涉及一种基于 XML(Extensible Markup Language,可扩展标记语言)相似性原理的可降低消息中间件网 络负载的消息传递方法。
背景技术
消息中间件(MOM,Message Oriented Middleware)是一种提供松散耦合的灵活方 式来集成应用程序的机制。它基于消息队列的存储_转发机制,并提供特有的异步传输机 制,能够基于消息传输和异步事务处理实现应用整合与数据交换。消息中间件有两种消息传递模式点对点模式和发布/订阅模式。点对点模式用 于消息生产者和消息消费者之间点到点的通信,消息生产者将消息发送到由某个名字标识 的特定的消息消费者。发布/订阅模式中定义了内容节点,消息发布者可以向内容结点发 布消息,消息订阅者可以向内容结点订阅消息,而在发布/订阅模式中这些内容节点被称 为主题,主题使得消息发布者和消息订阅者保持互相独立,两者不需要接触即可保证消息 的传送。目前,大多数消息中间件均支持多种数据格式消息的传输,如字节流、输入输出 流、Map键值以及XML文本等。在这些数据格式之中,由于XML文本具有开放性、简单性以 及互操作性等优点,因此XML文本为MOM消息传输中最主要的数据格式。然而,XML文本是 一种基于文本的数据,大量XML文本数据格式的消息将导致严重的网络负载,降低了传输 效率。随着互联网技术的快速发展,物联网产业链被重新提出,移动互联网技术成为了 物联网发展的基础条件。消息中间件的部署也从传统的互联网延伸到了移动设备上。作为 移动互联网上网络传输的性能瓶颈,网络带宽变得尤为宝贵。探索一种降低网络负载的消 息传递方法成为了必要。针对XML文本数据格式的消息传输效率低下的问题,目前相关研究人员提出了多 种方法来优化网络性能。总体来说,目前的多种优化网络性能的方法可归纳为以下几种 (1)改变数据格式为二进制如转化为XML文本可序列化对象、用Gzip等压缩算法进行二 进制压缩和采用Map键值对等;(2)消息队列的缓存通过结合新接收到的消息和缓存在消 息队列中的消息,来产生完整的消息,其中新接收的消息记录着与上一条消息的不同点,因 而可以减少网络流量。上述两种网络性能的优化方法有效地减少了消息中间件消息传输过程中的网络 流量,但仍然存在一些缺点,具体如下上述第(1)种方法通过采用压缩等技术来减小用于 传输的消息的数据大小,但该方法并没有改变原消息(压缩之前)的数据大小,当网络中含 有大量相似的消息时,该方法的效果十分有限;上述第(2)种方法主要强调优化单个消息 生产者与消息消费者之间点对点的传输,只考虑了同一消息消费者的一条消息与上一条消 息的相似性,并没有考虑同一消息生产者发给多个消息消费者的消息也具有相似性。

发明内容
本发明所要解决的技术问题是提供一种能够有效降低中间件的网络负载,降低带 宽耗损的消息传递方法。本发明解决上述技术问题所采用的技术方案为一种降低消息中间件网络负载的 消息传递方法,包括以下步骤①组建一个基于XML文本数据格式消息传递的消息中间件,该消息中间件包括至 少两个消息队列服务器,将每个消息队列服务器作为一个节点,在每个节点中设置具有能 够根据目标节点的地址决定下一跳节点的地址且支持消息拆包和封包功能的应用层路由 模式;②在每个节点中设置一个用于计算消息收集时间的第一计时模块和一个用于计 算消息等待时间的第二计时模块,在第一计时模块中设置一个最长原始消息收集时间,在 第二计时模块中设置一个最长原始消息等待时间,每个节点接收消息生产者或者上一个节 点发出的多条原始消息,当消息收集时间大于最长原始消息收集时间时,认为原始消息已 经被收集了足够长的时间,节点完成一次消息收集,或当消息等待时间大于最长原始消息 等待时间时,认为原始消息等待超时,节点完成一次消息收集;在此,假设消息生产者具有 一个或多个功能,消息生产者的每个功能具有一个消息模板,对于消息生产者的同一个功 能发出的多条原始消息结构基本相同;③定义当前完成一次消息收集的节点为当前节点;④计算当前节点中所有原始消息的结构相似度,并根据结构相似度对所有原始消 息进行一次分类,得到多个同类原始消息集;⑤当前节点根据每个同类原始消息集中各个原始消息的下一跳节点的地址,对每 个同类原始消息集中的所有原始消息进行二次分类,得到多个同类原始消息子集,每个同 类原始消息子集中的各条原始消息具有共同的下一跳节点的地址;⑥定义当前正在处理的同类原始消息子集为当前同类原始消息子集,提取当前同 类原始消息子集中所有原始消息的相同部分内容,并在所有原始消息的相异部分内容中标 上各个原始消息各自的目标节点的地址,将当前同类原始消息子集中的所有原始消息的相 同部分内容与相异部分内容进行差分编码,并封包成一条已编码消息,然后当前节点根据 共同的下一跳节点的地址,将已编码消息发送给对应的下一跳节点;⑦将下一个待处理的同类原始消息子集作为当前同类原始消息子集,重复执行步 骤⑥的过程,直至所有同类原始消息子集处理完毕;⑧下一跳节点接收已编码消息,将该下一跳节点作为当前节点,该当前节点对已 编码消息进行拆包解析,得到多条原始消息;⑨定义解析出的多条原始消息中当前正在处理的原始消息为当前原始消息,判断 当前原始消息的目标节点的地址是否为当前节点,如果是,则当前节点将当前原始消息发 送给当前节点对应的消息消费者,并继续执行,否则,对当前原始消息不进行处理;⑩将解析出的多条原始消息中下一条待处理的原始消息作为当前原始消息,并返 回执行步骤⑨,直至解析出的多条原始消息全部处理完毕;◎对于当前节点解析出的多条原始消息中未处理的所有原始消息,重复执行步骤④至⑩,以完成消息生产者发出的所有原始消息到达消息消费者。所述的步骤②中消息收集时间为第一计时模块从节点完成一次消息收集以后开 始计时,节点完成下一次消息收集后第一计时模块重新开始计时,该过程中第一计时模块 所计的时间为消息收集时间;消息等待时间为第二计时模块从上一条原始消息到达节点 后开始计时,在下一条原始消息到达节点后第二计时模块重新开始计时,该过程中第二计 时模块所计的时间为消息等待时间。所述的步骤④的具体过程为④-1、将当前节点中的每条原始消息看作一棵具有唯一根结点且具有若干个叶子 结点的树,获取当前节点收集到的所有原始消息各自具有的各个叶子结点的结点路径;④_2、计算当前节点中的任意两条原始消息的结构相似度,记为
Simstru(Messagel, Message2),Sim她(Message!,Message2) =,其中,Messagel
表示其中一条原始消息,Message〗表示另一条原始消息,N1表示其中一条原始消息 Messagel中具有的所有叶子结点的结点路径的总个数,N2表示另一条原始消息Messagd 中具有的所有叶子结点的结点路径的总个数,MaxO为取最大值函数,N-表示其中一条原 始消息Messagel和另一条原始消息Message2共有的结点路径的个数,Simstru(Messagel, Message2) e
;④_3、判断任意两条原始消息的结构相似度Simsteu(Messagel,Message2)是否大 于设定的相似度阈值,如果是,则认为这两条原始消息来自消息生产者的同一个功能,将这 两条原始消息分入同一个同类原始消息集中。所述的步骤④-1中结点路径为从树根开始至各个叶子结点为每个结点标上XML 标记,从树根到叶子结点的所有XML标记构成的序列为该叶子结点的结点路径。所述的步骤④-3中设定的相似度阈值的取值范围为(0,1]。所述的步骤⑥中已编码消息主要由消息头和消息体两部分组成,消息头包括各个 原始消息的源地址,消息体包括相同部分内容和相异部分内容,相异部分内容中附带有各 个原始消息的目标地址。与现有技术相比,本发明的优点在于通过合理地利用XML文本数据格式的消息的 结构相似性,及巧妙地使用差分编码,有效地降低了消息中间件的网络负载,具体优点体现 如下1)、本发明方法区别于现有的改变消息数据格式形式的压缩方法,本发明方法提 出了采用差分编码对原始消息进行编码,这样可将网络上结构相似且具有共同的下一跳节 点的地址的原始消息的相同部分内容的冗余数据去除,从而可大大地降低带宽耗损。2)、利用消息生产者发出的原始消息具有相似性的这一特点,对XML文本数据格 式的消息进行相似度比较和归类,提升差分编码的有效性。3)、本发明与现有的消息队列缓存的方法相比,本发明方法不局限于考虑点对点 数据传输的优化,充分考虑了多个消息消费者将接收到的原始消息之间也存在相似性,从 而可有效降低中间件的网络负载。4)、本发明方法中对消息的传输方式进行了改进,借鉴了类似于组播原理的传输 方式,如当一条消息传递给多个目标节点时,具有相同下一跳地址的消息将共用一条已编码消息进行传递。


图1为消息中间件的结构示意图;图2为消息收集时间和消息等待时间的关系示意图;图3a为一个原始消息示例;图3b为另一个原始消息示例;图4为差分编码的简要过程示意图;图5为已编码消息的结构示意图。
具体实施例方式以下结合附图实施例对本发明作进一步详细描述。本发明提出的降低消息中间件网络负载的消息传递方法,涉及多个消息队列服务 器(节点),每个消息队列服务器(节点)拥有应用层路由模式,该应用层路由模式可以支 持消息的拆包和封包,在本方法中,消息生产者将某一时间间隔内产生的原始消息交给其 对应的节点,节点中的应用层路由模式将多条原始消息根据其下一跳节点的地址进行差分 编码并封包成为已编码消息;下一跳节点接收到上一跳节点发来的已编码消息,对该已编 码消息进行拆包解析,同样的,该下一跳节点中的应用层路由模式根据其下一跳节点的地 址进行差分编码并封包成为已编码消息;依据上述方式原始消息通过节点传递,直到到达 消息消费者。本发明方法具体包括以下步骤①组建一个基于XML文本数据格式消息传递的消息中间件,该消息中间件包括至 少两个消息队列服务器,各个消息队列服务器之间通过网络方式相互连接,将每个消息队 列服务器作为一个节点,在每个节点中设置具有能够根据目标节点的地址决定下一跳节点 的地址且支持消息拆包和封包功能的应用层路由模式,该应用层路由模式采用现有技术, 常见的路由模式的核心为OSPF(Open Shortest Path First,开放式最短路径优先)路由协 议,OSPF核心使用的是Dijkstra算法。该消息中间件的结构如图1所示,图1所示的消息中间件包括7个消息队列服务 器,图1中的客户端表示消息生产者或消息消费者。②在每个节点中设置一个用于计算消息收集时间的第一计时模块和一个用于计 算消息等待时间的第二计时模块,在第一计时模块中设置一个最长原始消息收集时间,在 第二计时模块中设置一个最长原始消息等待时间,每个节点接收消息生产者或者上一个节 点发出的多条XML文本数据格式的原始消息,当消息收集时间大于最长原始消息收集时间 时,认为原始消息已经被收集了足够长的时间,节点完成一次消息收集,或当消息等待时间 大于最长原始消息等待时间时,认为原始消息等待超时,节点完成一次消息收集。在此,假 设每个消息生产者具有一个或多个相对固定的功能,对于消息生产者的同一个功能发出的 多条原始消息基本相同,即同一功能发出的多条原始消息具有相似性。在此具体实施例中,消息收集时间为第一计时模块从节点完成一次消息收集以 后开始计时,节点完成下一次消息收集后第一计时模块重新开始计时,该过程中第一计时 模块所计的时间为消息收集时间;消息等待时间为第二计时模块从上一条原始消息到达节点后开始计时,在下一条原始消息到达节点后第二计时模块重新开始计时,该过程中第 二计时模块所计的时间为消息等待时间。图2给出了消息收集时间和消息等待时间的关系 示意图,图2中Trall表示消息收集时间,Twait表示消息等待时间。假设最长原始消息收集时 间为20秒,最长原始消息等待时间为5秒,节点将等待并收集一段时间,当一条原始消息的 消息等待时间超过5秒时,将完成一次消息收集;当消息收集时间超过20秒时,也将完成一 次消息收集。③定义当前完成一次消息收集的节点为当前节点。④计算当前节点中所有原始消息的结构相似度,并根据结构相似度对所有原始消 息进行一次分类,得到多个同类原始消息集。具体过程为④-1、将当前节点中的每条原始消息看作一棵具有唯一根结点且具有若干个叶子 结点的树,获取当前节点收集到的所有原始消息各自具有的各个叶子结点的结点路径。④_2、计算当前节点中的任意两条原始消息的结构相似度,记为
JV
Simstru(Messagel,Message2),Simstru (Messagel,Message!)=胞(二 ^ ) ’其中,Messagel
表示其中一条原始消息,Message〗表示另一条原始消息,N1表示其中一条原始消息 Messagel中具有的所有叶子结点的结点路径的总个数,N2表示另一条原始消息Messagd 中具有的所有叶子结点的结点路径的总个数,MaxO为取最大值函数,N-表示其中一条原 始消息Messagel和另一条原始消息Message2共有的结点路径的个数,Simstru(Messagel, Message2) e
0④-3、判断任意两条原始消息的结构相似度Simsteu(Messagel,Message2)是否大 于设定的相似度阈值,如果是,则认为这两条原始消息来自消息生产者的同一个功能,将这 两条原始消息分入同一个同类原始消息集中。一般而言,消息生产者拥有相对固定的功能,为生成XML文本数据格式的消 息,每一个功能都存在一个相对应的消息模板,相同消息模板生成的XML文本数据格 式的消息具有较高的相似性。如图3a与图3b为同一消息模板生成的两条原始消 息。对原始消息进行归类时,可以对某一节点接收到的任意两条原始消息进行结构相 似度比较。图3 a所示的原始消息a共有9个结点路径,图3 b所示的原始消息b共 有8个结点路径,原始消息a和原始消息b两者共有的结点路径个数为7个,根据公式
N
^(MewflgeLMmflg^) = ^^^,可以计算得到两条原始消息的结构相似
度为0. 78。假定相似度阈值为0. 6,则该两条原始消息结构相似度大于设定的相似度阈值, 可以将该两条原始消息归为一类,属于同一类别的原始消息才适合被差分编码并封包。在此具体实施例中,结点路径为从树根开始至各个叶子结点为每个结点标上 XML标记,从树根到叶子结点的所有XML标记构成的序列为该叶子结点的结点路径。在此具体实施例中,设定的相似度阈值的取值范围为(0,1]。⑤当前节点根据每个同类原始消息集中各个原始消息的下一跳节点的地址,对每 个同类原始消息集中的所有原始消息进行二次分类,得到多个同类原始消息子集,每个同 类原始消息子集中的各条原始消息具有共同的下一跳节点的地址。⑥定义当前正在处理的同类原始消息子集为当前同类原始消息子集,提取当前同类原始消息子集中所有原始消息的相同部分内容,并在所有原始消息的相异部分内容中标 上各个原始消息各自的目标节点的地址,将当前同类原始消息子集中的所有原始消息的相 同部分内容与相异部分内容进行差分编码,并封包成一条已编码消息,然后当前节点根据 共同的下一跳节点的地址,将已编码消息发送给对应的下一跳节点。步骤⑤至⑥过程如图4所示,抽取同类原始消息子集中所有原始消息的相同部分 内容和相异部分内容,并将其封装成XML文本数据格式的已编码消息,已编码消息的结构 如图5所示。在此具体实施例中,已编码消息主要由消息头和消息体两部分组成,消息头包 括各个原始消息的源地址等信息,消息体包括相同部分内容和相异部分内容,相异部分内 容中附带有各个原始消息的目标地址。⑦将下一个待处理的同类原始消息子集作为当前同类原始消息子集,重复执行步 骤⑥的过程,直至所有同类原始消息子集处理完毕。⑧下一跳节点接收已编码消息,将该下一跳节点作为当前节点,该当前节点对已 编码消息进行拆包解析,通过相同部分内容和相异部分内容的结合可以还原得到多条原始 消息,各条原始消息中包含有各自对应的目标节点的地址。⑨定义解析出的多条原始消息中当前正在处理的原始消息为当前原始消息,判断 当前原始消息的目标节点的地址是否为当前节点,如果是,则当前节点将当前原始消息发 送给当前节点对应的消息消费者,并继续执行,否则,对当前原始消息不进行处理。⑩将解析出的多条原始消息中下一条待处理的原始消息作为当前原始消息,并返 回执行步骤⑨,直至解析出的多条原始消息全部处理完毕。◎对于当前节点解析出的多条原始消息中未处理的所有原始消息,重复执行步骤 ④至⑩,以完成消息生产者发出的所有原始消息到达消息消费者。
权利要求
一种降低消息中间件网络负载的消息传递方法,其特征在于包括以下步骤①组建一个基于XML文本数据格式消息传递的消息中间件,该消息中间件包括至少两个消息队列服务器,将每个消息队列服务器作为一个节点,在每个节点中设置具有能够根据目标节点的地址决定下一跳节点的地址且支持消息拆包和封包功能的应用层路由模式;②在每个节点中设置一个用于计算消息收集时间的第一计时模块和一个用于计算消息等待时间的第二计时模块,在第一计时模块中设置一个最长原始消息收集时间,在第二计时模块中设置一个最长原始消息等待时间,每个节点接收消息生产者或者上一个节点发出的多条原始消息,当消息收集时间大于最长原始消息收集时间时,认为原始消息已经被收集了足够长的时间,节点完成一次消息收集,或当消息等待时间大于最长原始消息等待时间时,认为原始消息等待超时,节点完成一次消息收集;在此,假设消息生产者具有一个或多个功能,消息生产者的每个功能具有一个消息模板,对于消息生产者的同一个功能发出的多条原始消息结构基本相同;③定义当前完成一次消息收集的节点为当前节点;④计算当前节点中所有原始消息的结构相似度,并根据结构相似度对所有原始消息进行一次分类,得到多个同类原始消息集;⑤当前节点根据每个同类原始消息集中各个原始消息的下一跳节点的地址,对每个同类原始消息集中的所有原始消息进行二次分类,得到多个同类原始消息子集,每个同类原始消息子集中的各条原始消息具有共同的下一跳节点的地址;⑥定义当前正在处理的同类原始消息子集为当前同类原始消息子集,提取当前同类原始消息子集中所有原始消息的相同部分内容,并在所有原始消息的相异部分内容中标上各个原始消息各自的目标节点的地址,将当前同类原始消息子集中的所有原始消息的相同部分内容与相异部分内容进行差分编码,并封包成一条已编码消息,然后当前节点根据共同的下一跳节点的地址,将已编码消息发送给对应的下一跳节点;⑦将下一个待处理的同类原始消息子集作为当前同类原始消息子集,重复执行步骤⑥的过程,直至所有同类原始消息子集处理完毕;⑧下一跳节点接收已编码消息,将该下一跳节点作为当前节点,该当前节点对已编码消息进行拆包解析,得到多条原始消息;⑨定义解析出的多条原始消息中当前正在处理的原始消息为当前原始消息,判断当前原始消息的目标节点的地址是否为当前节点,如果是,则当前节点将当前原始消息发送给当前节点对应的消息消费者,并继续执行,否则,对当前原始消息不进行处理;⑩将解析出的多条原始消息中下一条待处理的原始消息作为当前原始消息,并返回执行步骤⑨,直至解析出的多条原始消息全部处理完毕;对于当前节点解析出的多条原始消息中未处理的所有原始消息,重复执行步骤④至⑩,以完成消息生产者发出的所有原始消息到达消息消费者。FSA00000117552800021.tif
2.根据权利要求1所述的一种降低消息中间件网络负载的消息传递方法,其特征在于 所述的步骤②中消息收集时间为第一计时模块从节点完成一次消息收集以后开始计时, 节点完成下一次消息收集后第一计时模块重新开始计时,该过程中第一计时模块所计的时 间为消息收集时间;消息等待时间为第二计时模块从上一条原始消息到达节点后开始计时,在下一条原始消息到达节点后第二计时模块重新开始计时,该过程中第二计时模块所 计的时间为消息等待时间。
3.根据权利要求1或2所述的一种降低消息中间件网络负载的消息传递方法,其特征 在于所述的步骤④的具体过程为④-1、将当前节点中的每条原始消息看作一棵具有唯一根结点且具有若干个叶子结点 的树,获取当前节点收集到的所有原始消息各自具有的各个叶子结点的结点路径;④-2、计算当前节点中的任意两条原始消息的结构相似度,记为Simstra(Messagel,Message2),Simstru (Message\,Message2) =N ),其中,Messagel 表示其中一条原始消息,Message〗表示另一条原始消息,N1表示其中一条原始消息Messagel中具有的所有 叶子结点的结点路径的总个数,N2表示另一条原始消息Message〗中具有的所有叶子结点的 结点路径的总个数,MaxO为取最大值函数,N-表示其中一条原始消息Messagel和另一条 原始消息Message2共有的结点路径的个数,Simsteu(Messagel,Message2) e
;④-3、判断任意两条原始消息的结构相似度Simsteu(Messagel,Message2)是否大于设 定的相似度阈值,如果是,则认为这两条原始消息来自消息生产者的同一个功能,将这两条 原始消息分入同一个同类原始消息集中。
4.根据权利要求3所述的一种降低消息中间件网络负载的消息传递方法,其特征在于 所述的步骤④-1中结点路径为从树根开始至各个叶子结点为每个结点标上XML标记,从 树根到叶子结点的所有XML标记构成的序列为该叶子结点的结点路径。
5.根据权利要求4所述的一种降低消息中间件网络负载的消息传递方法,其特征在于 所述的步骤④-3中设定的相似度阈值的取值范围为(0,1]。
6.根据权利要求3所述的一种降低消息中间件网络负载的消息传递方法,其特征在于 所述的步骤⑥中已编码消息主要由消息头和消息体两部分组成,消息头包括各个原始消息 的源地址,消息体包括相同部分内容和相异部分内容,相异部分内容中附带有各个原始消 息的目标地址。
全文摘要
本发明公开了一种降低消息中间件网络负载的消息传递方法,其根据当前节点接收到的所有原始消息的结构相似度进行一次分类,得到同类原始消息集,再根据同类原始消息集中原始消息的下一跳节点的地址进行二次分类,得到同类原始消息子集,分别提取子集中所有原始消息的相同和相异部分内容,再进行差分编码,并封包成已编码消息发送给下一跳节点,下一跳节点拆包并解析,解析出的原始消息的目标节点的地址为该节点时,将该原始消息发送给消息消费者,该节点对未处理的所有原始消息再重复分类、封包的过程,直至发送给消息消费者,优点在于通过合理地利用XML文本数据格式的消息的结构相似性,及巧妙地使用差分编码,有效地降低了消息中间件的网络负载。
文档编号H04L29/08GK101917332SQ20101018422
公开日2010年12月15日 申请日期2010年5月24日 优先权日2010年5月24日
发明者俞弘, 姜建生, 干红华, 廖兰新, 赵晨 申请人:宁波东海蓝帆科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1