一种消息分发的方法和装置的制造方法

文档序号:9910861阅读:346来源:国知局
一种消息分发的方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机及其软件技术领域,特别地涉及一种消息分发的方法和装置。
【背景技术】
[0002]消息系统在计算机应用系统中应用非常广泛,在隔离系统变化,减少系统耦合,提高处理效率具有不可替代的作用。消息系统主要包括消息生产者、消息消费者以及传递消息的传输系统三部分,其中,消息生产者负责生成消息,并通过传输系统发送给消息消费者;消息消费者负责从传输系统读取消息并进行业务处理;传输系统负责从消息生产者读取消息,并把消息发送给消息消费者。
[0003]评估传输系统的优劣通常采用三个技术标准,S卩:传输时效、传输可靠性以及传输性能。传输时效是指从消息生产者发出消息到消息消费者收到消息之间的时间间隔,用于评价传输系统的及时性;传输可靠性用于评价传输系统传递消息的准确程度,即消息消费者端收到的消息和消息生产者发出的消息的顺序和内容是否一致,是否有消息丢失,消息重复或消息报文损坏等;传输性能是指在指定资源条件下的最大消息吞吐量,用于评价传输系统的消息传递能力。
[0004]传统IT系统消息规模较小,而且系统与系统之间通常是在内网环境,网络延迟较小,因此设计的传输系统侧重于高可靠和低延时的传输系统。
[0005]其中,高可靠的消息分发系统如图1所示,其主要通过消息生产端重发,传输系统端消息持久化以及消息消费端消息重发三个控制环节保障信息的高可靠性。其消息分发的尚可靠性具体体现在:
[0006]消息生产端重发:消息生产者发送消息Msg_N给传输系统,传输系统写入消息日志,返回Ack_P消息给消息生产者,表明消息已经可靠投递到传输系统。如果客户端在预定时间内没有收到Ack_P消息,则认为该消息没有发送成功,消息生产者会重发该消息,直到收到发送成功的Ack_P消息;
[0007]消息持久化:传输系统收到消息Msg_N以后,把Msg_N写入日志系统,并返回Ack_P消息给消息生产者。然后转发该消息给消息消费者,等收到消息消费者的Ack_R消息以后,在日志系统中把Msg_N置为“发送成功”;
[0008]消息消费端重发:当传输系统发送Msg_N失败,或没有收到消息消费端发来的Ack_R消息时,传输系统会重发Msg_N,直到成功收到消息消费端发来的
[0009]低延时的消息分发系统如图2所示,其不同于高可靠的消息分发系统,其不是把消息通过传输系统中转,而是直接把消息发送给消息消费者,传输系统的作用更多是作为一个注册中心,用于记录消息生产者的服务地址。低延时的消息分发系统的消息处理步骤主要包括:
[0010]消息生产者注册消息服务地址SM_ADDR到传输系统;
[0011 ]消息消费者通过传输系统查询消息服务地址SM_ADDR;
[0012]消息消费者根据SM_ADDR,创建和消息生产者之间的传输通道;
[0013]消息生产者通过传输通道发送Msg_N给消息消费者,消息消费者反馈Ack消息给消息生广者;
[0014]如果消息生产者发送失败或者等待Ack消息超时,则消息生产者会快速显示失败,提示发送不成功。
[0015]上述高可靠的消息分发系统和低延时的消息分发系统在进行消息分发时都存在各自的缺点,主要表现在:高可靠的消息分发系统增加了消息中转和持久化日志环节,处理环节多;而且整体的处理能力受限于传输系统的容量,效率较低;而低延时的消息分发系统虽然不受限于传输系统的容量,但每个消息都要发送一次,对于要发送大量短消息(例如小于1518byte,一个以太网帧最大长度)的场景,增加了不必要的网络开销。
[0016]可见,现有的消息分发系统在处理性能和消息吞吐量上都存在一定缺陷,而随着互联网应用中消息规模的迅猛增长,系统所依赖的组网技术越来越复杂,网络质量难以预测,信息异构日趋多元,对信息的可靠性要求有所降低。为了满足这类场景的应用,本发明提出一种消息分发系统,其能实现海量信息的高效传输,既不受限于传输系统的容量,又可避免不必要的网络开销。

【发明内容】

