分布式消息队列系统的数据处理方法和装置制造方法

文档序号:7821849阅读:122来源:国知局
分布式消息队列系统的数据处理方法和装置制造方法
【专利摘要】本发明公开了一种分布式消息队列系统的数据处理方法和装置。其中,该数据处理方法包括:获取生产者生成的待处理消息的特征;按照特征将具有顺序关系的待处理消息划分在一个数据分片下;将数据分片发送给代理者;以及指示与代理者对应的消费者对数据分片中的待处理消息进行数据处理。通过本发明,解决了现有技术中分布式消息队列在处理消息时效率比较低的问题,达到了提高消息队列在处理消息时的效率的效果。
【专利说明】分布式消息队列系统的数据处理方法和装置

【技术领域】
[0001]本发明涉及信息处理领域,具体而言,涉及一种分布式消息队列系统的数据处理方法和装置。

【背景技术】
[0002]分布式消息队列系统中生产者产生消息通过负载均衡和路由的方式将消息分布到多个代理节点。其中,负载均衡是生产者将消息分布到代理节点时候,考虑单个节点的压力等原因会采取“随机”、“轮询”和“哈希”等策略将消息放到相应的代理节点中。路由是代理节点会根据本节点中相应的消息与已注册的需要消费这种消息的消费者的匹配情况,选择合适的路径将消息传送到目标消费者。
[0003]由于在分布式环境中,在生产者环节中产生的有序的消息经过中间的“负载均衡”和“路由”环节以及在末端的多个消费者独立消费消息,要保证消息被顺序处理是非常困难的。这是因为,在分布式条件下为了保证系统的容错性(防止由于某单个节点失败而引发系统无法工作)以及高吞吐量而增加的“负载均衡”和“路由”环节以及终端的多“消费者”独立工作的机制打破了严格顺序序列性。分布式与顺序序列性本身就是一个矛盾。因此,所有的消息只能分布到一个代理节点,同时只能有一个消费者消费消息,这就导致分布式消息队列系统的容错性和高吞吐量退化为单一的消息队列的处理方式,无法在保证高吞吐量的同时保证消息的多线程传输,使得分布式消息队列的处理消息的效率比较低。
[0004]针对现有技术中分布式消息队列在处理消息时效率比较低的问题,目前尚未提出有效的解决方案。


【发明内容】

[0005]本发明的主要目的在于提供一种分布式消息队列系统的数据处理方法和装置,以解决现有技术中分布式消息队列在处理消息时效率比较低的问题。
[0006]为了实现上述目的,根据本发明实施例的一个方面,提供了一种分布式消息队列系统的数据处理方法。根据本发明的消息队列系统的数据处理方法包括:获取所述生产者生成的待处理消息的特征;按照所述特征将具有顺序关系的所述待处理消息划分在一个数据分片下;将所述数据分片发送给所述代理者;以及指示与所述代理者对应的消费者对所述数据分片中的所述待处理消息进行数据处理。
[0007]为了实现上述目的,根据本发明实施例的另一方面,提供了一种分布式消息队列系统的数据处理装置。根据本发明的消息队列系统的数据处理装置包括:获取单元,用于获取生产者生成的待处理消息的特征;划分单元,用于按照所述特征将具有顺序关系的所述待处理消息划分在一个数据分片下;发送单元,用于将所述数据分片发送给代理者;以及处理单元,用于指示与所述代理者对应的消费者对所述数据分片中的所述待处理消息进行数据处理。
[0008]根据发明实施例,通过获取所述生产者生成的待处理消息的特征;按照所述特征将具有顺序关系的所述待处理消息划分在一个数据分片下;将所述数据分片发送给所述代理者;以及指示与所述代理者对应的消费者对所述数据分片中的所述待处理消息进行数据处理,将具有顺序关系的消息分在一个数据分片下,使得一个数据分片中的消息具有顺序,而一个数据分片对应一个代理者和一个消费者,使得数据分片中的数据被顺序处理,当消息队列系统拥有多个代理者时,即实现了多个代理者的分布式处理,又实现了每个代理者能够顺序处理消息,从而解决了现有技术中分布式消息队列在处理消息时效率比较低的问题,达到了提高消息队列在处理消息时的效率的效果。

【专利附图】

