分布式消息队列的逻辑控制方法和装置、数据处理设备的制造方法

文档序号:10594004阅读:157来源:国知局
分布式消息队列的逻辑控制方法和装置、数据处理设备的制造方法
【专利摘要】本公开是关于一种分布式消息队列的逻辑控制方法和装置、数据处理设备,其中方法包括:存储消息队列的新队列逻辑,并将所述新队列逻辑的存储标识发送至所述消息队列,所述存储标识用于查找存储的所述新队列逻辑;在接收到所述消息队列发送的逻辑获取请求时,所述逻辑获取请求中包括所述存储标识,根据所述存储标识获取所述新队列逻辑,并将所述新队列逻辑发送至所述消息队列进行加载。本公开提高了消息队列的逻辑调整效率。
【专利说明】
分布式消息队列的逻辑控制方法和装置、数据处理设备
技术领域
[0001]本公开涉及网络技术,尤其涉及一种分布式消息队列的逻辑控制方法和装置、数据处理设备。
【背景技术】
[0002]分布式消息队列是一种在消息的生产者和消费者之间解耦的较好方式,比如,在做大数据分析时,数据源(即生产者)产生的待分析数据较多,可以将这些数据放入消息队列,消息的分析者(即消费者)可以从该消息队列中取出数据进行处理,消息队列可以提供一种生产者和消费者之间消息传输的缓存,使得消费者不必要立刻处理到来的消息。可以将消息队列设置成分布式,即部署在多台服务器上的多个消息队列,可以称为一个分布式消息队列系统。相关技术中,对于其中一个队列中的数据,有时涉及到逻辑的调整,比如优先级的设置逻辑,使得队列中数据的输出顺序发生改变。当逻辑调整时,现有技术通常需要改动该消息队列的设置后,再将该消息队列使用,并且对于多台机器上部署的多个队列,也是逐步修改各个队列,这种逻辑调整的方式比较缓慢,效率较低,影响了消息队列的实时使用。

【发明内容】