[0017]有鉴于此,本发明提供一种消息分发的方法和装置,能够优先保障传输性能,在有限的网络带宽约束下适当权衡可靠性和时效性,保障最大信息吞吐量,提供海量信息下最大限度的传输效率,满足高负荷场景下的消息分发需求。
[0018]为实现上述目的,根据本发明的一个方面,提供了一种消息分发的方法。
[0019]—种消息分发的方法,包括:消息生产者与消息消费者根据消息分发服务地址建立消息传输通道;所述消息生产者将生产的消息按照预定的时间间隔进行分组,并按照各消息组的创建顺序将所述消息组通过所述消息传输通道发送给所述消息消费者;所述消息消费者接收所述消息组并读取所述消息组中的消息,并按照消息生产的先后顺序依次消费所述读取的消息。
[0020]可选地,消息生产者与消息消费者根据消息分发服务地址建立消息传输通道的步骤,包括:所述消息生产者将所述分发服务地址发送到消息传输模块;所述消息消费者从所述消息传输模块查找到所述分发服务地址,并根据所述分发服务地址与所述消息生产者建立消息传输通道。
[0021]可选地,所述消息生产者将生产的消息按照预定的时间间隔进行分组的步骤包括:根据消息生产的当前时间和所述预定的时间间隔计算时间标识;根据所述预定的时间间隔内消息生产的先后顺序对所述消息进行排序,并给出对应的序列号;对所述生产的消息创建新的消息对象,所述新的消息对象包括所述时间标识、所述序列号和所述消息的内容;对所述新的消息对象按照预定的时间间隔进行分组。
[0022]可选地,将所述消息组通过所述消息传输通道发送给所述消息消费者的步骤包括:对所述消息组进行压缩,并创建压缩消息对象;将所述压缩消息对象通过所述消息传输通道发送给所述消息消费者;以及,消息消费者接收所述消息组的步骤包括:消息消费者对接收的所述消息压缩对象进行解压缩,得到所述消息组。
[0023]可选地,按照消息生产的先后顺序依次消费所述读取的消息的步骤之前,还包括:所述消息消费者对所述读取的消息进行格式校验,并删除其中不完整的消息。
[0024]根据本发明的另一方面,提供了一种消息分发的装置。
[0025]—种消息分发的装置,包括:消息传输模块,用于消息生产者与消息消费者根据消息分发服务地址建立消息传输通道;消息发送模块,用于所述消息生产者将生产的消息按照预定的时间间隔进行分组,并按照各消息组的创建顺序将所述消息组通过所述消息传输通道发送给所述消息消费者;消息接收模块,用于所述消息消费者接收所述消息组并读取所述消息组中的消息,并按照消息生产的先后顺序依次消费所述读取的消息。
[0026]可选地,所述消息传输模块还用于:接收所述消息生产者发送来的所述分发服务地址;以及所述消息消费者从所述消息传输模块查找所述分发服务地址,并根据所述分发服务地址与所述消息生产者建立消息传输通道。
[0027]可选地,所述消息发送模块还用于:根据消息生产的当前时间和所述预定的时间间隔计算时间标识;根据所述预定的时间间隔内消息生产的先后顺序对所述消息进行排序,并给出对应的序列号;对所述生产的消息创建新的消息对象,所述新的消息对象包括所述时间标识、所述序列号和所述消息的内容;对所述新的消息对象按照预定的时间间隔进行分组。
[0028]可选地,所述消息发送模块还用于:对所述消息组进行压缩,并创建压缩消息对象;将所述压缩消息对象通过所述消息传输通道发送给所述消息消费者;以及,所述消息接收模块还用于:对接收的所述消息压缩对象进行解压缩,得到所述消息组。
[0029]可选地,所述消息接收模块还用于:对所述读取的消息进行格式校验,并删除其中不完整的消息。
[0030]根据本发明的技术方案,消息生产者与消息消费者根据消息分发服务地址建立消息传输通道,消息生产者端将生产的消息进行分组、压缩,并按照各消息组的创建顺序通过消息传输通道将消息发送给消息消费者端,消息消费者端接收消息组,并进行消息组解压缩、消息组拆分以及消息重新排序等步骤,将消息组中的消息恢复为消息发送前的逻辑顺序,另外,还可对消息进行格式校验,丢弃不完整的消息,将有序且完整的消息供消息消费者消费。根据本发明的技术方案,功能分层的消息传输体系结构保证消息传输中各层的逻辑清晰且功能单一,从而维护方便容易,层间松耦合,可独立优化,并且本发明能够优先保障传输性能,在有限的网络带宽约束下适当权衡可靠性和时效性,保障最大信息吞吐量,提供海量信息下最大限度的传输效率,满足高负荷场景下的消息分发需求以及消息吞吐量需求。
【附图说明】
[0031]附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
[0032]图1是现有技术的高可靠的消息分发系统的构架示意图;
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1