消息处理位置回拨的方法、装置、电子设备及存储介质与流程

文档序号:33193775发布日期:2023-02-04 10:04阅读:40来源:国知局
消息处理位置回拨的方法、装置、电子设备及存储介质与流程

1.本技术涉及计算机技术领域,更具体地,涉及一种消息处理位置回拨的方法、装置、电子设备及存储介质。


背景技术:

2.在消息中间件系统中,在消息生产或者消息消费的过程中,可能存在某一时间点后生产的消息有误(例如生产的消息中包括业务脏数据)、或者消费过程中某一时间点后的消费逻辑有误(例如未正确消费到、或者消费后处理错误),在该种情况下,如果不能及时回拨到对应的位置重新进行消息生产或者消息消费,将直接影响后续的过程。因此,如何进行消息处理位置的回拨是现有技术中亟待解决的技术问题。


技术实现要素:

3.鉴于上述问题,本技术实施例提出了一种消息处理位置回拨的方法、装置、电子设备及存储介质,以实现消息处理位置的回拨。
4.根据本技术实施例的一个方面,提供了一种消息处理位置回拨的方法,应用于消息中间件系统的管理节点,所述消息中间件系统还包括代理节点;所述方法包括:获取位置回拨请求,所述位置回拨请求指示了目标时间信息和偏移量索引信息,所述偏移量索引信息包括目标主题标识;请求与所述目标主题标识关联的代理节点在指定主题下的分区中进行消息查询,获得与所述目标时间信息相关联的目标消息,所述指定主题下的分区用于存储偏移量记录;根据所述偏移量索引信息在所述目标消息中进行偏移量记录查询,获得目标偏移量记录,所述目标偏移量记录包括目标节点标识和目标偏移量;请求所述目标节点标识所指示的代理节点将消息处理位置回拨到所述目标偏移量所指示的位置。
5.根据本技术实施例的一个方面,提供了一种消息处理位置回拨的方法,应用于消息中间件系统的代理节点,所述消息中间件系统还包括管理节点,所述方法包括:接收管理节点发送的位置回拨指令,所述位置回拨指令指示了目标偏移量;响应于所述位置回拨指令,将消息处理位置回拨到所述目标偏移量所指示的位置;其中,所述位置回拨指令是所述管理节点在获得目标偏移量记录后,根据所述目标偏移量记录中的目标偏移量向所述目标偏移量记录中的目标节点标识所指示的代理节点发送的;所述目标偏移量记录是根据偏移量索引信息在目标消息中查询获得的;所述目标消息是所述管理节点在接收到位置回拨请求后,请求与目标主题标识相关联的代理节点在指定主题下的分区中进行消息查询,所得到与目标时间信息相关联的消息;所述位置回拨请求指示了所述目标时间信息和所述偏移量索引信息,所述偏移量索引信息包括所述目标主题标识;所述指定主题下的分区用于存储偏移量记录。
6.根据本技术实施例的一个方面,提供了一种消息处理位置回拨的装置,应用于消息中间件系统的管理节点,所述消息中间件系统还包括代理节点;所述装置包括:位置回拨请求获取模块,用于获取位置回拨请求,所述位置回拨请求指示了目标时间信息和偏移量
索引信息,所述偏移量索引信息包括目标主题标识;消息查询请求模块,用于请求与所述目标主题标识关联的代理节点在指定主题下的分区中进行消息查询,获得与所述目标时间信息相关联的目标消息,所述指定主题下的分区用于存储偏移量记录;偏移量记录查询模块,用于根据所述偏移量索引信息在所述目标消息中进行偏移量记录查询,获得目标偏移量记录,所述目标偏移量记录包括目标节点标识和目标偏移量;回拨请求模块,用于请求所述目标节点标识所指示的代理节点将消息处理位置回拨到所述目标偏移量所指示的位置。
7.在本技术的一些实施例中,基于前述方案,所述位置回拨请求包括生产位置回拨请求,所述目标偏移量包括目标生产偏移量,所述消息处理位置包括生产位置;消息处理位置回拨的装置还包括:目标生产偏移量获取模块,用于从所述目标偏移量记录中获取所述目标生产偏移量;在该实施例中,回拨请求模块进一步被配置为:请求所述目标节点标识所指示的代理节点将生产位置回拨到所述目标生产偏移量所指示的位置。
8.在本技术的另一些实施例中,基于前述方案,所述位置回拨请求包括消费位置回拨请求,所述目标偏移量包括目标消费偏移量,所述消息处理位置包括消费位置;消息处理位置回拨的装置还包括:目标消费偏移量获取模块,用于从所述目标偏移量记录中获取所述目标消费偏移量;在该实施例中,回拨请求模块进一步被配置为:请求所述目标节点标识所指示的代理节点将消费位置回拨到所述目标消费偏移量所指示的位置。
9.在本技术的一些实施例中,基于前述方案,所述偏移量索引信息包括目标消费组标识,回拨请求模块进一步被配置为:根据所述消费组标识和所述目标消费偏移量,向所述目标节点标识所指示的代理节点发送消费位置回拨指令;所述消费位置回拨指令用于指示所述目标节点标识所指示的代理节点,将所述目标消费组标识所指示消费组的消费位置回拨到所述目标消费偏移量所指示的位置。
10.在本技术的一些实施例中,基于前述方案,所述消息中间件系统还包括控制节点,消息处理位置回拨的装置还包括:代理节点查询模块,用于请求所述控制节点根据所述目标主题标识进行代理节点查询,确定与所述目标主题标识关联的代理节点。
11.根据本技术实施例的一个方面,提供了一种消息处理位置回拨的装置,应用于消息中间件系统的代理节点,所述消息中间件系统还包括管理节点,所述装置包括:位置回拨指令接收模块,用于接收管理节点发送的位置回拨指令,所述位置回拨指令指示了目标偏移量;位置回拨模块,用于响应于所述位置回拨指令,将消息处理位置回拨到所述目标偏移量所指示的位置;其中,所述位置回拨指令是所述管理节点在获得目标偏移量记录后,根据所述目标偏移量记录中的目标偏移量向所述目标偏移量记录中的目标节点标识所指示的代理节点发送的;所述目标偏移量记录是根据偏移量索引信息在目标消息中查询获得的;所述目标消息是所述管理节点在接收到位置回拨请求后,请求与目标主题标识相关联的代理节点在指定主题下的分区中进行消息查询,所得到与目标时间信息相关联的消息;所述位置回拨请求指示了所述目标时间信息和所述偏移量索引信息,所述偏移量索引信息包括所述目标主题标识;所述指定主题下的分区用于存储偏移量记录。
12.在本技术的一些实施例中,基于前述方案,消息处理位置回拨的装置还包括:消息查询请求接收模块,用于接收所述管理节点根据所述目标时间信息发送的消息查询请求目标时间信息;目标消息确定模块,用于根据所述目标时间信息在指定主题下的分区中进行消息查询,获得与所述目标时间信息相关联的目标消息;目标消息返回模块,用于向所述管
理节点返回所述目标消息。
13.在本技术的一些实施例中,基于前述方案,消息处理位置回拨的装置还包括:偏移量获取模块,用于获取被处理消息的偏移量;偏移量记录生成模块,用于根据所述被处理消息所在分区的分区标识、所属主题的主题标识和所在代理节点的节点标识和所述偏移量生成偏移量记录;消息封装模块,用于根据所述偏移量记录、所述指定主题对应的主题标识、所述指定主题下指定分区对应的分区标识和写入时间信息进行消息封装;写入模块,用于将封装得到的消息写入所述指定主题下的所述指定分区中。
14.在本技术的一些实施例中,基于前述方案,所述被处理消息的偏移量包括相同时间点下同一分区中被消费消息的消费偏移量和被生产消息的生产偏移量;偏移量记录生成模块进一步被配置为:组合所述被处理消息所在分区的分区标识、所属主题的主题标识、所在代理节点的节点标识、所述被消费消息的消费偏移量和所述被生产消息的生产偏移量,得到所述偏移量记录。
15.在本技术的一些实施例中,基于前述方案,消息封装模块,包括:获取单元,用于获取归属于同一消费组的至少两条偏移量记录;组合单元,用于组合所述至少两条偏移量记录和所述至少两条偏移量记录所对应消费组的消费组标识,得到消息体;封装单元,用于将所写入时间信息、所述指定主题对应的主题标识、所述指定主题下指定分区对应的分区标识和所述消息体封装为消息。
16.在本技术的一些实施例中,基于前述方案,消息处理位置回拨的装置还包括:主题创建请求发送模块,用于向所述控制节点发送主题创建请求,所述主题创建请求用于指示所述控制节点创建用于存储偏移量记录的主题;创建结果接收模块,用于接收所述控制节点响应于所述主题创建请求返回的创建结果,所述创建结果包括所述指定主题对应的主题标识。
17.根据本技术实施例的一个方面,提供了一种电子设备,包括:处理器;存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如上所述消息处理位置回拨的方法。
18.根据本技术实施例的一个方面,提供了一种计算机可读存储介质,其上存储有计算机可读指令,当所述计算机可读指令被处理器执行时,实现如上所述消息处理位置回拨的方法。
19.根据本技术实施例的一个方面,提供了计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述消息处理位置回拨的方法。
20.在本技术的方案中,将消息的偏移量以偏移量记录的形式存储在指定主题下,从而,在需要进行消息处理位置回拨的时候,按照偏移量索引信息和指定的目标时间信息在指定主题下的消息中进行偏移量记录查询,并按照所查询到目标偏移量记录中的目标偏移量进行消息处理位置的回拨,快速高效地实现了偏移量的查询和消息处理位置的回拨。
21.而且,在本技术的方案中由代理节点按照目标时间信息进行消息查询获得目标消息,由管理节点根据偏移量索引信息在目标消息中进行偏移量记录查询,实现了由管理节点和代理节点共同承担了偏移量查询的负载压力,相较于仅由负责消息存储和查询的代理
节点来承担偏移量查询的负载,显著减小了因进行消息处理位置回拨对代理节点所带来的负载压力。
附图说明
22.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1示出了可以应用本技术实施例的技术方案的示例性系统架构的示意图。
24.图2示出了分区中消息生产和消息消费的示意图。
25.图3示出了可以应用本技术实施例的技术方案的另一示例性系统架构的示意图。
26.图4是根据本技术一实施例示出的消息处理位置回拨的方法的流程图。
27.图5是根据本技术一实施例示出的消息处理位置回拨的方法的时序图。
28.图6是根据本技术另一实施例示出的消息处理位置回拨的方法的流程图。
29.图7是根据本技术一实施例示出的进行偏移量存储的流程图;
30.图8是根据本技术一实施例示出的消息体的示意图。
31.图9是根据本技术一实施例示出指定主题下的消息的示意图。
32.图10是根据本技术一实施例示出的创建指定主题的时序图。
33.图11是根据本技术一实施例示出的消息处理位置回拨的装置的框图。
34.图12是根据本技术另一实施例示出的消息处理位置回拨的装置的框图。
35.图13示出了适于用来实现本技术实施例的电子设备的计算机系统的结构示意图。
具体实施方式
36.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本技术将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
37.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本技术的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本技术的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本技术的各方面。
38.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
39.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
40.在对本技术的方案进行具体说明之前,对涉及的若干名词进行如下解释。
41.消息中间件系统:又称为消息中间件、消息队列(mq,message queue),是指基于队
列与消息传递技术,在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统。消息中间件系统例如kafka消息系统、tubemq等。
42.topic:主题,是存储消息的逻辑概念,可以理解为一个消息类别的名称,同类消息发送到同一个topic。消息中间件系统根据主题对消息进行归类。
43.partion:分区,物理上的概念,一个topic下可以划分一个或者多个分区,每个topic下分区的数量可以是在创建topic时指定的。每个分区都是一个有序队列。严格来说,消息中间件系统中消息是发送到主题下的分区中的。
44.producer:消息的生产者,向broker发送消息的客户端。
45.consumer:消息的消费者,从broker读取消息的客户端。
46.consumer group:消费组,每个消费者属于一个特定的消费组,一条消息可以被多个不同的消费组消费,同一个分区只能被同一个消费组里的一个消费者消费。
47.offset:偏移量,是消息在分区中唯一编号,该偏移量指示了消息在分区中的位置。根据消息生产过程和消息消费过程的不同,偏移量分为生产偏移量(produce offset)和消费偏移量(consume offset),如果一消息正在被写入某一主题下的分区中,则该消息在该分区中的偏移量为生产偏移量;反之,如果分区中的一消息被读取(消费),则该消息在该分区中的偏移量为消费偏移量。
48.broker:代理节点,其负责消息存储以及消息查询,可以接收生产者发送的消息,分配偏移量;同时,可以接收消费者、其他broker的请求,并进行处理和响应。其中,一个broker中可以存储多个主题下的消息,即一个broker可以与多个主题相关联;一个broker中可以包括一主题下的一个或者多个分区。
49.master:控制节点,负责用户的web请求管理以及协调各个broker完成各个功能。
50.tubemq:是apache的一款高性能的消息队列系统。
51.tubemq-manager:tubemq系统的管理平台,即tubemq系统中的管理节点,能够对tubemq进行运维操作以及元数据进行管理。
52.需要说明的是:在本文中提及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
53.图1示出了可以应用本技术实施例的技术方案的示例性系统架构的示意图。如图1所示,该系统架构包括终端设备110和消息中间件系统120,消息中间件系统120包括管理节点121和代理节点122。终端设备110与消息中间件系统120通过有线网络或者无线网络通信连接,消息中间件系统120中的各个节点之间通信连接。
54.终端设备110可以是智能手机、平板电脑、笔记本电脑、台式电脑等可以用于与消息中间件系统120进行交互的电子设备,在此不进行具体限定。代理节点122和管理节点121可以是单个服务器,也可以是多个服务器组成的服务器集群等。
55.在本技术的方案中,代理节点122与指定主题相关联,代理节点122中设有指定主题下的至少一个分区,该指定主题下的分区用于存储各消息的偏移量,具体来说,偏移量是以偏移量记录的形式存储。消息是消息中间件系统中通信的基本单位。偏移量记录是根据代理节点中各消息的偏移量生成的。
56.偏移量可以包括生产偏移量和消费偏移量。如上所描述,如果一消息正在被写入
分区中(即消息被生产),则该消息在该分区中的偏移量为生产偏移量;反之,如果分区中的一消息被读取(即消息被消费),则该消息在该分区中的偏移量为消费偏移量。
57.在本技术的一些实施例中,由于将偏移量存储在指定主题下,在消息中间件中主题具有过期删除的存储特性,因此,指定主题下分区中所存储的偏移量相当于是暂存,当该指定主题下分区中的消息满足过期条件,将消息自动删除。
58.在本技术的一些实施例中,可以按照设定的生命周期管理策略进行指定主题下消息的过期删除,例如生命周期管理策略可以是设定删除周期为两天,则当指定主题下的消息在指定主题下的分区中的存储时长(或者未修改时长)达到两天,则自动删除该消息。当然,在其他实施例中,还可以通过配置文件来根据实际需要设定生命周期管理策略(例如删除周期)。
59.终端设备110可以向管理节点121发送位置回拨请求,管理节点121在接收到位置回拨请求后,向代理节点122发送消息查询请求,代理节点122在指定主题下的分区中查询到目标消息后,将目标消息发送至管理节点121。其中,管理节点121可以是向一个或者多个代理节点发送消息查询请求。其中,终端设备110可以是作为生产者的客户端所在终端,也可以是作为消费者的客户端所在终端。
60.管理节点121在获得目标消息后,可以从目标消息中获取目标偏移量,并向目标偏移量所指示消息来源的代理节点122发送位置回拨指令,以使该代理节点122根据该位置回拨指令将消息处理位置回拨到该目标偏移量所指示的位置,以从该目标偏移量所指示的位置重新开始进行消息处理。
61.值得一提的是,图1中仅示例性示出了一个代理节点,在具体实施例中,若目标偏移量所指示消息来源的代理节点122与接收管理节点121所发送消息查询请求的代理节点可能是不同的代理节点。
62.消息处理包括消息生产和消息消费,对应的,消息处理位置分为生产位置和消费位置。生产位置用于指示当前被生产的消息在分区中的位置,消费位置是指当前被消费的消息在分区中的位置。
63.对应的,消息处理位置的回拨包括生产位置的回拨和消费位置的回拨。生产位置的回拨是指将生产位置回拨到目标偏移量所指示的生产位置,以从该生产位置继续生产消息;同理,消费位置的回拨是指消费位置回拨到目标偏移量所指示的消费位置,以从该消费位置继续消费消息。
64.图2中示出了分区中消息生产和消息消费的示意图,消息生产可以理解为将消费者发送的消息写入分区中,消息消费可以理解为从分区中读取消息。在分区中消息是顺序写入的。
65.如图2所示,在某一主题下分区1包括编号为0到6的分段,编号0-6可以理解为对应的偏移量,从编号0到编号6,消息写入分区的时间距离当前的时间越久,换言之,越靠近偏移量为0的消息,其写入时间越早,该消息越旧,反之,越远离偏移量为0的消息,其写入时间越晚,该消息越新。在图2所示时刻,分区1的偏移量为6的位置处正在写入生产者a发送的消息,则此时,分区1中的生产偏移量为6。而在实际消息生产过程中,可能存在某一时间点的生产数据(例如写入偏移量为5的位置处的消息)有误,在此种情况下,为了避免对后续处理过程的影响,需要按照本技术的方案,重新回拨到偏移量为5的位置处重新开始生产消息,
即将分区1中最新的生产偏移量重置为5。
66.在图2所示时刻,消费者b读取该分区1中偏移量为3位置处的消息,因此,在图2所示时刻,分区1中消费者b的消费偏移量为3。若之后发现消费者b从分区1中所读取偏移量为2之后消息的消费逻辑有误(例如未正确消费到消息,或者消费消息后处理错误),则需要重新回拨到分区1中偏移量为2的位置处继续消费,即将消费者b的最新消费偏移量重置为2。
67.由上可以看出,由于在分区中消息处理位置通过偏移量来指示,因此,消息处理位置的回拨即为偏移量的重置,即生产位置的回拨即为生产偏移量的重置,具体在本方案中,即将分区中最新的生产偏移量重置为目标生产偏移量;消费位置的回拨即为消费偏移量的重置,即将分区中消费者最新的消费偏移量重置为目标消费偏移量。
68.图3示出了可以应用本技术实施例的技术方案的另一示例性系统架构的示意图,相较于图1,图3中的消息中间件系统120还包括控制节点123,该控制节点123与管理节点121通信连接。
69.如图3所示,管理节点121接收到位置回拨请求后,先根据位置回拨请求所指示的目标主题标识,向控制节点123发送代理节点查询请求,以请求控制节点123根据目标主题标识进行代理节点查询,并向管理节点121返回代理节点查询结果。其中,该代理节点查询结果指示了与目标主题标识相关联的代理节点122,在具体实施例中,目标主题标识相关联的代理节点122可以是一个也可以是多个。
70.之后,管理节点121向与目标主题标识相关联的代理节点122发送消息查询请求,该与目标主题标识相关联的代理节点122在指定主题下的分区中查询到目标消息后,向管理节点121返回目标消息。其中,目标消息是指指定主题下的分区中所存储与位置回拨请求所指示目标时间信息相关联的信息。
71.与目标主题标识相关联的代理节点122将目标消息返回到管理节点后,该管理节点121根据位置回拨请求中的偏移量索引信息在目标消息中进行偏移量记录查询,获得目标偏移量记录,并根据目标偏移量记录中的目标偏移量,向该目标偏移量记录中目标节点标识所指示的代理节点122发送位置回拨指令,以使该目标节点标识所指示的代理节点将消息处理位置回拨到目标偏移量所指示的位置。
72.在本技术的一些实施例中,控制节点123还可以用于创建主题,例如创建用于存储偏移量的指定主题。请继续参阅图3,代理节点122可以向控制节点123发送主题创建请求,控制节点123在完成主题创建后,向代理节点122返回创建结果,创建结果可以包括所创建主题的主题标识,进一步的,创建结果还可以包括为所创建主题指定的分区信息,例如分区的数量、所创建主题下各个分区所位于的代理节点等。控制节点123在完成主题创建后,将所创建的主题与一个或者多个代理节点122节点相关联,从而与所创建主题关联的代理节点122可以进行对应主题下消息的生产和消费。与一主题相关联的代理节点122可以是一个也可以是多个,一代理节点122可以仅与一个主题相关联,也可以与多个主题相关联。
73.应该理解的是,图1和图3中所示出终端设备110、代理节点122和管理节点121,以及图3中所示出控制节点123的数量仅仅是示意性的,不能认为是对本技术使用范围的限制在具体实施例中,消息中间件系统120中的代理节点122、管理节点121以及控制节点123可以是多个。
74.本技术的方案可以应用于tubemq系统中,在该实施例中,tubemq系统中的broker
作为本技术方案中的代理节点,tubemq系统中的tubemq-manager(tubemq系统的管理平台)作为为本技术方案中的管理节点,tubemq系统中的master作为本技术方案中的控制节点。
75.在本技术的一些实施例中,消息中间件系统可以应用于云平台中,用于对云平台中云服务器之间的消息传递进行管理。在该种应用场景下,云平台中的各个云服务器可以视为消费者或者生产者,作为生产者的云服务器将消息发送到消息中间件系统中的代理节点,由代理节点将消息写入对应主题下的分区中,作为消费者的云服务器从对应主题下的分区中进行消息的消费。在云平台中,若作为生产者或者消费者的云服务器需要进行消息处理位置回拨时,可以请求消息中间件系统按照本技术实施例的方案进行消息处理位置的回拨,例如消息生产位置的回拨或者消息消费位置的回拨。
76.在本技术的一些实施例中,消息中间件系统还可以应用于区块链系统中,用于对区块链系统中区块链节点之间的消息传递进行管理。在该种应用场景下,区块链系统中的区块链节点可以视为消费者或者生产者,从而,作为生产者的区块链节点将需要传递的消息发送到消息中间件系统的代理节点,由该代理节点将消息写入到对应主题下的分区中,作为消费者的区块链节点从代理节点中对应分区中进行消息消费。若作为生产者或者消费者的区块链节点需要进行消息处理位置回拨时,可以按照本技术实施例的方案实现。
77.以下对本技术实施例的技术方案的实现细节进行详细阐述:
78.图4是根据本技术的一个实施例示出的消息处理位置回拨的方法的流程图,该方法应用于消息中间件系统中的管理节点,该消息中间件系统还包括代理节点。参照图4所示,该方法至少包括步骤410至440,详细介绍如下:
79.步骤410,获取位置回拨请求,位置回拨请求指示了目标时间信息和偏移量索引信息,偏移量索引信息包括目标主题标识。
80.目标时间信息用于在时间维度上限定所要查询的偏移量。由于所要查询的偏移量是与某一消息相关的,因此,该目标时间信息可以是限定所要查询偏移量所指示消息的被处理时间,还可以是所要查询偏移量的被存储时间(即被写入指定主题下的分区中的时间)。目标时间信息所限定的时间可以是一具体的时间点,也可以是一时间段,在此不进行具体限定。
81.偏移量索引信息用于在消息存储位置维度上限定所要查询的偏移量。由于消息的偏移量指示了消息在分区中的存储位置,在消息中间件系统中根据主题、所在的分区和偏移量可以唯一确定一消息,因此,可以将与消息相关的信息,例如消息所属主题、消息所在的分区等信息作为用于定位偏移量的信息。目标主题标识指示了所要查询偏移量所指示消息所属的主题。
82.在本技术的一些实施例中,偏移量索引信息除了包括目标主题标识外,还可以包括所要查询偏移量所指示消息所在分区的分区标识、所属消费组的消费组标识和所在处理节点的节点标识中的一项或者多项。
83.位置回拨请求可以是由作为消费者的客户端发起,也可以是由作为生产者的客户端发起,在此不进行具体限定。在具体实施例中,若该位置回拨请求是由作为消费者的客户端发起,则该位置回拨请求为请求进行消费位置回拨的消费位置回拨请求。若该位置回拨请求是由作为生产者的客户端发起,则该位置回拨请求为请求进行生产位置回拨的生产位置回拨请求。
84.在本技术的一些实施例中,由于在消息中间件系统中,客户端的身份可能会随着实际需要在消费者和生产者之间进行切换,因此,直接根据客户端的信息可能不便于识别位置回拨请求是消费位置回拨请求还是生产位置回拨请求。在该种情况下,可以通过在位置回拨请求中配置标识码来识别,其中,标识码包括用于标识是消费位置回拨请求的第一标识码,和用于标识是生产位置回拨请求的第二标识码。
85.步骤420,请求与目标主题标识关联的代理节点在指定主题下的分区中进行消息查询,获得与目标时间信息相关联的目标消息,指定主题下的分区用于存储偏移量记录。
86.如上所描述,若需要在代理节点的分区中进行消息存储,需要将代理节点与主题相关联,从而,归属于代理节点所关联主题的消息可以存储在该代理节点中所关联主题下的分区中,而归属于其他未与代理节点相关联的主题下的消息则无法存储在该代理节点下的分区中。由于所要查询偏移量所指示消息所属的主题为目标主题标识所指示的主题,因此,可以确定,所要查询偏移量所指示消息来源于与该目标主题标识所指示主题相关联的代理节点。因此,在本技术的方案中,请求与目标主题标识关联的代理节点在指定主题下的分区中进行消息查询,而不是让全部代理节点均进行消息查询,避免让其他未与目标主题标识关联的代理节点进行无效的消息查询,提高消息查询效率。由于与一主题相关联的代理节点可以是一个也可以是多个,因此,与目标主题标识关联的代理节点可以是一个也可以是多个。
87.在本技术的一些实施例中,消息中间件系统还包括控制节点,在步骤420之前,该方法还包括:请求控制节点根据目标主题标识进行代理节点查询,确定与目标主题标识关联的代理节点。
88.在本实施例中,控制节点用于进行各个代理节点的调度和管理。控制节点中维护了所创建主题与代理节点之间的关联关系。因此,控制节点可以根据目标主题标识查询确定与目标主题标识相关联的代理节点。
89.可以理解的是,偏移量记录指示了偏移量,也就是说,在本技术的方案中,偏移量在指定主题下以偏移量记录的形式存储。其中,偏移量记录可以是根据消息的偏移量以及该偏移量的关联信息生成的。偏移量的关联信息可以包括该偏移量所指示消息所属主题的主题标识、所在分区的分区标识、该偏移量所指示消息所在代理节点的节点标识、该偏移量所指示消息所来源消费者所属消费组的群组标识等。
90.在本技术的方案中,创建了用于存储偏移量的指定主题。该指定主题下分区中存储的消息是根据偏移量记录生成的。而且,根据偏移量记录所生成的消息中携带时间信息,因此,可以根据位置回拨请求所指示的目标时间信息,查询与该目标时间信息相关联的信息。目标消息并不特指某一消息,而是泛指在指定主题下与目标时间信息相关联的消息。
91.在本技术的一些实施例中,可以根据目标时间信息所指示时间与指定主题下消息所携带时间信息所指示时间之间的差值来确定指定主题下的消息是否为与目标时间信息相关联的目标消息。
92.具体的,若目标时间信息所指示的时间是一时间点,可以设定差值阈值,如果目标时间信息所指示时间点与指定主题下消息所携带时间信息所指示时间之间的差值的绝对值不超过差值阈值,则确定该消息为与目标时间信息相关联的消息;反之,若目标时间信息所指示时间点与指定主题下消息所携带时间信息所指示时间之间的差值的绝对值超过差
值阈值,则确定该消息不是与目标时间信息相关联的消息。
93.若目标时间信息所指示的时间是一时间段,如果指定主题下消息所携带时间信息指示的时间位于该目标时间信息所限定的时间段内,则确定该消息为与目标时间信息相关联的消息,反之,该消息不是与目标时间信息相关联的消息。
94.在本技术的一些实施例中,如果是按照目标时间信息进行指定主题下消息的精确匹配,也可以将指定主题下所携带时间信息所指示的时间与目标时间信息所指示时间相同的消息确定为与该目标时间信息相关联的目标信息。
95.步骤430,根据偏移量索引信息在目标消息中进行偏移量记录查询,获得目标偏移量记录,目标偏移量记录包括目标节点标识和目标偏移量。
96.目标偏移量记录是指目标消息中与偏移量索引信息相匹配的偏移量记录。目标偏移量是指目标偏移量记录中的偏移量。目标节点标识是指目标偏移量记录中的节点标识,该目标节点标识用于指示目标偏移量所指示消息所在的处理节点。
97.在本技术的一些实施例中,偏移量记录中包括偏移量的关联信息,例如主题标识、分区标识、消费组标识等,偏移量索引信息包括主题标识、分区标识、消费组标识等,则可以将偏移量索引信息中的各项信息与偏移量记录中的各项信息进行匹配,如果一偏移量记录中包括偏移量索引信息中的全部信息,则确定该偏移量记录与偏移量索引信息相匹配,即该偏移量记录为目标偏移量记录。
98.在本技术的方案中,偏移量记录至少包括偏移量和偏移量所指示消息所在代理节点的节点标识。进一步的,为了进行偏移量的精确查询,偏移量记录中还包括偏移量所指示消息所属主题的主题标识和偏移量所指示消息所在分区的分区标识。因此,可以在偏移量索引信息中指定主题标识、分区标识等来精确查询对应的偏移量。对应的,目标偏移量记录中的主题标识为偏移量索引信息中的目标主题标识,目标偏移量记录中的分区标识为偏移量索引信息中的分区标识。若偏移量记录中还包括消费组标识,则目标偏移量记录中的消费组标识为偏移量索引信息中的目标消费组标识。
99.步骤440,请求目标节点标识所指示的代理节点将消息处理位置回拨到目标偏移量所指示的位置。
100.目标节点标识所指示的代理节点是指该目标偏移量所指示消息所在的代理节点,可以确定,之前是由该目标节点标识所指示代理节点对该目标偏移量所指示的消息进行处理的,例如将该消息写入分区中,或者从分区中读取该消息。
101.在本技术的一些实施例中,位置回拨请求包括生产位置回拨请求,目标偏移量包括目标生产偏移量,消息处理位置包括生产位置;在步骤430之后,该方法还包括:从目标偏移量记录中获取目标生产偏移量。在本实施例中,步骤440包括:请求目标节点标识所指示的代理节点将生产位置回拨到目标生产偏移量所指示的位置。
102.在本技术的一些实施例中,偏移量记录中可以仅存储生产偏移量,也可以仅存储消费偏移量,还可以同时存储同一时间点下一主题下的同一分区中的生产偏移量量和消费偏移量。在一条偏移量记录中包括生产偏移量和消费偏移量的情况下,需要根据生产位置回拨请求从目标偏移量记录中获取生产偏移量,从目标偏移量记录中所获取的生产偏移量即为目标生产偏移量。在偏移量记录中仅存储生产偏移量的情况下,从目标偏移量记录中所获取到的偏移量即为目标生产偏移量。
103.在本技术的一些实施例中,一代理节点中可能包括多个分区,可以按分区来维护生产位置,即为每一分区分别维护各个时间点的生产位置,因此,生产位置是与分区相关的。在该种情况下,在步骤440之前,管理节点从目标偏移量记录中获取目标主题标识和目标分区标识(即目标偏移量记录中的分区标识),并按照目标主题标识、目标分区标识和目标生产偏移量请求目标节点标识所指示处理节点进行生产位置回拨,对应的,目标节点标识所指示的代理节点根据该目标主题标识和目标分区标识定位需要进行生产位置重置的分区,然后将该分区的生产位置重置为目标生产偏移量所指示的位置,以从该目标生产偏移量所指示的位置继续生产消息。
104.在消息中间件系统的生产过程中,如果出现生产数据有误,例如出现业务脏数据等,可以按照本实施例的方法及时定位错误数据所在消息的位置,并将生产位置回拨到包括该错误数据的消息所在的位置,以从该错误数据所在的位置重新开始生产消息。
105.在本技术的另一些实施例中,位置回拨请求包括消费位置回拨请求,目标偏移量包括目标消费偏移量,消息处理位置包括消费位置;步骤430之后,该方法还包括:从目标偏移量记录中获取目标消费偏移量;在本实施例中,步骤440包括:请求目标节点标识所指示的代理节点将消费位置回拨到目标消费偏移量所指示的位置。
106.在本技术的一些实施例中,若一条偏移量记录中包括同一时间点下一主题下的同一分区中的生产偏移量量和消费偏移量,则需要根据消费位置回拨请求从目标偏移量记录中获取目标消费偏移量。
107.在本技术的一些实施例中,如果是按分区维护各个时间点的消费位置,在步骤440之前,管理节点从目标偏移量记录中获取目标主题标识和目标分区标识,并按照目标主题标识、目标分区标识和目标消费偏移量请求目标节点标识所指示处理节点进行消费位置回拨,对应的,目标节点标识所指示的代理节点根据该目标主题标识和目标分区标识定位需要进行消费位置重置的分区,然后将该分区的消费位置重置为目标消费偏移量所指示的位置。
108.在消息中间件系统中,为了提高消息消费的速度,按消费组进行消费进程的管理,即按消费组维护消费位置。消费组是一个逻辑上的概念,每个消费组包括一个或者多个消费者,消费组在消费所对应主题下的消息过程中,主题下的每个分区只能分配给消费组中的一个消费者。
109.在该实施例中,偏移量索引信息包括目标消费组标识,请求目标节点标识所指示的代理节点将消费位置回拨到目标消费偏移量所指示的位置的步骤进一步包括:根据消费组标识和目标消费偏移量,向目标节点标识所指示的代理节点发送消费位置回拨指令;消费位置回拨指令用于指示目标节点标识所指示的代理节点,将目标消费组标识所指示消费组的消费位置回拨到目标消费偏移量所指示的位置。目标消费组标识用于目标节点标识所指示的代理节点定位需要进行消费位置回拨的消费组。
110.在消息中间件系统的消息消费过程中,如果出现某一时间后的消费逻辑有误,例如未正确消费到或者消费消息后处理错误),可以按照本实施例的方法及时定位消费逻辑有误的消息的位置,并将消费位置回拨到该消费逻辑有误的消息的位置,以从该位置继续消费。
111.在本技术的一些实施例中,若从目标消息中未查询到与偏移量索引信息相匹配的
目标偏移量记录,则可以向位置回拨请求的发起方返回错误提示信息,以通过该错误提示信息提示未查询到对应的偏移量。
112.在本技术的方案中,将消息的偏移量以偏移量记录的形式存储在指定主题下,从而,在需要进行消息处理位置回拨的时候,按照偏移量索引信息和指定的目标时间信息在指定主题下进行偏移量记录查询,并按照所查询到目标偏移量记录中的目标偏移量进行消息处理位置的回拨,快速高效地实现了偏移量的查询和消息处理位置的回拨。
113.而且,在本技术的方案中,在基于时间维度的目标时间信息和消息位置维度的偏移量索引信息来进行目标偏移量的分步查询,即先根据目标时间查询与该目标时间信息相关联的目标信息,然后根据偏移量索引信息从目标消息中查询与该偏移量索引信息相匹配的目标偏移量,进而确定目标偏移量。该种分步查询的方式,降低了查询难度,提高了查询效率。而且,实现了将偏移量查询的任务进行分解,为分解后任务的再分配提供了基础,即将按目标时间信息进行消息查询的任务分配代理节点,将按照偏移量索引信息进行偏移量记录查询的任务分配给管理节点。
114.由代理节点进行消息查询获得目标消息,由管理节点在目标消息中进行偏移量记录查询,实现了由代理节点和管理节点共同实现偏移量的查询,因此,相较于完全由代理节点或者管理节点进行偏移量的查询的方案,本技术的方案极大减小了代理节点的负载。而且,由于偏移量的存储由消息所在的代理节点承担,因此,能够支持在新增代理节点时,不需要额外的配置信息。
115.图5是根据本技术一实施例示出的消息处理位置回拨的方法的时序图。在该实施例中,消息中间件系统包括管理节点、代理节点和控制节点。如图5所示,该方法包括步骤510-590。
116.步骤510,接收位置回拨请求。其中,管理节点所接收到的位置回拨请请求可以是由作为消费者的客户端发起的消费位置回拨请求,也可以是由作为生产者的客户端发起的生产位置回拨请求,在此不进行具体限定。该位置回拨请求指示了目标时间信息和偏移量索引信息,偏移量索引信息包括目标主题标识、节点标识、分区标识和消费组标识。
117.步骤520,向控制节点发送代理节点查询请求。该代理节点查询请求携带目标主题标识,用于请求控制节点查询获得与目标主题标识相关联的代理节点。
118.步骤530,返回代理节点查询结果。控制节点向管理节点所返回的代理节点查询结果指示了与目标主题标识相关联的代理节点。
119.步骤540,向与目标主题标识相关联的代理节点发送消息查询请求。该消息查询请求携带目标时间信息,以请求确定与目标时间信息相关联的目标消息。可以理解的是,若与目标主题标识相关联的代理节点为多个,则向每一个代理节点均发送该消息查询请求。
120.步骤550,返回目标消息。可以理解的是,该目标消息可以是一条也可以是多条,若该目标消息为多条,其可以是与目标主题标识相关联的多个代理节点分别查询获得的。
121.步骤560,根据偏移量索引信息在目标消息中进行偏移量记录查询,确定目标偏移量记录。将目标消息中主题标识、分区标识(对于消费过程,还包括消费组标识)与偏移量索引信息对应内容相同的偏移量记录确定为目标偏移量记录。
122.步骤570,从目标偏移量记录中获取目标节点标识和目标偏移量。
123.步骤580,向目标节点标识所指示的代理节点发送位置回拨指令。该位置回拨指令
包括目标偏移量。
124.步骤590,将消息处理位置回拨到目标偏移量所指示的位置。至此,实现了消息处理位置的回拨。
125.若步骤510中所接收到位置回拨请求是生产位置回拨请求,则步骤570中,从目标偏移量记录中获取的目标偏移量是目标生产偏移量;对应的,步骤580中所发送的位置回拨指令是生产位置回拨指令,在步骤590中,是将生产位置回拨到该目标生产偏移量所指示的位置。同理,若步骤510中所接收到位置回拨请求是消费位置回拨请求,则步骤570中,从目标偏移量记录中获取的目标偏移量是目标消费偏移量;对应的,步骤580中所发送的位置回拨指令是消费位置回拨指令,在步骤590中是将消费位置回拨到该目标消费偏移量所指示的位置。如上步骤510-590的实现细节参见上文描述,在此不再赘述。
126.通过如上步骤510-590实现了由消息中间件系统中代理节点、管理节点和控制节点三方的交互进行生产位置的回拨或者消费位置的回拨,并且,在获得目标消息后,由管理节点从目标消息中进行偏移记录查询,确定目标偏移量记录,而不是由进行消息存储和查询的代理节点执行,大幅减小了代理节点的处理压力。
127.以下从消息中间件系统的代理节点侧对本技术实施例的技术方案的实现细节进行详细阐述:
128.图6是根据本技术的另一个实施例示出的消息处理位置回拨的方法的流程图,该方法应用于消息中间件系统的代理节点,消息中间件系统还包括管理节点。参照图6所示,该方法至少包括步骤610至620,详细介绍如下:
129.步骤610,接收管理节点发送的位置回拨指令,位置回拨指令指示了目标偏移量。
130.步骤620,响应于位置回拨指令,将消息处理位置回拨到目标偏移量所指示的位置。其中,位置回拨指令是管理节点在获得目标偏移量记录后,根据目标偏移量记录中的目标偏移量向目标偏移量记录中的目标节点标识所指示的代理节点发送的;目标偏移量记录是根据偏移量索引信息在目标消息中查询获得的;目标消息是管理节点在接收到位置回拨请求后,请求与目标主题标识相关联的代理节点在指定主题下的分区中进行消息查询,所得到与目标时间信息相关联的消息;位置回拨请求指示了目标时间信息和偏移量索引信息,偏移量索引信息包括目标主题标识;指定主题下的分区用于存储偏移量记录。
131.消息处理位置的回拨包括生产位置回拨和消费位置回拨,因此,位置回拨指令包括用于指示进行生产位置回拨的指令(为便于描述,将其称为生产位置回拨指令)和用于指示进行消费位置回拨的指令(为便于描述,将其称为消费位置回拨指令)。具体进行生产位置回拨和消费位置的实现细节参见上文描述,在此不再赘述。
132.在本技术的一些实施例中,步骤610之前,该方法还包括:接收管理节点根据目标时间信息发送的消息查询请求,消息查询请求指示了目标时间信息;消息查询请求是管理节点在接收到位置回拨请求后,向与目标主题标识关联的代理节点发送的;根据目标时间信息在指定主题下的分区中进行消息查询,获得与目标时间信息相关联的目标消息;向管理节点返回目标消息。
133.在本实施例中,进行消息处理位置回拨的代理节点同时也是与目标主题标识相关联的代理节点,从而,该代理节点一方面需要按照管理节点发送的消息查询请求查询确定目标消息,另一方面需要按照管理节点发送的位置回拨指令执行消息处理位置的回拨。在
其他实施例中,与目标主题标识相关联的代理节点可能不是目标偏移量记录中目标节点标识所指示的代理节点,视具体情况而定。在本技术的一些实施例中,由于指定主题下的各消息中包括时间信息,在根据目标时间信息在指定主题下的分区中进行消息查询的过程中,对指定主题下的消息进行遍历,如果所遍历到消息中的时间信息所指示时间大于目标时间信息所指示的时间,则可以终止查询,即在时间信息所指示时间不超过目标时间信息所指示时间的消息中进行消息查询,由此能够显著减少查询的次数,提高查询的效率。
134.在本技术的一些实施例中,在根据目标时间信息在指定主题下的分区中进行消息查询,获得与目标时间信息相关联的目标消息之前,该方法还涉及对将消息的偏移量进行存储的过程。
135.图7是根据本技术一实施例示出的进行偏移量存储的流程图。如图7所示,具体包括:步骤710,获取被处理消息的偏移量。
136.被处理消息可以是被生产消息和被消费消息中的至少一项。若被处理消息是被生产消息,则所获取的偏移量为生产偏移量,若被处理消息是被消费消息,则所获取的偏移量为消费偏移量。
137.在本技术的一些实施例中,还可以针对代理节点中同一主题下的同一分区,获取相同时间点下被生产消息的生产偏移量和被消费消息的消费偏移量。
138.步骤720,根据被处理消息所在分区的分区标识、所属主题的主题标识和所在代理节点的节点标识和偏移量生成偏移量记录。
139.在本技术的一些实施例中,可以预先设定偏移量记录中分区标识、主题标识、节点标识以及偏移量的组合顺序,从而,按照所预先设定的组合顺序进行被处理消息所在分区的分区标识、被处理消息所属主题的主题标识和被处理消息所在代理节点的节点标识和被处理消息的偏移量的组合,得到对应的偏移量记录。
140.在本技术的一些实施例中,偏移量记录中的偏移量可以仅包括生产偏移量,也可以仅包括消费偏移量,也可以同时包括生产偏移量和消费偏移量。在一条偏移量记录中同时包括生产偏移量和消费偏移量的情况下,一条偏移量记录中的生产偏移量和消费偏移量是代理节点中同一主题下同一分区中相同时间点下的生产偏移量和消费偏移量。由此,可以在进行生产偏移量或者消费偏移量查询时,同时获得对应时间点下的生产偏移量和消费偏移量。
141.在本技术的一些实施例中,被处理消息的偏移量包括相同时间点下同一分区中被消费消息的消费偏移量和被生产消息的生产偏移量;在该实施例中,步骤720进一步包括:组合被处理消息所在分区的分区标识、所属主题的主题标识、所在代理节点的节点标识、被消费消息的消费偏移量和被生产消息的生产偏移量,得到偏移量记录。
142.步骤730,根据偏移量记录、指定主题对应的主题标识、指定主题下指定分区对应的分区标识和写入时间信息进行消息封装。所封装得到的消息中可以包括一条或者多条偏移量记录中。
143.在本技术的一些实施例中,步骤730进一步包括:步骤731,获取归属于同一消费组的至少两条偏移量记录;步骤732,组合至少两条偏移量记录和至少两条偏移量记录所对应消费组的消费组标识,得到消息体。
144.在本实施例中,将归属于同一消费组的多条偏移量记录封装在同一消息体中,一
方面便于偏移量记录的查询,另一方面实现了偏移量记录的压缩,使一消息体中尽可能多地放置信息。在该种情况下,由于消息体中的偏移量记录归属于同一消费组,则可以在消息体中仅用一个字段来表示该消费组的消费组标识,不需要在每一偏移量记录中均设置用于表示消费组标识的字段,实现了偏移量记录的压缩,能够显著减少存储开销。
145.图8是根据本技术一实施例示出的消息体的示意图,图8中示例性示出了两条偏移量记录。在图8所示的偏移量记录中包括produce offset字段表示的生产偏移量和consume offset字段表示的消费偏移量。
146.在图8中各个字段的含义以及所占用的字节数可以如下表1所示。
147.表1
[0148][0149]
图8所示的消息体中,相邻字段之间通过分隔符隔开,分隔符可以是空格,当然并不仅限于此,在其他实施例中,可以根据实际需要设定分隔符。
[0150]
在本技术的一些实施例中,可以将仅包括生产偏移量的偏移量记录称为生产偏移量记录,将仅包括消费偏移量的偏移量记录称为消费偏移量记录。对于生产偏移量记录和消费偏移量记录可以分别进行消费封装,得到根据生产偏移量记录所封装得到的消息体,和根据消费偏移量记录所封装得到的消息体。
[0151]
在本技术的一些实施例中,如果不是按照消费组进行偏移量记录的压缩,则可以将消费偏移量所指示消息所属消费组的消费组标识添加到消费偏移量记录中。换言之,该消费偏移量记录是组合被消费消息所对应消费者所属消费组的消费组标识、被消费消息所属主题的主题标识、被消费消息所在分区的分区标识、被消费消息所在代理节点的节点标识、被消费消息的消费偏移量得到的。对应的,在进行消息体封装的过程中,直接组合至少两条消费偏移量记录得到消费体。
[0152]
可以理解的是,对于仅根据生产偏移量记录生产的消息体中,由于消息生产不涉及消费组,因此,不需要配置表示消费组标识的字段。在本技术的一些实施例中,生产偏移量记录可以是组合被生产消息所属主题的主题标识、被生产消息所在分区的分区标识、被
生产消息所在代理节点的节点标识、被生产消息的生产偏移量得到的。
[0153]
对于偏移量记录全部为生产偏移量记录或者全部为消费偏移量记录的消息体,其结构可以与图8所示的结构相似。当然,各个字段的组合顺序并不限于图8所示,可根据实际需要设定。
[0154]
请继续参阅图7,步骤733,将所写入时间信息、指定主题对应的主题标识、指定主题下指定分区对应的分区标识和消息体封装为消息。
[0155]
在本技术的一些实施例中,写入时间信息可以是当前的系统时间,即进行消息封装时的时间,在另一些实施例中,该写入时间信息还可以是消息体生成的时间等。
[0156]
在申请的一些实施例中,分区中所包括指定主题下的分区可以是在指定主题创建时,由控制节点所预先分配,而为代理节点所分配指定主题下的分区的数量可以是一个或者多个。若代理节点中包括指定主题下的多个分区,则代理节点会为待写入的消息预先分配指定主题下的分区,代理节点为待写入的消息预先分配的分区即为指定分区。
[0157]
在本技术的一些实施例中,还可以设定第一数据量阈值,例如,第一数据量阈值为1m,如果根据归属于同一消费组的偏移量记录所封装成消息的数据量超过该第一数据量阈值,则为该消费组再创建一条消息进行偏移量记录的存储。
[0158]
在本技术的另一些实施例中,为了限定指定主题下每条消息的数据量大小,还可以为消息中的消息体设定第二数据量阈值,如果根据归属于同一消费组的多条偏移量记录所生成的消息体的数据量超过该第二数据量阈值,则再创建一条消息进行偏移量记录的存储。在具体实施例中,该第一数据量阈值和/或第二数据量阈值可以根据实际需要设定,在此不进行具体限定。
[0159]
图9是根据本技术一实施例示出指定主题下的消息的示意图。如图9所示,该指定主题下的消息中包括时间戳、主题标识、分区标识和消息体。其中,主题标识是指指定主题的主题标识,分区标识是指该消息所被写入指定主题下的分区对应的分区标识,消息体即为根据偏移量记录所生成的消息体。通过该消息中的主题标识和分区标识可以定位该消息的位置。
[0160]
在本技术的一些实施例中,指定主题下的消息中的时间信息可以通过msgtype字段来表示的时间戳。该时间戳表示的时间可以是系统时间,该时间戳可以是分钟级别的时间,其格式为:yyyy-mm-dd hh:mm,其中,yyyy表示年份,mm表示月份,dd表示日期,hh表示小时,mm表示分钟。当然,在其他实施例中,该时间信息还可以是更细(例如秒级)或者更粗的数量级,具体可根据实际需要设定。
[0161]
在本技术的一些实施例中,在生成指定主题下的消息的过程中,还可以将消息中的时间戳取哈希值(hash code),作为过滤字段存入到索引文件中以支持过滤消费,当消费者开启过滤消费时,代理节点(broker)会遍历索引文件取出其中与消费者请求的时间戳匹配的消息。
[0162]
请继续参阅图7,步骤740,将封装得到的消息写入指定主题下的指定分区中。在本技术的一些实施例中,可以按照设定的时间周期触发将封装到的消息写入到指定主题下的指定分区中。设定的时间周期例如每隔一分钟写入一次,每隔两分钟写入一次等,可根据实际需要设定。
[0163]
在本技术的方案中,由于将偏移量记录存储在指定主题下,而主题中支持过期删
除,因此,可以利用主题中的过期删除的策略对指定主题下存储的消息进行生命周期管理,例如设定删除周期为两天,当然,删除周期可以通过配置文件进行自定义设定。
[0164]
在本技术的一些实施例中,对于指定主题下的文件,获取该指定主题下的文件最近一次修改的修改时间,根据系统的当前时间和该最近一次修改的修改时间的时间差,如果该时间差超过设定的超时时间,则确定该文件过期,则可以删除该文件,该文件中的消息对应被删除。
[0165]
值得一提的是,由于主题的存储是分块方式,因此,物理上,一个主题可以分为多个文件存储,在该种情况下,针对每一文件分别判断该文件是否过期,如果过期,则进行文件的删除。
[0166]
对于消息处理位置回拨而言,一般是回拨到距离当前消息处理位置较近的消息处理位置,因为如果回拨到距离较远的消息处理位置,可能导致多条消息被再次处理,不能满足消息中间件系统中消息处理的时效性要求,因此,在本技术的方案中,将偏移量记录存储在指定主题下,虽然主题中设有过期删除的策略,但是仍然能够满足消息处理位置的短距离的回拨要求,在满足消息时效性要求下进行消息处理位置的回拨。
[0167]
在本技术的一些实施例中,消息中间件系统还包括控制节点,步骤730之前,该方法还包括创建指定主题的过程。图10是根据本技术一实施例示出的创建指定主题的时序图。
[0168]
如图10所示,具体包括:在代理节点启动后,执行步骤1010,向控制节点发送主题创建请求。主题创建请求用于指示控制节点创建用于存储偏移量记录的主题。
[0169]
控制节点在接收到主题创建请求,执行步骤1020,创建指定主题。具体在创建过程中,该控制节点一方面需要对创建的主题进行命名,例如主题名称可以是brokerid-offset,另一方面,需要设定该指定主题下的分区,以及分区所在的代理节点,并将该指定主题与该指定主题下的分区所在的代理节点相关联。指定主题创建完成后,执行步骤1030,返回创建结果。该创建结果包括指定主题对应的主题标识,主题标识例如指定主题的主题名称。该创建结果还可以包括该指定主题下各个分区的分区信息,例如分区所在的代理节点等。
[0170]
在本技术的一些实施例中,控制节点可以通过心跳信息将指定主题的主题信息(创建结果)发送到代理节点。在完成指定主题创建后,代理节点可以按照图7的过程将代理节点中各消息的偏移量写入到指定主题中。
[0171]
在本技术的一些实施例中,各个代理节点中的指定主题可以相同,则仅需要一个代理节点发送指示创建指定主题的主题创建请求,由于控制节点需要实时与各个代理节点维持心跳连接,因此,控制节点可以通过心跳信息将所创建指定主题的主题信息通过心跳同步到各个代理节点。当然,在其他实施例中,各个代理节点中的指定主题也可以不同,
[0172]
在按照图10所示的过程完成指定主题的创建并在控制节点中完成注册后,各个代理节点可以对应将自身中被处理消息的偏移量存储到该指定主题下的分区中,提供进行消息处理位置回拨的数据基础。
[0173]
以下介绍本技术的装置实施例,可以用于执行本技术上述实施例中的方法。对于本技术装置实施例中未披露的细节,请参照本技术上述方法实施例。
[0174]
图11是根据一实施例示出的消息处理位置回拨的装置的框图,该消息处理位置回
拨的装置可以应用于消息中间件系统的管理节点,消息中间件系统还包括代理节点,如图11所示,该消息处理位置回拨的装置包括:位置回拨请求获取模块1110,用于获取位置回拨请求,位置回拨请求指示了目标时间信息和偏移量索引信息,偏移量索引信息包括目标主题标识;消息查询请求模块1120,用于请求与目标主题标识关联的代理节点在指定主题下的分区中进行消息查询,获得与目标时间信息相关联的目标消息,指定主题下的分区用于存储偏移量记录;偏移量记录查询模块1130,用于根据偏移量索引信息在目标消息中进行偏移量记录查询,获得目标偏移量记录,目标偏移量记录包括目标节点标识和目标偏移量;回拨请求模块1140,用于请求目标节点标识所指示的代理节点将消息处理位置回拨到目标偏移量所指示的位置。
[0175]
在本技术的一些实施例中,位置回拨请求包括生产位置回拨请求,目标偏移量包括目标生产偏移量,消息处理位置包括生产位置;消息处理位置回拨的装置还包括:目标生产偏移量获取模块,用于从目标偏移量记录中获取目标生产偏移量;在该实施例中,回拨请求模块1140进一步被配置为:请求目标节点标识所指示的代理节点将生产位置回拨到目标生产偏移量所指示的位置。
[0176]
在本技术的另一些实施例中,位置回拨请求包括消费位置回拨请求,目标偏移量包括目标消费偏移量,消息处理位置包括消费位置;消息处理位置回拨的装置还包括:目标消费偏移量获取模块,用于从目标偏移量记录中获取目标消费偏移量;在该实施例中,回拨请求模块1140进一步被配置为:请求目标节点标识所指示的代理节点将消费位置回拨到目标消费偏移量所指示的位置。
[0177]
在本技术的一些实施例中,偏移量索引信息包括目标消费组标识,回拨请求模块1140进一步被配置为:根据消费组标识和目标消费偏移量,向目标节点标识所指示的代理节点发送消费位置回拨指令;消费位置回拨指令用于指示目标节点标识所指示的代理节点,将目标消费组标识所指示消费组的消费位置回拨到目标消费偏移量所指示的位置。
[0178]
在本技术的一些实施例中,消息中间件系统还包括控制节点,消息处理位置回拨的装置还包括:代理节点查询模块,用于请求控制节点根据目标主题标识进行代理节点查询,确定与目标主题标识关联的代理节点。
[0179]
图12是根据本技术另一实施例示出的消息处理位置回拨的装置的框图,该消息处理位置回拨的装置可以应用于消息中间件系统的代理节点,该消息中间件系统还包括管理节点,如图12所示,该消息处理位置回拨的装置包括:位置回拨指令接收模块1210,用于接收管理节点发送的位置回拨指令,位置回拨指令指示了目标偏移量;位置回拨模块1220,用于响应于位置回拨指令,将消息处理位置回拨到目标偏移量所指示的位置。其中,位置回拨指令是管理节点在获得目标偏移量记录后,根据目标偏移量记录中的目标偏移量向目标偏移量记录中的目标节点标识所指示的代理节点发送的;目标偏移量记录是根据偏移量索引信息在目标消息中查询获得的;目标消息是管理节点在接收到位置回拨请求后,请求与目标主题标识相关联的代理节点在指定主题下的分区中进行消息查询,所得到与目标时间信息相关联的消息;位置回拨请求指示了目标时间信息和偏移量索引信息,偏移量索引信息包括目标主题标识;指定主题下的分区用于存储偏移量记录。
[0180]
在本技术的一些实施例中,消息处理位置回拨的装置还包括:消息查询请求接收模块,用于接收管理节点根据目标时间信息发送的消息查询请求,消息查询请求指示了目
标时间信息;消息查询请求是管理节点在接收到位置回拨请求后,向与目标主题标识关联的代理节点发送的;目标消息确定模块,用于根据目标时间信息在指定主题下的分区中进行消息查询,获得与目标时间信息相关联的目标消息;目标消息返回模块,用于向管理节点返回目标消息。
[0181]
在本技术的一些实施例中,消息处理位置回拨的装置还包括:偏移量获取模块,用于获取被处理消息的偏移量;偏移量记录生成模块,用于根据被处理消息所在分区的分区标识、所属主题的主题标识和所在代理节点的节点标识和偏移量生成偏移量记录;消息封装模块,用于根据偏移量记录、指定主题对应的主题标识、指定主题下指定分区对应的分区标识和写入时间信息进行消息封装;写入模块,用于将封装得到的消息写入指定主题下的指定分区中。
[0182]
在本技术的一些实施例中,被处理消息的偏移量包括相同时间点下同一分区中被消费消息的消费偏移量和被生产消息的生产偏移量;偏移量记录生成模块进一步被配置为:组合被处理消息所在分区的分区标识、所属主题的主题标识、所在代理节点的节点标识、被消费消息的消费偏移量和被生产消息的生产偏移量,得到偏移量记录。
[0183]
在本技术的一些实施例中,消息封装模块,包括:获取单元,用于获取归属于同一消费组的至少两条偏移量记录;组合单元,用于组合至少两条偏移量记录和至少两条偏移量记录所对应消费组的消费组标识,得到消息体;封装单元,用于将所写入时间信息、指定主题对应的主题标识、指定主题下指定分区对应的分区标识和消息体封装为消息。
[0184]
在本技术的一些实施例中,消息处理位置回拨的装置还包括:主题创建请求发送模块,用于向控制节点发送主题创建请求,主题创建请求用于指示控制节点创建用于存储偏移量记录的主题;创建结果接收模块,用于接收控制节点响应于主题创建请求返回的创建结果,创建结果包括指定主题对应的主题标识。
[0185]
图13示出了适于用来实现本技术实施例的电子设备的计算机系统的结构示意图。需要说明的是,图13示出的电子设备的计算机系统1300仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
[0186]
如图13所示,计算机系统1300包括中央处理单元(central processing unit,cpu)1301,其可以根据存储在只读存储器(read-only memory,rom)1302中的程序或者从存储部分1308加载到随机访问存储器(random access memory,ram)1303中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在ram 1303中,还存储有系统操作所需的各种程序和数据。cpu1301、rom1302以及ram 1303通过总线1304彼此相连。输入/输出(input/output,i/o)接口1305也连接至总线1304。
[0187]
以下部件连接至i/o接口1305:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(cathode ray tube,crt)、液晶显示器(liquid crystal display,lcd)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如lan(local area network,局域网)卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至i/o接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
[0188]
特别地,根据本技术的实施例,上文参考流程图描述的过程可以被实现为计算机
软件程序。例如,本技术的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被中央处理单元(cpu)1301执行时,执行本技术的系统中限定的各种功能。
[0189]
需要说明的是,本技术实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(erasable programmable read only memory,eprom)、闪存、光纤、便携式紧凑磁盘只读存储器(compact disc read-only memory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0190]
附图中的流程图和框图,图示了按照本技术各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这由所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0191]
描述于本技术实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
[0192]
作为另一方面,本技术还提供了一种计算机可读存储介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载计算机可读指令,当该计算机可读存储指令被处理器执行时,实现上述任一实施例中的方法。
[0193]
根据本技术的一个方面,还提供了一种电子设备,其包括:处理器;存储器,存储器上存储有计算机可读指令,计算机可读指令被处理器执行时,实现上述任一实施例中的方
法。
[0194]
根据本技术实施例的一个方面,提供了计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一实施例中的方法。
[0195]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本技术的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0196]
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本技术实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本技术实施方式的方法。
[0197]
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。
[0198]
应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1