[0003]为克服相关技术中存在的问题,本公开提供一种分布式消息队列的逻辑控制方法和装置、数据处理设备,以提高消息队列的逻辑调整效率。
[0004]根据本公开实施例的第一方面,提供一种分布式消息队列的逻辑控制方法,所述方法包括:
[0005]存储消息队列的新队列逻辑,并将所述新队列逻辑的存储标识发送至所述消息队列,所述存储标识用于查找存储的所述新队列逻辑;
[0006]在接收到所述消息队列发送的逻辑获取请求时,所述逻辑获取请求中包括所述存储标识,根据所述存储标识获取所述新队列逻辑,并将所述新队列逻辑发送至所述消息队列进行加载。
[0007]在一个例子中,所述存储消息队列的新队列逻辑,并将所述新队列逻辑的存储标识发送至所述消息队列,包括:将所述新队列逻辑存储在key-value数据库;将所述新队列逻辑在所述数据库中对应的key,作为存储标识发送至消息队列。
[0008]在一个例子中,所述将所述新队列逻辑的存储标识发送至所述消息队列,包括:通过调用所述消息队列的监听接口,将所述存储标识传输至消息队列。
[0009]在一个例子中,所述方法还包括:接收所述消息队列返回的加载完成的通知。
[0010]根据本公开实施例的第二方面,提供一种分布式消息队列的逻辑控制方法,所述方法包括:
[0011 ]接收逻辑控制装置发送的新队列逻辑的存储标识;
[0012]向所述逻辑控制装置发送逻辑获取请求,所述逻辑获取请求中包括所述存储标识,所述存储标识用于逻辑控制装置查找存储的所述新队列逻辑;
[0013]接收所述逻辑控制装置返回的与所述存储标识对应的新队列逻辑,并加载所述新队列逻辑。
[0014]根据本公开实施例的第三方面,提供一种分布式消息队列的逻辑控制装置,所述装置包括:
[0015]存储标识发送模块,用于存储消息队列的新队列逻辑,并将所述新队列逻辑的存储标识发送至所述消息队列,所述存储标识用于查找存储的所述新队列逻辑;
[0016]队列逻辑发送模块,用于在接收到所述消息队列发送的逻辑获取请求时,所述逻辑获取请求中包括所述存储标识,根据所述存储标识获取所述新队列逻辑,并将所述新队列逻辑发送至所述消息队列进行加载。
[0017]在一个例子中,存储标识发送模块,包括:逻辑存储子模块,用于将所述新队列逻辑存储在key-value数据库;标识发送子模块,用于将所述新队列逻辑在数据库中对应的key,作为存储标识发送至消息队列。
[0018]在一个例子中,所述标识发送子模块,用于调用所述消息队列的监听接口,将所述存储标识传输至消息队列。
[0019]根据本公开实施例的第四方面,提供一种分布式消息队列的逻辑控制装置,所述装置包括:
[0020]存储标识接收模块,用于接收逻辑控制装置发送的新队列逻辑的存储标识,所述存储标识用于逻辑控制装置查找存储的新队列逻辑;
[0021]队列逻辑请求模块,用于向所述逻辑控制装置发送逻辑获取请求,所述逻辑获取请求中包括存储标识;
[0022]逻辑接收加载模块,用于接收所述逻辑控制装置返回的与所述存储标识对应的新队列逻辑,并加载所述新队列逻辑。
[0023]根据本公开实施例的第五方面,提供一种分布式消息队列系统,所述系统包括:逻辑控制装置、以及多个分布式消息队列;
[0024]所述逻辑控制装置,用于存储消息队列的新队列逻辑,并将所述新队列逻辑的存储标识发送至所述消息队列,所述存储标识用于查找存储的所述新队列逻辑;
[0025]所述分布式消息队列,用于根据所述存储标识向所述逻辑控制装置获取对应的所述新队列逻辑,并加载所述新队列逻辑。
[0026]根据本公开实施例的第六方面,提供一种数据处理设备,包括:
[0027]处理器;
[0028]用于存储处理器可执行指令的存储器;
[0029]其中,所述处理器被配置为:存储消息队列的新队列逻辑,并将所述新队列逻辑的存储标识发送至所述消息队列,所述存储标识用于查找存储的所述新队列逻辑;在接收到所述消息队列发送的逻辑获取请求时,所述逻辑获取请求中包括所述存储标识,根据所述存储标识获取所述新队列逻辑,并将所述新队列逻辑发送至所述消息队列进行加载。
[0030]本公开的实施例提供的技术方案可以包括以下有益效果:通过由逻辑控制装置将新队列逻辑的存储标识发送至消息队列,并由消息队列根据标识获取逻辑进行加载,可以快速方便的向各个消息队列下发逻辑,也使得消息队列能够快速加载对应的逻辑,提高了消息队列的逻辑调整效率。
[0031]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
【附图说明】
[0032]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
[0033]图1是根据一示例性实施例示出的一种分布式消息队列的应用系统;
[0034]图2是根据一示例性实施例示出的一种逻辑控制方法的流程图;
[0035]图3是根据一示例性实施例示出的另一种逻辑控制方法的流程图;
[0036]图4是根据一示例性实施例示出的一种逻辑控制装置的结构示意图;
[0037]图5是根据一示例性实施例示出的另一种逻辑控制装置的结构示意图;
[0038]图6是根据一示例性实施例示出的又一种逻辑控制装置的结构示意图;
[0039]图7是根据一示例性实施例示出的一种数据处理设备的结构示意图。
【具体实施方式】
[0040]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
[0041]分布式消息队列是一种在消息的生产者和消费者之间解耦的较好方式,能够在消息的生产者和消费者之间提供一种消息传输的缓存,使得消费者不必要立刻处理到来的消息。参见图1所示,生产者产生的消息(Message)可以被送入多个消息队列,例如,消息队列(Msg-queue) 11、消息队列12、消息队列13等多个消息队列,这些队列可以部署在多台机器上,组成一个分布式的消息队列集群。其中,生产者产生的消息,比如可以是用户使用网上应用的日志,可以对这些上网日志进行统计分析来得到有用的信息,比如图1中所示的队列输出(Queue output)即将日志数据从队列中输出去分析处理。
[0042]图1中所示的消息队列集群中的各个消息队列之间可以是并列关系,即各个队列运行的队列逻辑可以是相同的,到来的消息可以进入其中任一消息队列。以其中一个队列为例,队列逻辑可以包括:在队列中包括很多的日志数据,通常这些数据在送往输出分析时遵从先进先出原则,但是为了更加灵活的适应业务分析需求,可以打破先进先出原则,对不同类型的数据设置优先级,比如,设置A类型的消息数据的优先级高于B类型的消息数据的优先级,那么A类型的消息数据可以先从队列中输出去进行分析处理。上述的对数据设置优先级的逻辑可以称为一种数据类型优先级逻辑,当然,消息队列的队列逻辑还可以包括优先级逻辑之外的其他逻辑,不再列举。在消息队列集群中的各个消息队列可以使用相同的队列逻辑。
[0043]由于业务需要,有时会涉及到队列逻辑的调整,比如,在分析用户的上网日志的例子中,每个消息队列中包括的消息数据可以有多种类型,类型A、类型B、类型C等,假设初始的队列逻辑中,数据类型的优先级顺序可以是A>B>C,即A的优先级最高,那么A类型的消息数据可以先从队列中输出送往分析处理模块;而由于业务调整,需要将B数据的优先级提前,优先级逻辑可以变更为B>A>C,使得队列中的B类型数据先输出分析。这就是消息队列的队列逻辑的调整,而如果将消息队列的运行暂停,修改消息队列的队列逻辑为调整后的逻辑,将影响消息队列的实时服务,使得逻辑调整的效率降低。基于此,本公开实施例提供了一种分布式消息队列的逻辑控制方法,该方法的使用将使得消息队列的逻辑调整提高效率。
[0044]请继续参见图1,本公开实施例提供了一种分布式消息队列的逻辑控制装置,该装置可以执行本公开实施例的逻辑控制方法,该方法可以参见图2:
[0045]在步骤201中,存储消息队列的新队列逻辑,并将新队列逻辑的存储标识发送至消息队列,所述存储标识用于查找存储的新队列逻辑。
[0046]在步骤202中,在接收到所述消息队列发送的逻辑获取请求时,所述逻辑获取请求中包括所述存储标识,根据所述存储标识获取所述新队列逻辑。
[0047]在步骤203中,将所述新队列逻辑发送至所述消息队列进行加载。
[0048]具体的,本例子以消息队列的优先级逻辑的调整为例来说明,当然在其他的例子中逻辑调整也可以是针对其他的逻辑。逻辑控制装置可以提供一个操作界面,供运营人员根据业务需要进行消息队列的数据类型优先级逻辑(后续描述可以简称为优先级逻辑)的调整,比如,将队列中的B类型数据的优先级提高,以使得该类型数据优先从队列中输出进行分析处理。逻辑控制装置可以根据运营人员的设置,生成本次调整的操作代码块,该操作代码块可以称为新队列逻辑,如果消息队列加载部署该新队列逻辑后,就可以按照该逻辑优先输出B类型数据。
[0049]在步骤201中,逻辑控制装置可以存储新队列逻辑,例如,可以将该新队列逻辑存储在非关系数据库key-value数据库中,需要说明的是,本公开实施例的方法并不限于key-value 数据库 ,也可以是其他数据库。在向数据库存储时,同时会生成一个存储标识,该存储标识是用于方便从数据库中快速查找到所述新队列逻辑的信息,比如,在key-value数据库中,可以将新队列逻辑作为value,将对应的key称为存储标识。
[0050]如图1所示,逻辑控制装置可以将key发送至消息队列,可以选择发送至消息队列中的全部或部分消息队列。在向消息队列发送时,一种示例的发送方式可以是,在消息队列增加一个监听接口,该监听接口可以用于订阅逻辑控制装置中的新队列逻辑的分发,当逻辑控制装置存在新队列逻辑时,可以调用该监听接口,通过该接口将key传输至消息队列。
[0051]这种监听接口的设置方式,可以灵活的方便消息队列订阅队列逻辑,比如,当某个消息队列想要订阅某种类型的队列逻辑(比如,优先级逻辑或其他逻辑)时,可以设置一个用于订阅该类型队列逻辑的监听接口。当逻辑控制装置侧存在该类型的新队列逻辑时,则可以调用该监听接口,将新队列逻辑传输至消息队列进行加载。
[0052]在步骤202中,消息队列接收到上述的存储标识后,可以向图1中的逻辑控制装置发送逻辑获取请求,并在该请求中携带存储标识例如key。而逻辑控制装置可以根据该逻辑获取请求中携带的key,在key-value中查找对应的value,该value即新队列逻辑。
[0053]在步骤203中,逻辑控制装置可以将步骤202中查找到的新队列逻辑,发送至消息队列,消息队列可以加载该新队列逻辑,即用新队列逻辑替换原有的队列逻辑,并进行热部署,按照新队列逻辑进行服务运行。此外,在完成新队列逻辑的加载后,消息队列还可以向逻辑控制装置返回加载完成的通知,以使得逻辑控制装置知晓新队列逻辑已经在该队列完成部署。
[0054]图3示例了消息队列在本公开实施例的逻辑控制方法中执行的流程,包括如下处理,以下简单描述,详细过程可以参见图2所示的实施例。
[0055]在步骤301中,接收逻辑控制装置发送的新队列逻辑的存储标识。
[0056]在步骤302中,向所述逻辑控制装置发送逻辑获取请求,所述逻辑获取请求中包括所述存储标识,所述存储标识用于逻辑控制装置查找存储的所述新队列逻辑。
[0057]在步骤303中,接收所述逻辑控制装置返回的与所述存储标识对应的新队列逻辑,并加载所述新队列逻辑。
[0058]本公开实施例的分布式消息队列的逻辑控制方法,在生成新队列逻辑后,可以向各个消息队列中发送key即可,由消息队列根据key请求和加载新队列逻辑,这种方式中,传递的key的信息量很小,而原来的新队列逻辑通常比较复杂,占用的资源也比较大,向消息队列传输key对于逻辑控制装置的传输压力较低,而消息队列也能够根据key实时的请求和部署新队列逻辑,降低了对消息队列运行的影响,逻辑调整的实时性较好。
[0059]此外,即使消息队列集群中要扩展队列,可以方便的实现,只要逻辑控制装置将新队列逻辑对应的存储key发给该队列,该队列就可以根据key获取数据库对应的新队列逻辑加载即可。
[0060]为了实现上述的逻辑控制方法,本公开实施例还提供了一种分布式消息队列的逻辑控制装置,该装置可以是图1中所示的逻辑控制装置,如图4所示,该装置可以包括:存储标识发送模块41和队列逻辑发送模块42。
[0061]存储标识发送模块41,用于存储消息队列的新队列逻辑,并将所述新队列逻辑的存储标识发送至所述消息队列,所述存储标识用于查找存储的所述新队列逻辑;
[0062]队列逻辑发送模块42,用于在接收到所述消息队列发送的逻辑获取请求时,所述逻辑获取请求中包括所述存储标识,根据所述存储标识获取所述新队列逻辑,并将所述新队列逻辑发送至所述消息队列进行加载。
[0063]在一个例子中,参见图5所示,该装置中的存储标识发送模块41可以包括:逻辑存储子模块411和标识发送子模块412。
[0064]逻辑存储子模块411,用于将所述新队列逻辑存储在key-value数据库;
[0065]标识发送子模块412,用于将所述新队列逻辑在数据库中对应的key,作为存储标识发送至消息队列。
[0066]在一个例子中,标识发送子模块412,用于调用所述消息队列的监听接口,将所述存储标识传输至消息队列。
[0067]本公开实施例还提供了一种分布式消息队列的逻辑控制装置,该装置可以是设置在消息队列,使得消息队列可以执行本公开实施例的逻辑控制方法。该装置的结构可以参见图6所示,该装置可以包括:存储标识接收模块61、队列逻辑请求模块62和逻辑接收加载模块63。
[0068]存储标识接收模块61,用于接收逻辑控制装置发送的新队列逻辑的存储标识,所述存储标识用于逻辑控制装置查找存储的新队列逻辑;
[0069]队列逻辑请求模块62,用于向所述逻辑控制装置发送逻辑获取请求,所述逻辑获取请求中包括存储标识;
[0070]逻辑接收加载模块63,用于接收所述逻辑控制装置返回的与所述存储标识对应的新队列逻辑,并加载所述新队列逻辑。
[0071]本公开实施例还提供了一种分布式消息队列系统,该系统可以包括:逻辑控制装置和多个消息队列,该系统的结构可以参见图1的示例,其中所述的逻辑控制装置即图1中所示的用于向各个消息队列分发key的装置。
[0072]所述逻辑控制装置,用于存储消息队列的新队列逻辑,并将新队列逻辑的存储标识发送至消息队列,存储标识用于查找存储的新队列逻辑。例如,可以是将新队列逻辑存储在key-value数据库,并将key传输至各个消息队列。
[0073]所述分布式消息队列,用于根据所述存储标识向所述逻辑控制装置获取对应的所述新队列逻辑,并加载所述新队列逻辑。例如,消息队列可以携带上述的key去请求新队列逻辑,并加载该逻辑,使得消息队列按照该新队列逻辑运行服务。
[0074]本实施例提供的分布式消息队列系统,通过采用向消息队列分发key的方式,使得对于新队列逻辑的下发非常的方便和快速,各个消息队列也能够根据key快速获取到对应的新队列逻辑并热部署,提高了逻辑的调整效率。
[0075]图7是根据一示例性实施例示出的一种数据处理设备700的框图。例如,该数据处理设备700可以被提供为一服务器。参照图7,数据处理设备700包括处理组件722,其进一步包括一个或多个处理器,以及由存储器732所代表的存储器资源,用于存储可由处理部件722的执行的指令,例如应用程序。存储器732中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件722被配置为执行指令,以执行本公开实施例的上述方法,比如,消息队列执行的逻辑控制方法或者逻辑控制装置执行的逻辑控制方法。
[0076]数据处理设备700还可以包括一个电源组件726被配置为执行数据处理设备700的电源管理,一个有线或无线网络接口 750被配置为将数据处理设备700连接到网络,和一个输入输出(I/O)接口 758。数据处理设备700可以操作基于存储在存储器732的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
[0077]此外,在本公开的示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述方法,例如该方法包括:存储消息队列的新队列逻辑,并将所述新队列逻辑的存储标识发送至所述消息队列,所述存储标识用于查找存储的所述新队列逻辑;在接收到所述消息队列发送的逻辑获取请求时,所述逻辑获取请求中包括所述存储标识,根据所述存储标识获取所述新队列逻辑,并将所述新队列逻辑发送至所述消息队列进行加载。例如,所述非临时性计算机可读存储介质可以是R0M、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
[0078]本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
[0079]应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
【主权项】
1.一种分布式消息队列的逻辑控制方法,其特征在于,所述方法包括: 存储消息队列的新队列逻辑,并将所述新队列逻辑的存储标识发送至所述消息队列,所述存储标识用于查找存储的所述新队列逻辑; 在接收到所述消息队列发送的逻辑获取请求时,所述逻辑获取请求中包括所述存储标识,根据所述存储标识获取所述新队列逻辑,并将所述新队列逻辑发送至所述消息队列进行加载。2.根据权利要求1所述的方法,其特征在于,所述存储消息队列的新队列逻辑,并将所述新队列逻辑的存储标识发送至所述消息队列,包括: 将所述新队列逻辑存储在key-value数据库; 将所述新队列逻辑在所述数据库中对应的key,作为存储标识发送至消息队列。3.根据权利要求1所述的方法,其特征在于,所述将所述新队列逻辑的存储标识发送至所述消息队列,包括: 通过调用所述消息队列的监听接口,将所述存储标识传输至消息队列。4.根据权利要求1所述的方法,其特征在于,所述方法还包括: 接收所述消息队列返回的加载完成的通知。5.一种分布式消息队列的逻辑控制方法,其特征在于,所述方法包括: 接收逻辑控制装置发送的新队列逻辑的存储标识; 向所述逻辑控制装置发送逻辑获取请求,所述逻辑获取请求中包括所述存储标识,所述存储标识用于逻辑控制装置查找存储的所述新队列逻辑; 接收所述逻辑控制装置返回的与所述存储标识对应的新队列逻辑,并加载所述新队列逻辑。6.一种分布式消息队列的逻辑控制装置,其特征在于,所述装置包括: 存储标识发送模块,用于存储消息队列的新队列逻辑,并将所述新队列逻辑的存储标识发送至所述消息队列,所述存储标识用于查找存储的所述新队列逻辑; 队列逻辑发送模块,用于在接收到所述消息队列发送的逻辑获取请求时,所述逻辑获取请求中包括所述存储标识,根据所述存储标识获取所述新队列逻辑,并将所述新队列逻辑发送至所述消息队列进行加载。7.根据权利要求6所述的装置,其特征在于,存储标识发送模块,包括: 逻辑存储子模块,用于将所述新队列逻辑存储在key-value数据库; 标识发送子模块,用于将所述新队列逻辑在数据库中对应的key,作为存储标识发送至消息队列。8.根据权利要求7所述的装置,其特征在于, 所述标识发送子模块,用于调用所述消息队列的监听接口,将所述存储标识传输至消息队列。9.一种分布式消息队列的逻辑控制装置,其特征在于,所述装置包括: 存储标识接收模块,用于接收逻辑控制装置发送的新队列逻辑的存储标识,所述存储标识用于逻辑控制装置查找存储的新队列逻辑; 队列逻辑请求模块,用于向所述逻辑控制装置发送逻辑获取请求,所述逻辑获取请求中包括存储标识; 逻辑接收加载模块,用于接收所述逻辑控制装置返回的与所述存储标识对应的新队列逻辑,并加载所述新队列逻辑。10.—种分布式消息队列系统,其特征在于,所述系统包括:逻辑控制装置、以及多个分布式消息队列; 所述逻辑控制装置,用于存储消息队列的新队列逻辑,并将所述新队列逻辑的存储标识发送至所述消息队列,所述存储标识用于查找存储的所述新队列逻辑; 所述分布式消息队列,用于根据所述存储标识向所述逻辑控制装置获取对应的所述新队列逻辑,并加载所述新队列逻辑。11.一种数据处理设备,其特征在于,包括: 处理器; 用于存储处理器可执行指令的存储器; 其中,所述处理器被配置为:存储消息队列的新队列逻辑,并将所述新队列逻辑的存储标识发送至所述消息队列,所述存储标识用于查找存储的所述新队列逻辑;在接收到所述消息队列发送的逻辑获取请求时,所述逻辑获取请求中包括所述存储标识,根据所述存储标识获取所述新队列逻辑,并将所述新队列逻辑发送至所述消息队列进行加载。
【文档编号】G06F13/16GK105955895SQ201610248606
【公开日】2016年9月21日
【申请日】2016年4月20日
【发明人】张旭华, 刘硕, 陈志军
【申请人】北京小米移动软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1