【附图说明】
[0009]构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0010]图1是根据本发明实施例的分布式消息队列系统的示意图;
[0011]图2是根据本发明实施例的分布式消息队列系统的数据处理方法的流程图;以及
[0012]图3是根据本发明实施例的分布式消息队列系统的数据处理装置的示意图。

【具体实施方式】
[0013]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0014]为了使本【技术领域】的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0015]需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0016]本发明实施例提供了一种分布式消息队列系统。如图1所示,该分布式消息队列系统包括用于生产消息的生产者、用于转发消息的代理者和用于处理消息的消费者。本实施例中的一个代理者对应一个消费者,一个代理者可以包括多个数据分片,一个数据分片只能被分配在一个代理者中,并且被一个消费者处理。
[0017]本发明实施例提供了一种分布式消息队列系统的数据处理方法。
[0018]图2是根据本发明实施例的分布式消息队列系统的数据处理方法的流程图。如图2所示,该分布式消息队列系统的数据处理方法包括步骤如下:
[0019]步骤S202,获取生产者生成的待处理消息的特征。
[0020]步骤S204,按照特征将具有顺序关系的待处理消息划分在一个数据分片下。
[0021]步骤S206,将数据分片发送给代理者。
[0022]步骤S208,指示与代理者对应的消费者对数据分片中的待处理消息进行数据处理。
[0023]生产者生产待处理消息,每个消息都具有其自己的特征,能够表征具有顺序关系的消息。按照消息的这些特征将具有顺序关系的待处理消息划分在一个数据分片下,使得具有顺序关系的待处理消息处于一个数据分片中。例如,在跟踪用户点击行为的场景中,待处理消息数据属于多个用户,在保证待处理数据的顺序处理时,只要保证属于同一个用户的消息能够被顺序处理即可,而不同用户之间的消息是否能够被顺序处理并不影响一个用户的消息处理的准确性,因此,保证每个用户内的待处理消息能够被顺序处理,就能保证整个系统中的数据是被有序处理的。例如,在跟踪用户点击行为的场景中,整个消息队列系统需要处理的消息包含成千上万用户的点击行为数据,总数据量超过千万级,如果保证这些消息完全有序,则上千万的消息就只能被顺序处理,导致消息队列系统非常低效,为了提高效率只要保证同一个用户的点击行为数据之间的顺序性即可。
[0024]在具有顺序关系的待处理消息被划分在一个数据分片下时,将该数据分片发送个一个代理者,与该代理者对应的消费者对该数据分片中的待处理消息进行数据处理。在进行数据分片时,可以采用分片函数对消息进行分片,例如采用哈希函数对消息进行分片。
[0025]通过上述实施例,将具有顺序关系的消息分在一个数据分片下,使得一个数据分片中的数据为有序的,并且,由一个代理者和消费者对该数据分片下的数据进行处理,使得该数据分片中的数据能够被有序处理,另外,当分布式消息队列系统中包含多个代理者时,每个代理者都包括上述数据分片,那么就实现了在分布式消息队列系统中既能利用多个代理者对消息进行处理,还能保证每个代理者所处理的消息是有序的,从而解决了现有技术中分布式消息队列在处理消息时效率比较低的问题,达到了提高消息队列在处理消息时的效率的效果。
[0026]优选地,为了避免数据热点而造成的数据处理效率的降低,在为代理者分配数据分片时保证多个代理者所拥有的数据量大致均衡,即将数据分片发送给代理者包括:获取第一代理者的数据量和第二代理者的数据量。判断第一代理者的数据量是否大于第二代理者的数据量。如果第一代理者的数据量大于第二代理者的数据量,则将数据分片发送给第二代理者。如果第一代理者的数据量小于第二代理者的数据量,则将数据分片发送给第一代理者。
[0027]如图1所示,当有新的数据分片要分配给代理I和代理2时,判断代理I和代理2谁的数据量比较大,如果代理I所拥有的数据量比较大,则将新的数据分片分配给代理2,同样的,如果代理2所拥有的数据量比较大,则将新的数据分片分配给代理I。分配给代理I的消息由消费者I处理,分配给代理2的消息由消费者2处理,也就是说,在向代理者发送数据分片时,考虑多个代理者的数据量,在分配数据分片时就保证多个代理者的数据量的均衡,从而避免了某一个代理者所拥有的数据量过多,使得该代理者所对应的消费者处理大量数据而导致的数据处理的效率较低的问题,进而提高了消息队列系统的数据处理的效率。
[0028]一个代理者可以处理一个或者多个数据分片,每个数据分片中的数据有序,当待处理消息较少时,可以将多个数据分片分配到一个代理中,利用一个代理和该代理对应的消费者对多个分片中的数据进行处理,在一个代理足以处理待处理消息时,就不必利用多个代理进行数据处理,能够节约消息队列系统的资源。
[0029]优选地,在划分数据分片时,具有顺序关系的一类消息分在一个数据分片中,多个类别的消息也可以分在一个数据分片中,即按照特征将具有顺序关系的待处理消息划分在一个数据分片下包括:获取具有第一特征的第一待处理消息和具有第二特征的第二待处理消息。判断具有第一待处理消息的第一数据分片的数据量是否小于预设数据量。如果第一数据分片的数据量小于预设数据量,则将第二待处理消息划分在第一数据分片中。如果第一数据分片的数据量大于等于预设数据量,则将第二待处理消息划分在第二数据分片中。
[0030]按照特征将一类消息划分在一个数据分片中,例如,将用户的标识符作为消息特征,将具有相同标识符的消息划分在一个数据分片中,即将同一个用户的消息划分在一个数据分片中,属于同一用户的消息具有上下文的关系,即一个数据分片中的同一用户的消息是有序的。一个数据分片中,还可以有多个用户的消息,每个用户的消息都是有序,多个用户的消息在同一数据分片中被处理。一个数据分片中具有多个用户的消息还是具有一个用户的消息,可以根据分片函数来决定,分片函数的粒度越大,则一个数据分片中就越可能包括多个业务的消息;分片函数的粒度越小,则一个数据分片中包括多个业务的消息的可能就越小。
[0031]具体地,当一个代理者具有多个数据分片时,可以在多个数据分片之间轮询,处理完一个数据分片中的数据后再处理另外一个数据分片中的数据,指示与代理者对应的消费者对数据分片中的待处理消息进行数据处理包括:获取代理者的多个数据分片。轮询多个数据分片,以对多个数据分片中的数据进行处理。需要说明的是,每个数据分片中的数据由一个消费者进行处理,并且,数据分片中的数据按照顺序被消费者进行处理,以保证处理后的消息输出有序。
[0032]具体地,在分片函数进行数据分片时,将具有相同特征的一类消息按照顺序划分在一个数据分片下,按照特征将具有顺序关系的待处理消息划分在一个数据分片下包括:提取待处理消息中具有相同特征的消息。从提取到的消息中查找顺序标识。按照顺序标识将提取到的消息中的具有顺序关系的消息划分在一个数据分片下。
[0033]例如,待处理消息包括B2、Al、A2、B1、A5、A3、B6、B3、B4、B5、A4,其中,为带有相同特征A的一类消息,B2、B1、B6、B3、B4、B5为带有相同特征B的一类消息,1、2……η表示待处理消息的顺序,根据特征A和顺序标识将待处理消息Al、Α2、Α5、A3、Α4划分在一个数据分片下,在该数据分片中按照消息的先后排列为Al、Α2、A3、Α4、Α5,根据特征B和顺序标识将待处理消息Β2、Β1、Β6、Β3、Β4、Β5划分在另外一个数据分片下,在该数据分片中按照消息的先后排列为Β1、Β2、Β3、Β4、Β5、Β6。在一个数据分片下,具有相同特征的消息按照先后顺序排列,这就保证了数据分片中的消息的处理是有序的。
[0034]由于每个数据分片中的消息是有序的,在消费者对一个数据分片中的数据进行处理时,按照数据分片中的数据顺序进行处理,从而保证了数据分片内的数据是有序处理的,当具有多个数据分片时,每个数据分片中的数据都是有序处理的,多个数据分片还可以分布在多个代理者同时进行处理,也就实现了多个代理者有序的进行消息处理,不仅保证了分布式消息队列系统的高吞吐量,还保证了消息的有序处理,从而解决了现有技术分布式消息队列在处理消息时效率比较低的问题,达到了提高消息队列在处理消息时的效率的效果O
[0035]本发明实施例还提供了一种分布式消息队列的数据处理装置。该装置可以通过计算机实现其功能。需要说明的是,本发明实施例的分布式消息队列的数据处理装置可以用于执行本发明实施例所提供的分布式消息队列的数据处理方法,本发明实施例的分布式消息队列的数据处理方法也可以通过本发明实施例所提供的分布式消息队列的数据处理装置来执行。
[0036]图3是根据本发明实施例的分布式消息队列的数据处理装置的示意图。如图3所示,分布式消息队列的数据处理装置包括:获取单元10、划分单元30、发送单元50和处理单元70。
[0037]获取单元10用于获取生产者生成的待处理消息的特征;
[0038]划分单元30用于按照特征将具有顺序关系的待处理消息划分在一个数据分片下;
[0039]发送单元50用于将数据分片发送给代理者;以及
[0040]处理单元70用于指示与代理者对应的消费者对数据分片中的待处理消息进行数据处理。
[0041]生产者生产待处理消息,每个消息都具有其自己的特征,能够表征具有顺序关系的消息。按照消息的这些特征将具有顺序关系的待处理消息划分在一个数据分片下,使得具有顺序关系的待处理消息处于一个数据分片中。例如,在跟踪用户点击行为的场景中,待处理消息数据属于多个用户,在保证待处理数据的顺序处理时,只要保证属于同一个用户的消息能够被顺序处理即可,而不同用户之间的消息是否能够被顺序处理并不影响一个用户的消息处理的准确性,因此,保证每个用户内的待处理消息能够被顺序处理,就能保证整个系统中的数据是被有序处理的。例如,在跟踪用户点击行为的场景中,整个消息队列系统需要处理的消息包含成千上万用户的点击行为数据,总数据量超过千万级,如果保证这些消息完全有序,则上千万的消息就只能被顺序处理,导致消息队列系统非常低效,为了提高效率只要保证同一个用户的点击行为数据之间的顺序性即可。
[0042]在具有顺序关系的待处理消息被划分在一个数据分片下时,将该数据分片发送个一个代理者,与该代理者对应的消费者对该数据分片中的待处理消息进行数据处理。在进行数据分片时,可以采用分片函数对消息进行分片,例如采用哈希函数对消息进行分片。
[0043]通过上述实施例,将具有顺序关系的消息分在一个数据分片下,使得一个数据分片中的数据为有序的,并且,由一个代理者和消费者对该数据分片下的数据进行处理,使得该数据分片中的数据能够被有序处理,另外,当分布式消息队列系统中包含多个代理者时,每个代理者都包括上述数据分片,那么就实现了在分布式消息队列系统中既能利用多个代理者对消息进行处理,还能保证每个代理者所处理的消息是有序的,从而解决了现有技术中分布式消息队列在处理消息时效率比较低的问题,达到了提高消息队列在处理消息时的效率的效果。
[0044]优选地,为了避免数据热点而造成的数据处理效率的降低,在为代理者分配数据分片时保证多个代理者所拥有的数据量大致均衡,即发送单元包括:第一获取模块,用于获取第一代理者的数据量和第二代理者的数据量;第一判断模块,用于判断第一代理者的数据量是否大于第二代理者的数据量;发送模块,用于在第一代理者的数据量大于第二代理者的数据量时,将数据分片发送给第二代理者;在第一代理者的数据量小于第二代理者的数据量时,将数据分片发送给第一代理者。
[0045]如图1所示,当有新的数据分片要分配给代理I和代理2时,判断代理I和代理2谁的数据量比较大,如果代理I所拥有的数据量比较大,则将新的数据分片分配给代理2,同样的,如果代理2所拥有的数据量比较大,则将新的数据分片分配给代理I ο也就是说,在向代理者发送数据分片时,考虑多个代理者的数据量,在分配数据分片时就保证多个代理者的数据量的均衡,从而避免了某一个代理者所拥有的数据量过多,使得该代理者所对应的消费者处理大量数据而导致的数据处理的效率较低的问题,进而提高了消息队列系统的数据处理的效率。
[0046]一个代理者可以处理一个或者多个数据分片,每个数据分片中的数据有序,当待处理消息较少时,可以将多个数据分片分配到一个代理中,利用一个代理和该代理对应的消费者对多个分片中的数据进行处理,在一个代理足以处理待处理消息时,就不必利用多个代理进行数据处理,能够节约消息队列系统的资源。
[0047]优选地,在划分数据分片时,具有顺序关系的一类消息分在一个数据分片中,多个类别的消息也可以分在一个数据分片中,即划分单元包括:第二获取模块,用于获取具有第一特征的第一待处理消息和具有第二特征的第二待处理消息;第一判断模块,用于判断具有第一待处理消息的第一数据分片的数据量是否小于预设数据量;第一划分模块,用于在第一数据分片的数据量小于预设数据量时,将第二待处理消息划分在第一数据分片中;在第一数据分片的数据量大于等于预设数据量时,将第二待处理消息划分在第二数据分片中。
[0048]按照特征将一类消息划分在一个数据分片中,例如,将用户的标识符作为消息特征,将具有相同标识符的消息划分在一个数据分片中,即将同一个用户的消息划分在一个数据分片中,属于同一用户的消息具有上下文的关系,即一个数据分片中的同一用户的消息是有序的。一个数据分片中,还可以有多个用户的消息,每个用户的消息都是有序,多个用户的消息在同一数据分片中被处理。一个数据分片中具有多个用户的消息还是具有一个用户的消息,可以根据分片函数来决定,分片函数的粒度越大,则一个数据分片中就越可能包括多个业务的消息;分片函数的粒度越小,则一个数据分片中包括多个业务的消息的可能就越小。
[0049]具体地,当一个代理者具有多个数据分片时,可以在多个数据分片之间轮询,处理完一个数据分片中的数据后再处理另外一个数据分片中的数据,处理单元包括:第三获取模块,用于获取代理者的多个数据分片;处理模块,用于轮询多个数据分片以对多个数据分片中的数据进行处理。需要说明的是,每个数据分片中的数据由一个消费者进行处理,并且,数据分片中的数据按照顺序被消费者进行处理,以保证处理后的消息输出有序。
[0050]具体地,在分片函数进行数据分片时,将具有相同特征的一类消息按照顺序划分在一个数据分片下,划分单元包括:提取模块,用于提取待处理消息中具有相同特征的消息;查找模块,用于从提取到的消息中查找顺序标识;第二划分模块,用于按照顺序标识将提取到的消息中的具有顺序关系的消息划分在一个数据分片下。
[0051 ] 例如,待处理消息包括B2、Al、A2、B1、A5、A3、B6、B3、B4、B5、A4,其中,为带有相同特征A的一类消息,B2、B1、B6、B3、B4、B5为带有相同特征B的一类消息,1、2……η表示待处理消息的顺序,根据特征A和顺序标识将待处理消息Al、Α2、Α5、A3、Α4划分在一个数据分片下,在该数据分片中按照消息的先后排列为Al、A2、A3、A4、A5,根据特征B和顺序标识将待处理消息B2、B1、B6、B3、B4、B5划分在另外一个数据分片下,在该数据分片中按照消息的先后排列为B1、B2、B3、B4、B5、B6。在一个数据分片下,具有相同特征的消息按照先后顺序排列,这就保证了数据分片中的消息的处理是有序的。
[0052]由于每个数据分片中的消息是有序的,在消费者对一个数据分片中的数据进行处理时,按照数据分片中的数据顺序进行处理,从而保证了数据分片内的数据是有序处理的,当具有多个数据分片时,每个数据分片中的数据都是有序处理的,多个数据分片还可以分布在多个代理者同时进行处理,也就实现了多个代理者有序的进行消息处理,不仅保证了分布式消息队列系统的高吞吐量,还保证了消息的有序处理,从而解决了现有技术分布式消息队列在处理消息时效率比较低的问题,达到了提高消息队列在处理消息时的效率的效果O
[0053]需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0054]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0055]在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0056]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0057]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0058]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、移动终端、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0059]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种分布式消息队列系统的数据处理方法,其特征在于,所述分布式消息队列系统包括用于生产消息的生产者、用于转发所述消息的代理者和用于处理所述消息的消费者,其中,该数据处理方法包括: 获取所述生产者生成的待处理消息的特征; 按照所述特征将具有顺序关系的所述待处理消息划分在一个数据分片下; 将所述数据分片发送给所述代理者;以及 指示与所述代理者对应的消费者对所述数据分片中的所述待处理消息进行数据处理。
2.根据权利要求1所述的数据处理方法,其特征在于,将所述数据分片发送给所述代理者包括: 获取第一代理者的数据量和第二代理者的数据量; 判断所述第一代理者的数据量是否大于所述第二代理者的数据量; 如果所述第一代理者的数据量大于所述第二代理者的数据量,则将所述数据分片发送给所述第二代理者; 如果所述第一代理者的数据量小于所述第二代理者的数据量,则将所述数据分片发送给所述第一代理者。
3.根据权利要求1所述的数据处理方法,其特征在于,按照所述特征将具有顺序关系的所述待处理消息划分在一个数据分片下包括: 获取具有第一特征的第一待处理消息和具有第二特征的第二待处理消息; 判断具有所述第一待处理消息的第一数据分片的数据量是否小于预设数据量; 如果所述第一数据分片的数据量小于所述预设数据量,则将所述第二待处理消息划分在所述第一数据分片中; 如果所述第一数据分片的数据量大于等于所述预设数据量,则将所述第二待处理消息划分在第二数据分片中。
4.根据权利要求1所述的数据处理方法,其特征在于,按照所述特征将具有顺序关系的所述待处理消息划分在一个数据分片下包括: 提取所述待处理消息中具有相同特征的消息; 从提取到的消息中查找顺序标识; 按照所述顺序标识将所述提取到的消息中的具有所述顺序关系的消息划分在一个所述数据分片下。
5.根据权利要求1至4中任一项所述的数据处理方法,其特征在于,指示与所述代理者对应的消费者对所述数据分片中的所述待处理消息进行数据处理包括: 获取所述代理者的多个数据分片; 轮询所述多个数据分片,以对所述多个数据分片中的数据进行处理。
6.一种分布式消息队列系统的数据处理装置,其特征在于,包括: 获取单元,用于获取生产者生成的待处理消息的特征; 划分单元,用于按照所述特征将具有顺序关系的所述待处理消息划分在一个数据分片下; 发送单元,用于将所述数据分片发送给代理者;以及 处理单元,用于指示与所述代理者对应的消费者对所述数据分片中的所述待处理消息进行数据处理。
7.根据权利要求6所述的数据处理装置,其特征在于,所述发送单元包括: 第一获取模块,用于获取第一代理者的数据量和第二代理者的数据量; 第一判断模块,用于判断所述第一代理者的数据量是否大于所述第二代理者的数据量; 发送模块,用于在所述第一代理者的数据量大于所述第二代理者的数据量时,将所述数据分片发送给所述第二代理者;在所述第一代理者的数据量小于所述第二代理者的数据量时,将所述数据分片发送给所述第一代理者。
8.根据权利要求6所述的数据处理装置,其特征在于,所述划分单元包括: 第二获取模块,用于获取具有第一特征的第一待处理消息和具有第二特征的第二待处理消息; 第一判断模块,用于判断具有所述第一待处理消息的第一数据分片的数据量是否小于预设数据量; 第一划分模块,用于在所述第一数据分片的数据量小于所述预设数据量时,将所述第二待处理消息划分在所述第一数据分片中;在所述第一数据分片的数据量大于等于所述预设数据量时,将所述第二待处理消息划分在第二数据分片中。
9.根据权利要求6所述的数据处理装置,其特征在于,所述划分单元包括: 提取模块,用于提取所述待处理消息中具有相同特征的消息; 查找模块,用于从提取到的消息中查找顺序标识; 第二划分模块,用于按照所述顺序标识将所述提取到的消息中的具有所述顺序关系的消息划分在一个所述数据分片下。
10.根据权利要求6至9中任一项所述的数据处理装置,其特征在于,所述处理单元包括: 第三获取模块,用于获取所述代理者的多个数据分片; 处理模块,用于轮询所述多个数据分片以对所述多个数据分片中的数据进行处理。
【文档编号】H04L29/08GK104468330SQ201410728047
【公开日】2015年3月25日 申请日期:2014年12月3日 优先权日:2014年12月3日
【发明者】杨青峰 申请人:北京国双科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1