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

文档序号:9910861阅读:来源:国知局
r>[0033]图2是现有技术的低延时的消息分发系统的构架示意图;
[0034]图3是根据本发明实施例的消息分发的方法的主要步骤示意图;
[0035]图4是根据本发明实施例的消息分发的装置的主要模块示意图;
[0036]图5是根据本发明实施例的消息分发系统构架示意图;
[0037]图6是根据本发明实施例的消息分发系统中消息对象按照时间分组的示意图。
【具体实施方式】
[0038]以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识至IJ,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0039]图3是根据本发明实施例的消息分发的方法的主要步骤示意图。
[0040]如图3所示,本实施例的消息分发的方法主要包括如下的步骤Sll至步骤S13。
[0041]步骤Sll:消息生产者与消息消费者根据消息分发服务地址建立消息传输通道。
[0042]根据本发明的实施例,上述步骤Sll具体可以包括:
[0043]消息生产者将分发服务地址发送到消息传输模块;
[0044]消息消费者从消息传输模块查找到分发服务地址,并根据分发服务地址与消息生产者建立消息传输通道。
[0045]步骤S12:消息生产者将生产的消息按照预定的时间间隔进行分组,并按照各消息组的创建顺序将消息组通过消息传输通道发送给消息消费者。
[0046]根据本发明的实施例,上述步骤S12中,消息生产者将生产的消息按照预定的时间间隔进行分组的步骤,具体可以包括:
[0047]根据消息生产的当前时间和预定的时间间隔计算时间标识;
[0048]根据预定的时间间隔内消息生产的先后顺序对消息进行排序,并给出对应的序列号;
[0049]对生产的消息创建新的消息对象,新的消息对象包括时间标识、序列号和消息的内容;
[0050]对新的消息对象按照预定的时间间隔进行分组。
[0051]根据本发明的实施例,上述步骤S12中,将消息组通过消息传输通道发送给消息消费者的步骤,具体可以包括:
[0052]对消息组进行压缩,并创建压缩消息对象;
[0053]将压缩消息对象通过消息传输通道发送给消息消费者。
[0054]步骤S13:消息消费者接收消息组并读取消息组中的消息,并按照消息生产的先后顺序依次消费读取的消息。
[0055]根据本发明的实施例,上述步骤S13中,消息消费者接收所述消息组的步骤,还可以包括:
[0056]消息消费者对接收的消息压缩对象进行解压缩,得到消息组。
[0057]根据本发明的实施例,上述步骤S13中,按照消息生产的先后顺序依次消费读取的消息的步骤之前,还可以包括:
[0058]消息消费者对读取的消息进行格式校验,并删除其中不完整的消息。
[0059]图4是根据本发明实施例的消息分发的装置的主要模块示意图。
[0060]如图4所示,本发明实施例的消息分发的装置40主要包括:消息传输模块41、消息发送模块42和消息接收模块43。
[0061]消息传输模块41用于消息生产者与消息消费者根据消息分发服务地址建立消息传输通道;消息发送模块42用于消息生产者将生产的消息按照预定的时间间隔进行分组,并按照各消息组的创建顺序将消息组通过消息传输通道发送给消息消费者;消息接收模块43用于消息消费者接收消息组并读取消息组中的消息,并按照消息生产的先后顺序依次消费读取的消息。
[0062]根据本发明的实施例,消息传输模块41还可以用于接收消息生产者发送来的分发服务地址;以及消息消费者从消息传输模块查找分发服务地址,并根据分发服务地址与消息生产者建立消息传输通道。
[0063]消息发送模块42还可以用于根据消息生产的当前时间和预定的时间间隔计算时间标识;根据预定的时间间隔内消息生产的先后顺序对消息进行排序,并给出对应的序列号;对生产的消息创建新的消息对象,新的消息对象包括时间标识、序列号和消息的内容;对新的消息对象按照预定的时间间隔进行分组。
[0064]消息发送模块42还可以用于对消息组进行压缩,并创建压缩消息对象;将压缩消息对象通过消息传输通道发送给消息消费者。
[0065]消息接收模块43还可以用于对接收的消息压缩对象进行解压缩,得到消息组。
[0066]消息接收模块43还可以用于对读取的消息进行格式校验,并删除其中不完整的消息。
[0067]图5是根据本发明实施例的消息分发系统构架示意图。
[0068]如图5所示,本发明实施例的消息分发系统主要包括:消息生产者50、消息分发装置51、消息消费者52,其中:消息生产者50为用于生产消息的装置;消息消费者52为用于消费消息的装置;消息分发装置51主要包括位于消息生产者端的消息发送模块54、位于消息消费者端的消息接收模块55,以及位于消息生产者和消息消费者之间的消息传输模块53,消息分发装置51用于将消息生产者生产的消息分发到消息消费者以便消费。
[0069]具体地,消息分发装置中,消息发送模块主要用于将消息生产者生产的消息进行发送,根据功能实现的需要,其主要包括消息分发器、时间分组组件、消息压缩组件、消息传输组件等几部分。
[0070]其中,消息分发器用于接收消息发送模块发送来的消息Msg,并根据该消息生产的当前时间和预定的时间间隔计算时间标识Ti(i为O至N的任意整数),并根据该预定的时间间隔内消息生产的先后顺序对消息进行排序,并给出对应的序列号,其中,预定的时间间隔可根据消息传输所需要的吞吐量的大小来设置,例如,可以设置该时间间隔为I秒、100毫秒或其他数值。如果时间间隔设置为I秒,且消息生产的当前时间为2015年10月10日上午8点36分53秒,共接收了两条消息MsgA和MsgB,那么该MsgA和MsgB的时间标识(例如记为TO)为“20151010083653”,其中,MsgA的序列号为I,MsgB的序列号为2。消息分发器根据上述时间标识和消息的序列号对接收的消息创建新的消息对象,该消息对象的形式例如为:Msg_W(TO,SEQO,Msg ),其中,TO为时间标识,SEQO为消息的序列号,Msg指示消息的内容。
[0071]时间分组组件用于将消息分发器创建的消息对象Msg_W按照时间标识进行分组,形成消息组(MsgGroup),并将该消息组存入缓冲区。图6示出了本发明实施例的消息分发系统中消息对象1叩_1按照时间分组的示意图,其中,将时间标识TO?TN作为各个消息组的时间分组名。
[0072]消息压缩组件用于从缓冲区中取出消息组(MsgGroup),并采用压缩算法对消息组进行压缩,然后创建压缩消息对象MsgPkg。其中,压缩算法采用通用的无损压缩算法即可,例如采用snappy,lz77,RLERLE等支持完整压缩或解压缩的算法,该创建的压缩消息对象为二进制串(BinArray)的形式,压缩消息对象MsgPkg的格式为MsgPkg(TO ,BinArray),T0即时间分组名。
[0073]消息传输组件用于执行实际的消息发送,其负责将二进制串形式的压缩消息对象MsgPkg按照各消息组的创建顺序,通过消息传输通道传输给位于消息消费者端的消息接收丰旲块。
[0074]如上所述,消息发送模块通过对消息生产者生产的消息进行时间分组、压缩等处理,可以大量减少传输的次数,降低了网络资源损耗;同时,还减少了传输的字节数,用较少的时效损失,即可换取成倍的分发效率,从而提高了传输效率。
[0075]消息分发装置中,消息接收模块主要用于接收消息发送模块发来的消息并供消息消费者进行消费,其主要包括消息接收组件、消息解压缩组件、消息拆分组件和消息接收器。
[0076]其中,消息接收组件用于执行实际的消息接收,其负责接收消息发送模块发来的二进制形式的压缩消息对象MsgPkg。
[0077]消息解压缩组件用于将二进制形式的压缩消息对象MsgPkg解压缩,还原为消息组(MsgGroup)的形式。
[0078]消息拆分组件用于将消息组形式的消息拆分为消息分组之前各条消息的形式,主要通过从消息组中识别消息对象Msg_W列表,根据时间分组名查找出消息组,并根据消息组中每条消息的序列号对消息组中的各条消息重新排序,以保证消息接收模块所接收的消息与消息发送模块所发送的消息Msg的正文和逻辑顺序一致。
[0079]消息接收器用于对重新排序后的消息进行格式校验,主要是校验消息格式的完整性,校验算法例如采用MD5等算法,通过签名的方式确保消息完整。完成消息
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1