CN115202898A - 消息消费方法、装置、计算机设备和存储介质 - Google Patents
消息消费方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115202898A CN115202898A CN202110396874.3A CN202110396874A CN115202898A CN 115202898 A CN115202898 A CN 115202898A CN 202110396874 A CN202110396874 A CN 202110396874A CN 115202898 A CN115202898 A CN 115202898A
- Authority
- CN
- China
- Prior art keywords
- offset
- message
- consumed
- target
- coordination service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000002159 abnormal effect Effects 0.000 claims abstract description 39
- 238000005192 partition Methods 0.000 claims description 35
- 230000005856 abnormality Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 11
- 238000004458 analytical method Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 10
- 230000009471 action Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请涉及一种消息消费方法、装置、计算机设备和存储介质。方法包括:在消息处理平台从异常状态恢复正常之后,获取分布式协调服务集群中当前保存的第一偏移量;获取分布式事务集群中目标消息队列对应的第二偏移量;获取并消费目标消息队列中,位于第一偏移量与第二偏移量之间各偏移量对应的待消费消息;发送第二偏移量至分布式协调服务集群,分布式协调服务集群将当前保存的偏移量更新为第二偏移量。在消息处理平台从异常状态恢复正常后,通过从分布式协调服务集群中获取消费进度,避免由于待消费消息定位不准,导致浪费资源对已消费的消息进行再次消费,或者遗漏需要消费的待消费消息导致数据丢失的情况。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种消息消费方法、装置、计算机设备和存储介质。
背景技术
随着各大公司对数据的实时要求越来越高,实时存储、消费、实时计算已经在各大公司非常普遍,因此kafka被非常广泛应用。Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息***,它可以处理消费者在网站中的所有动作流数据。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。
然而现有技术中当通过SparkSteaming应用程序消费kafka数据过程中出现消费异常时,无法准确获知消费任务的执行情况,无法在异常解除后准确定位待消费的数据,从而导致数据丢失的情况。
发明内容
为了解决上述技术问题,本申请提供了一种消息消费方法、装置、计算机设备和存储介质。
第一方面,本申请提供了一种消息消费方法,包括:
在消息处理平台从异常状态恢复正常之后,获取分布式协调服务集群中当前保存的第一偏移量,其中,所述第一偏移量用于表示所述消息处理平台在发生异常前,对目标消息队列中消息的消费进度;
获取分布式事务集群中所述目标消息队列对应的第二偏移量,其中,所述第二偏移量用于表示所述目标消息队列中最后一个待消费的消息;
获取并消费所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息;
在所有位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息消费结束后,发送所述第二偏移量至所述分布式协调服务集群,其中,所述分布式协调服务集群用于在接收到所述第二偏移量的情况下将当前保存的偏移量更新为所述第二偏移量。
可选地,在消息处理平台从异常状态恢复正常之后,所述方法还包括:
在从所述分布式协调服务集群中获取当前保存的第一偏移量时获取失败的情况下,发送预设偏移量至所述分布式协调服务集群,其中,所述分布式协调服务集群用于在接收到所述预设偏移量的情况下将当前保存的偏移量更新为所述预设偏移量。
可选地,在位于所述第一偏移量与所述第二偏移量之间任意偏移量对应的待消费消息消费异常的情况下,所述方法还包括:
检测所述消息处理平台的状态是否恢复正常,其中,待发送至所述分布式协调服务集群的所述第二偏移量会在所述消息处理平台处于异常的情况下被取消发送;
在所述消息处理平台从异常状态恢复正常之后,执行所述获取分布式协调服务集群中当前保存的第一偏移量的步骤。
可选地,所述位于所述第一偏移量与所述第二偏移量之间任意偏移量对应的待消费消息消费异常,包括:
在所述第一偏移量与所述第二偏移量之间任意偏移量对应的待消费消息被消费的过程中,在存在空指针异常、所述待消费消息解析异常、所述待消费消息读取异常、所述待消费消息对应的消费任务被强制结束中至少一种情况下,确定所述待消费消息消费异常。
可选地,所述分布式协调服务集群中包括多个第一消息标签,所述第一消息标签对应多个第一分区,每个所述第一分区对应一个所述第一偏移量,所述获取分布式协调服务集群中当前保存的第一偏移量,包括按照如下方式获取每个所述第一消息标签对应的所述第一偏移量:
获取所述分布式协调服务集群中保存的第一目标标签对应的多个第一目标分区,其中,所述第一目标标签为所述多个第一消息标签中当前处理的消息标签;
获取所述分布式协调服务集群中各个所述第一目标分区对应的第一偏移量,其中,每个所述第一目标分区对应的第一偏移量用于表示一个目标消息队列中消息的消费进度。
可选地,所述分布式事务集群中包括与所述第一消息标签对应的第二消息标签,所述第二消息标签对应多个消息存储队列,每个消息存储队列对应一个所述第一分区,每个所述消息存储队列包括多个待消费消息,每个所述待消费消息携带对应的偏移量,所述获取所述分布式事务集群中的第二偏移量,包括按照如下方式获取每个与所述第一消息标签对应的第二偏移量:
获取所述分布式事务集群中第二目标标签对应的多个目标消息队列,所述第二目标标签为所述分布式事务集群中与所述第一目标标签对应的第二消息标签,所述目标消息队列为所述第二目标标签对应的消息存储队列;
在各个所述目标消息队列对应的多个偏移量中选取各个所述第二目标消息队列对应的第二偏移量,其中,所述第二偏移量用于表示所述第二目标消息队列中最后一个待消费的消息。
可选地,所述获取并消费所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息,包括:
获取并消费所述第二目标标签对应的各个所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息。
第二方面,本申请提供了一种消息消费装置,包括:
第一获取模块,用于在消息处理平台从异常状态恢复正常之后,获取分布式协调服务集群中当前保存的第一偏移量,其中,所述第一偏移量用于表示所述消息处理平台在发生异常前,对目标消息队列中消息的消费进度;
第二获取模块,用于获取分布式事务集群中所述目标消息队列对应的第二偏移量,其中,所述第二偏移量用于表示所述目标消息队列中最后一个待消费的消息;
消费模块,用于获取并消费所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息;
消费进度存储模块,用于在所有位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息消费结束后,发送所述第二偏移量至所述分布式协调服务集群,其中,所述分布式协调服务集群用于在接收到所述第二偏移量的情况下将当前保存的偏移量更新为所述第二偏移量。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
在消息处理平台从异常状态恢复正常之后,获取分布式协调服务集群中当前保存的第一偏移量,其中,所述第一偏移量用于表示所述消息处理平台在发生异常前,对目标消息队列中消息的消费进度;
获取分布式事务集群中所述目标消息队列对应的第二偏移量,其中,所述第二偏移量用于表示所述目标消息队列中最后一个待消费的消息;
获取并消费所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息;
在所有位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息消费结束后,发送所述第二偏移量至所述分布式协调服务集群,其中,所述分布式协调服务集群用于在接收到所述第二偏移量的情况下将当前保存的偏移量更新为所述第二偏移量。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
在消息处理平台从异常状态恢复正常之后,获取分布式协调服务集群中当前保存的第一偏移量,其中,所述第一偏移量用于表示所述消息处理平台在发生异常前,对目标消息队列中消息的消费进度;
获取分布式事务集群中所述目标消息队列对应的第二偏移量,其中,所述第二偏移量用于表示所述目标消息队列中最后一个待消费的消息;
获取并消费所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息;
在所有位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息消费结束后,发送所述第二偏移量至所述分布式协调服务集群,其中,所述分布式协调服务集群用于在接收到所述第二偏移量的情况下将当前保存的偏移量更新为所述第二偏移量。
基于上述方法,在消息处理平台从异常状态恢复正常之后,从分布式事务集群中读取消息处理平台在发生异常之前的消息消费进度,从而准确定位消费起点,从分布式事务集群中获取最新接收到的待消费消息,从而确定消费截止点,将消费起点至消费截止点内所有待消费消息进行消费,在全部待消费消息消费结束后,消息处理平台将消费截止点对应的第二偏移量保存至分布式协调服务集群中,保证消息处理平台可从分布式协调服务集群中获取最新的消费进度,避免消息处理平台出现消费异常的情况下无法准确获知消费任务的执行进度,在消息处理平台从异常状态恢复正常后,通过从分布式协调服务集群中获取消费进度,避免由于待消费消息定位不准,导致浪费资源对已消费的消息进行再次消费,或者遗漏需要消费的待消费消息导致数据丢失的情况。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中消息消费方法的应用环境图;
图2为一个实施例中消息消费方法的流程示意图;
图3为一个实施例中一种参数关系示意图;
图4为一个实施例中一种参数关系示意图;
图5为一个实施例中消息消费装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为一个实施例中消息消费方法的应用环境图。参照图1,该消息消费方法应用于消息消费***。该消息消费***包括消息处理平台110、分布式事务集群120和分布式协调服务集群130。消息处理平台用于获取并消费分布式事务集群中的消息,消息处理平台具体可以为但不仅限于Storm、Trident、Spark SQL、Spark Streaming、Samza、Flink等;分布式事务集群用于为消息处理平台提供需要消费的消息,分布式事务集群具体可以为但不仅限于RabbitMQ、Redis、ZeroMQ、ActiveMQ、kafka、RocketMQ等;分布式协调服务集群用于实时保存消息处理平台的消费进度,分布式协调服务集群具体可以为但不仅限于Zookeeper或Etcd。
在一个实施例中,图2为一个实施例中一种消息消费方法的流程示意图,参照图2,提供了一种消息消费方法。本实施例主要以该方法应用于上述图1中的消息处理平台110来举例说明,该消息消费方法具体包括如下步骤:
步骤S210,在消息处理平台从异常状态恢复正常之后,获取分布式协调服务集群中当前保存的第一偏移量。
在本实施例中,消息处理平台具体为SparkStreaming平台,分布式协调服务集群具体为Zookeeper集群,消息处理平台处于异常状态下无法正常消费消息,实时监测消息处理平台的状态,在消息处理平台从异常状态恢复至正常状态后,从分布式协调服务集群中读取当前保存的第一偏移量,所述第一偏移量用于表示所述消息处理平台在发生异常前对目标消息队列中消息的消费进度,目标消息队列用于表示分布式事务集群中消息的集合,此处分布式事务集群具体为kafka集群,每个消息携带对应的偏移量,偏移量记为Offset,根据第一偏移量即可得知消息处理平台在发生异常前的消费节点,即位于第一偏移量之后的偏移量对应的消息均需要消费,由此可准确定位消息处理平台的消费起点。
步骤S220,获取分布式事务集群中所述目标消息队列对应的第二偏移量。
在本实施例中,所述第二偏移量用于表示所述目标消息队列中最后一个待消费的消息,也就是表示目标消息队列中最新接收到的消息,即第二偏移量为目标消息队列中最新接收到的消息对应的偏移量,根据第二偏移量确定消息处理平台需要消费消息的消费截止点。
步骤S230,获取并消费所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息。
在本实施例中,在目标消息队列中,依照排序位于第一偏移量与第二偏移量之间各偏移量对应的消息,均为消息处理平台需要消费的消息,SparkStreaming平台消费kafka集群中的消息,就是先把消息从kafka集群中读取出来,然后缓存到SparkStreaming平台的内存中定时进行消费处理。
步骤S240,在所有位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息消费结束后,发送所述第二偏移量至所述分布式协调服务集群,其中,所述分布式协调服务集群用于在接收到所述第二偏移量的情况下将当前保存的偏移量更新为所述第二偏移量。
在本实施例中,在消息处理平台对所有待消费消息消费结束后,就将第二偏移量保存至分布式协调服务集群中,将分布式协调服务集群中当前保存的第一偏移量更新为第二偏移量,及时更新记录消息处理平台对分布式事务集群中消息的消费进度,避免消息处理平台发生异常状态无法准确定位需要消费的消息,避免由于待消费消息定位不准,导致浪费资源对已消费的消息进行再次消费,或者遗漏需要消费的待消费消息导致数据丢失的情况。
在一个实施例中,在消息处理平台从异常状态恢复正常之后,所述方法还包括:在从所述分布式协调服务集群中获取当前保存的第一偏移量时获取失败的情况下,发送预设偏移量至所述分布式协调服务集群,其中,所述分布式协调服务集群用于在接收到所述预设偏移量的情况下将当前保存的偏移量更新为所述预设偏移量。
在本实施例中,从分布式协调服务集群中获取当前保存的第一偏移量失败,表示分布式协调服务集群中不存在第一偏移量,也就是说消息处理平台在发生异常前并未消费消息,并未产生消费进度;消息处理平台在发生异常后无法正常消费消息,无法将消费异常的消费进度保存至分布式协调服务集群中。
在分布式协调服务集群中不存在第一偏移量的情况下,消息处理平台发送预设偏移量至分布式协调服务集群,分布式协调服务集群在接收到预设偏移量的情况下,创建第一消息标签,并将预设偏移量设置为第一消息标签对应的偏移量,第一消息标签对应的偏移量作为当前保存的偏移量,预设偏移量通常设定为0,后续消息处理平台根据预设偏移量确定待消费消息的消费起点,即消息处理平台将从目标消息队列中最早接收到的消息开始消费。
在一个实施例中,在位于所述第一偏移量与所述第二偏移量之间任意偏移量对应的待消费消息消费异常的情况下,所述方法还包括:检测所述消息处理平台的状态是否恢复正常,其中,待发送至所述分布式协调服务集群的所述第二偏移量会在所述消息处理平台处于异常的情况下被取消发送;在所述消息处理平台从异常状态恢复正常之后,执行所述获取分布式协调服务集群中当前保存的第一偏移量的步骤。
在本实施例中,由于待消费消息消费异常,将消费异常的全部待消费消息作为未消费的消息,也就是说消息处理平台对分布式事务集群中消息的消费进度并无变化,取消发送第二偏移量至分布式协调服务集群,不对分布式协调服务集群中保存的消费进度进行更新,实时检测消息处理平台是否恢复正常状态,在消息处理平台恢复正常状态后,重新根据分布式协调服务集群准确定位消费处理平台需要消费消息的消费起点,按照上述实施例中的步骤进行消费。
在一个实施例中,所述位于所述第一偏移量与所述第二偏移量之间任意偏移量对应的待消费消息消费异常,包括:在所述第一偏移量与所述第二偏移量之间任意偏移量对应的待消费消息被消费的过程中,在存在空指针异常、所述待消费消息解析异常、所述待消费消息读取异常、所述待消费消息对应的消费任务被强制结束中至少一种情况下,确定所述待消费消息消费异常。
在本实施例中,待消费消息被消费过程中出现空指针异常、所述待消费消息解析异常、所述待消费消息读取异常、所述待消费消息对应的消费任务被强制结束等中至少一种情况,确定消息处理平台状态异常无法正常消费待消费消息。空指针异常是指当一个对象不存在时又调用其方法会产生异常,或当访问或修改一个对象不存在的字段时会产生异常。消息解析异常是指解析得到的数据与预设的数据不匹配,具体包括但不仅限于格式不匹配、解析后的数据含有非法字符、类型转换不匹配等。
在一个实施例中,参照图3,所述分布式协调服务集群中包括多个第一消息标签,所述第一消息标签对应多个第一分区,每个所述第一分区对应一个所述第一偏移量,所述获取分布式协调服务集群中当前保存的第一偏移量,包括按照如下方式获取每个所述第一消息标签对应的所述第一偏移量:获取所述分布式协调服务集群中保存的第一目标标签对应的多个第一目标分区,其中,所述第一目标标签为所述多个第一消息标签中当前处理的消息标签;获取所述分布式协调服务集群中各个所述第一目标分区对应的第一偏移量,其中,每个所述第一目标分区对应的第一偏移量用于表示一个目标消息队列中消息的消费进度。
在本实施例中,消息标签记为Topic,用于表示消息的类别,发布者发布一条消息必须指定Topic,订阅者通过订阅Topic就能消费此类别的消息。分区记为Partition,每个Topic对应至少一个Partition,第一消息标签为分布式协调服务集群中的消息标签,第一分区为第一消息标签对应的分区,消息处理平台从分布式协调服务集群中读取第一目标标签下各个第一目标分区对应的第一偏移量,第一目标分区为第一目标标签对应的第一分区,每个第一分区记录一个消息存储队列中消息的消费进度,即第一目标标签对应记录有多个目标消息队列的消费进度。
在一个实施例中,参照图4,所述分布式事务集群中包括与所述第一消息标签对应的第二消息标签,所述第二消息标签对应多个消息存储队列,每个消息存储队列对应一个所述第一分区,每个所述消息存储队列包括多个待消费消息,每个所述待消费消息携带对应的偏移量,所述获取所述分布式事务集群中的第二偏移量,包括按照如下方式获取每个与所述第一消息标签对应的第二偏移量:获取所述分布式事务集群中第二目标标签对应的多个目标消息队列,所述第二目标标签为所述分布式事务集群中与所述第一目标标签对应的第二消息标签,所述目标消息队列为所述第二目标标签对应的消息存储队列;在各个所述目标消息队列对应的多个偏移量中选取各个所述第二目标消息队列对应的第二偏移量,其中,所述第二偏移量用于表示所述第二目标消息队列中最后一个待消费的消息。
在本实施例中,在分布式事务集群中,将与第一目标消息标签对应的第二消息标签作为第二目标标签,获取第二目标标签对应的多个目标消息队列,每个目标消息队列包括多个待消费消息,其中每个待消费消息携带对应的偏移量,在目标消息队列对应的多个偏移量中选择第二偏移量,第二偏移量为目标消息队列中最新接收到的消息对应的偏移量,如图4中的偏移量N为最新接收到的消息对应的偏移量,将偏移量N作为第二偏移量,图4中仅对一个消息存储队列进行示例性说明,其余消息存储队列与偏移量之间的对应关系与消息存储队列01同理,每个目标消息队列根据各自对应的第一偏移量和第二偏移量确定需要执行消费任务的待消费消息,消息处理平台可对每个目标消息队列中的待消费消息同时进行消费,从而提高了消费效率。
将Topic划分为多个Partition可实现消息存储扩容的效果,由于一个文件的存储大小是有限的,但在集群中的多个文件的存储就可以大大增加一个topic能够保存的消息数量。通过多个partition文件存储消息,从而使发布者和消费者可以并行的读写一个Topic,实现并行读写的效果。
在一个实施例中,所述获取并消费所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息,包括:获取并消费所述第二目标标签对应的各个所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息。
在本实施例中,消息处理平台对同一消息标签下的多个目标消息队列同时执行消费任务,从而提高消费效率,目标消息队列按照第一偏移量和第二偏移量确定消费起点和消费截止点,可快速准确定位需要消费的待消费消息,避免重复消费导致资源浪费,以及避免消费遗漏导致数据丢失。
图2为一个实施例中消息消费方法的流程示意图。应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种消息消费装置,包括:
第一获取模块310,用于在消息处理平台从异常状态恢复正常之后,获取分布式协调服务集群中当前保存的第一偏移量,其中,所述第一偏移量用于表示所述消息处理平台在发生异常前,对目标消息队列中消息的消费进度;
第二获取模块320,用于获取分布式事务集群中所述目标消息队列对应的第二偏移量,其中,所述第二偏移量用于表示所述目标消息队列中最后一个待消费的消息;
消费模块330,用于获取并消费所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息;
消费进度存储模块340,用于在所有位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息消费结束后,发送所述第二偏移量至所述分布式协调服务集群,其中,所述分布式协调服务集群用于在接收到所述第二偏移量的情况下将当前保存的偏移量更新为所述第二偏移量。
在一个实施例中,在消息处理平台从异常状态恢复正常之后,所述装置还包括:
偏移量设置模块,用于在从所述分布式协调服务集群中获取当前保存的第一偏移量时获取失败的情况下,发送预设偏移量至所述分布式协调服务集群,其中,所述分布式协调服务集群用于在接收到所述预设偏移量的情况下将当前保存的偏移量更新为所述预设偏移量。
在一个实施例中,在位于所述第一偏移量与所述第二偏移量之间任意偏移量对应的待消费消息消费异常的情况下,所述装置还包括状态监测模块,状态监测模块用于:
检测所述消息处理平台的状态是否恢复正常,其中,待发送至所述分布式协调服务集群的所述第二偏移量会在所述消息处理平台处于异常的情况下被取消发送;
在消息处理平台从异常状态恢复正常之后,执行所述获取分布式协调服务集群中当前保存的第一偏移量的步骤。
在一个实施例中,所述状态监测模块还用于:
在所述第一偏移量与所述第二偏移量之间任意偏移量对应的待消费消息被消费的过程中,在存在空指针异常、所述待消费消息解析异常、所述待消费消息读取异常、所述待消费消息对应的消费任务被强制结束中至少一种情况下,确定所述待消费消息消费异常。
在一个实施例中,所述分布式协调服务集群中包括多个第一消息标签,所述第一消息标签对应多个第一分区,每个所述第一分区对应一个所述第一偏移量,所述第一获取模块310还用于按照如下方式获取每个所述第一消息标签对应的所述第一偏移量:
获取所述分布式协调服务集群中保存的第一目标标签对应的多个第一目标分区,其中,所述第一目标标签为所述多个第一消息标签中当前处理的消息标签;
获取所述分布式协调服务集群中各个所述第一目标分区对应的第一偏移量,其中,每个所述第一目标分区对应的第一偏移量用于表示一个目标消息队列中消息的消费进度。
在一个实施例中,所述分布式事务集群中包括与所述第一消息标签对应的第二消息标签,所述第二消息标签对应多个消息存储队列,每个消息存储队列对应一个所述第一分区,每个所述消息存储队列包括多个待消费消息,每个所述待消费消息携带对应的偏移量,所述第二获取模块320还用于按照如下方式获取每个与所述第一消息标签对应的第二偏移量:
获取所述分布式事务集群中第二目标标签对应的多个目标消息队列,所述第二目标标签为所述分布式事务集群中与所述第一目标标签对应的第二消息标签,所述目标消息队列为所述第二目标标签对应的消息存储队列;
在各个所述目标消息队列对应的多个偏移量中选取各个所述第二目标消息队列对应的第二偏移量,其中,所述第二偏移量用于表示各个所述第二目标消息队列中最后一个待消费的消息。
在一个实施例中,消费模块330还用于:
获取并消费所述第二目标标签对应的各个所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息。
图6示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端110(或服务器120)。如图6所示,该计算机设备包括该计算机设备包括通过***总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作***,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现消息消费方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行消息消费方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的消息消费装置可以实现为一种计算机程序的形式,计算机程序可在如图6所示的计算机设备上运行。计算机设备的存储器中可存储组成该消息消费装置的各个程序模块,比如,图5所示的第一获取模块、第二获取模块、消费模块和消费进度存储模块。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的消息消费方法中的步骤。
图6所示的计算机设备可以通过如图5所示的消息消费装置中的第一获取模块执行在消息处理平台从异常状态恢复正常之后,获取分布式协调服务集群中当前保存的第一偏移量,其中,所述第一偏移量用于表示所述消息处理平台在发生异常前,对目标消息队列中消息的消费进度。计算机设备可通过第二获取模块执行获取分布式事务集群中所述目标消息队列对应的第二偏移量,其中,所述第二偏移量用于表示所述目标消息队列中最后一个待消费的消息。计算机设备可通过消费模块执行获取并消费所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息。计算机设备可通过消费进度存储模块执行在所有位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息消费结束后,发送所述第二偏移量至所述分布式协调服务集群,其中,所述分布式协调服务集群用于在接收到所述第二偏移量的情况下将当前保存的偏移量更新为所述第二偏移量。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一项实施例所述的方法。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一项实施例所述的方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指示相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍速率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种消息消费方法,其特征在于,所述方法包括:
在消息处理平台从异常状态恢复正常之后,获取分布式协调服务集群中当前保存的第一偏移量,其中,所述第一偏移量用于表示所述消息处理平台在发生异常前,对目标消息队列中消息的消费进度;
获取分布式事务集群中所述目标消息队列对应的第二偏移量,其中,所述第二偏移量用于表示所述目标消息队列中最后一个待消费的消息;
获取并消费所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息;
在所有位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息消费结束后,发送所述第二偏移量至所述分布式协调服务集群,其中,所述分布式协调服务集群用于在接收到所述第二偏移量的情况下将当前保存的偏移量更新为所述第二偏移量。
2.根据权利要求1所述的方法,其特征在于,在消息处理平台从异常状态恢复正常之后,所述方法还包括:
在从所述分布式协调服务集群中获取当前保存的第一偏移量时获取失败的情况下,发送预设偏移量至所述分布式协调服务集群,其中,所述分布式协调服务集群用于在接收到所述预设偏移量的情况下将当前保存的偏移量更新为所述预设偏移量。
3.根据权利要求1所述的方法,其特征在于,在位于所述第一偏移量与所述第二偏移量之间任意偏移量对应的待消费消息消费异常的情况下,所述方法还包括:
检测所述消息处理平台的状态是否恢复正常,其中,待发送至所述分布式协调服务集群的所述第二偏移量会在所述消息处理平台处于异常的情况下被取消发送;
在所述消息处理平台从异常状态恢复正常之后,执行所述获取分布式协调服务集群中当前保存的第一偏移量的步骤。
4.根据权利要求3所述的方法,其特征在于,所述位于所述第一偏移量与所述第二偏移量之间任意偏移量对应的待消费消息消费异常,包括:
在所述第一偏移量与所述第二偏移量之间任意偏移量对应的待消费消息被消费的过程中,在存在空指针异常、所述待消费消息解析异常、所述待消费消息读取异常、所述待消费消息对应的消费任务被强制结束中至少一种情况下,确定所述待消费消息消费异常。
5.根据权利要求1所述的方法,其特征在于,所述分布式协调服务集群中包括多个第一消息标签,所述第一消息标签对应多个第一分区,每个所述第一分区对应一个所述第一偏移量,所述获取分布式协调服务集群中当前保存的第一偏移量,包括按照如下方式获取每个所述第一消息标签对应的所述第一偏移量:
获取所述分布式协调服务集群中保存的第一目标标签对应的多个第一目标分区,其中,所述第一目标标签为所述多个第一消息标签中当前处理的消息标签;
获取所述分布式协调服务集群中各个所述第一目标分区对应的第一偏移量,其中,每个所述第一目标分区对应的第一偏移量用于表示一个目标消息队列中消息的消费进度。
6.根据权利要求5所述的方法,其特征在于,所述分布式事务集群中包括与所述第一消息标签对应的第二消息标签,所述第二消息标签对应多个消息存储队列,每个消息存储队列对应一个所述第一分区,每个所述消息存储队列包括多个待消费消息,每个所述待消费消息携带对应的偏移量,所述获取所述分布式事务集群中的第二偏移量,包括按照如下方式获取每个与所述第一消息标签对应的第二偏移量:
获取所述分布式事务集群中第二目标标签对应的多个目标消息队列,其中,所述第二目标标签为所述分布式事务集群中与所述第一目标标签对应的第二消息标签,所述目标消息队列为所述第二目标标签对应的消息存储队列;
在各个所述目标消息队列对应的多个偏移量中选取各个所述第二目标消息队列对应的第二偏移量,其中,所述第二偏移量用于表示所述第二目标消息队列中最后一个待消费的消息。
7.根据权利要求6所述的方法,其特征在于,所述获取并消费所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息,包括:
获取并消费所述第二目标标签对应的各个所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息。
8.一种消息消费装置,其特征在于,所述装置包括:
第一获取模块,用于在消息处理平台从异常状态恢复正常之后,获取分布式协调服务集群中当前保存的第一偏移量,其中,所述第一偏移量用于表示所述消息处理平台在发生异常前,对目标消息队列中消息的消费进度;
第二获取模块,用于获取分布式事务集群中所述目标消息队列对应的第二偏移量,其中,所述第二偏移量用于表示所述目标消息队列中最后一个待消费的消息;
消费模块,用于获取并消费所述目标消息队列中,位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息;
消费进度存储模块,用于在所有位于所述第一偏移量与所述第二偏移量之间各偏移量对应的待消费消息消费结束后,发送所述第二偏移量至所述分布式协调服务集群,其中,所述分布式协调服务集群用于在接收到所述第二偏移量的情况下将当前保存的偏移量更新为所述第二偏移量。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110396874.3A CN115202898A (zh) | 2021-04-13 | 2021-04-13 | 消息消费方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110396874.3A CN115202898A (zh) | 2021-04-13 | 2021-04-13 | 消息消费方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115202898A true CN115202898A (zh) | 2022-10-18 |
Family
ID=83571225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110396874.3A Pending CN115202898A (zh) | 2021-04-13 | 2021-04-13 | 消息消费方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115202898A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658347A (zh) * | 2022-11-04 | 2023-01-31 | 拉卡拉支付股份有限公司 | 数据消费方法、装置、电子设备、存储介质及程序产品 |
CN118036775A (zh) * | 2024-04-11 | 2024-05-14 | 腾讯科技(深圳)有限公司 | 联邦学习方法、装置、设备和存储介质 |
-
2021
- 2021-04-13 CN CN202110396874.3A patent/CN115202898A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658347A (zh) * | 2022-11-04 | 2023-01-31 | 拉卡拉支付股份有限公司 | 数据消费方法、装置、电子设备、存储介质及程序产品 |
CN118036775A (zh) * | 2024-04-11 | 2024-05-14 | 腾讯科技(深圳)有限公司 | 联邦学习方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107908494B (zh) | 异常事件的处理方法、装置、电子设备及存储介质 | |
CN108255620B (zh) | 一种业务逻辑处理方法、装置、业务服务器及*** | |
CN111026725A (zh) | 消费数据的数据处理方法、装置、计算机设备和存储介质 | |
CN110309109B (zh) | 数据监控方法、装置、计算机设备及存储介质 | |
CN111190753B (zh) | 分布式任务处理方法、装置、存储介质和计算机设备 | |
CN115202898A (zh) | 消息消费方法、装置、计算机设备和存储介质 | |
CN108446172B (zh) | 数据调取方法、装置、计算机设备和存储介质 | |
CN112948450B (zh) | 用于实时推荐的Flink流式处理引擎方法、装置及计算机设备 | |
CN111768097B (zh) | 任务执行状态监控方法、装置、***及存储介质 | |
CN112217864A (zh) | 微服务监控方法、装置、***、计算机设备和存储介质 | |
CN111475376A (zh) | 处理测试数据的方法、装置、计算机设备和存储介质 | |
CN112905323B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111078659A (zh) | 模型更新方法、装置、计算机可读存储介质和计算机设备 | |
CN111949389B (zh) | 基于Slurm的信息采集方法和装置、服务器、计算机可读存储介质 | |
CN111400294B (zh) | 数据异常监测方法、装置及*** | |
CN111258741A (zh) | 仓库任务执行的方法、分布式服务器集群及计算机设备 | |
JP2011070364A (ja) | 運用管理サーバ、ロールバック実行方法およびロールバック実行プログラム | |
CN112948096A (zh) | 一种批量调度方法、装置和设备 | |
CN115373886A (zh) | 服务群组容器停机方法、装置、计算机设备和存储介质 | |
CN112765188B (zh) | 配置信息处理方法、配置管理***、电子设备及存储介质 | |
CN115269252A (zh) | 应用程序故障处理方法、装置、设备及存储介质 | |
CN114253825B (zh) | 内存泄漏检测方法、装置、计算机设备和存储介质 | |
CN113176906A (zh) | 模型管理方法、装置、计算机设备和存储介质 | |
CN111611058A (zh) | 任务执行方法、装置及电子设备 | |
CN114884807B (zh) | 链路日志生成方法、装置、物联网平台及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |