一种分布式消息队列的消息消费的方法和系统技术方案

技术编号:21089220 阅读:41 留言:0更新日期:2019-05-11 09:50
本发明专利技术提供了一种分布式消息队列的消息消费的方法和系统,该方法包括:消费控制线程或消费常规线程发送一个分区的消息消费状态数据至消费进度协调装置;当所述消费进度协调装置根据所述消息消费状态数据判断各个所述分区在当前周期的全部消息均已消费完成时,所述消费控制线程将同步检查数据的当前周期切换为下一周期;各个所述消费控制线程和所述消费常规线程从所述消费进度协调装置获取所述同步检查数据;各个所述消费控制线程和所述消费常规线程对处于所述同步检查数据的周期内的消息进行消费本发明专利技术提供的分布式消息队列的消息消费的方法和系统,基于特定的业务需求,有些场景需要严格按照时间周期统计,特别是重新计算数据时,不能跨周期统计,否则会造成统计误差,本发明专利技术的分布式消息队列的消息消费的方法和系统也非常适用于这种场景。

【技术实现步骤摘要】
一种分布式消息队列的消息消费的方法和系统
本专利技术涉及信息
,尤其涉及一种分布式消息队列的消息消费的方法和系统。
技术介绍
在实时计算中,由于分布式消息队列的设计原理,单个分区里消息是顺序的,分区之间是独立的,每个分区的消息数量不一致和每个消费线程消费速度不一致,就会造成从读取日志到日志计算时消息时序是不一致。比如,分区1的消息时间已经到消费到6:00了,而分区2由于消息比较多,堆积比较严重,可能只消费到5:50分,分区之间差了10分钟甚至更长的时间。在消息时间顺序不敏感的计算场景中,可以忽略日志的时间差异带来的影响。但是,有些业务需求对时间顺序要求比较严格,很难接受消息乱序导致统计结果差异。比如,用户在23:55分充值订单,可能因为堆积延迟,在00:05分的消息之后才被处理,会被统计到不同的周期里。watermark是现在最常见的处理分布式消息队列消费时序问题的解决方案,这种方案在很多实时处理框架中都有实现。watermark在使用时,可以理解为一个延迟的时间,即任务延迟多长时间触发。如果我们要每分钟计算一次,watermark设置为(当前时间-10)秒,则会在每个分钟的10秒触发上个时间段的任务计算。所以,正常情况下不会设置太大的watermark,否则会造成统计延迟很大。watermark方案的方式是通过设置一个能够容忍延迟时间来解决日志乱序的问题,这种解决方式,在需要严格时序的场景中,也会造成统计误差。特别是在如果实时统计程序异常退出后,需要恢复从之前某个时段的数据,消费速度的不一致会造成即使使用watermark方式也不能解决问题,因为容忍的乱序时间窗口大小不会放的很大。还有一种场景就是如果实时处理因为数据堆积造成的延迟,在设置了watermark后,会造成堆积的日志会被忽略,造成日志没有正确的计算。重排序的思想是把已经消费的数据在计算前进行一次排序,这种解决方式只能解决当前执行批次内的数据的有序性,也是不能从根本上解决消费速度不一致的问题。
技术实现思路
本专利技术的一个目的是提供一种分布式消息队列的消息消费的方法和系统,以解决对各个分布式消息队列进行消费时,协调消费速度的问题。本专利技术提供的分布式消息队列的消息消费的方法,包括:消费控制线程或消费常规线程发送一个分区的消息消费状态数据至消费进度协调装置;当所述消费进度协调装置根据所述消息消费状态数据判断各个所述分区在当前周期的全部消息均已消费完成时,所述消费控制线程将同步检查数据的当前周期切换为下一周期;各个所述消费控制线程和所述消费常规线程从所述消费进度协调装置获取所述同步检查数据;各个所述消费控制线程和所述消费常规线程对处于所述同步检查数据的周期内的消息进行消费。进一步,本专利技术所述的方法,还包括:通过所述消费控制线程在所述同步检查数据设置时间检查点;在时间达到所述时间检查点时,所述消费常规线程和消费控制线程根据所述消息消费状态数据判断各个所述分区在当前周期的全部消息是否消费完成。进一步,本专利技术所述的方法,还包括:在时间达到所述时间检查点时,所述消费控制线程发送所述消息消费状态数据至所述消费进度协调装置并且从所述消费进度协调装置获取所述同步检查数据。进一步,本专利技术所述的方法,所述消息消费状态数据的数据结构包括:消费组、主题、总分区数、当前分区、当前消费位置和当前日志时间戳。进一步,本专利技术所述的方法,所述同步检查数据的数据结构包括:消费组、总分区数、周期和时间检查点。本专利技术提供的分布式消息队列的消息消费的系统,包括:业务处理装置和消费进度协调装置;所述业务处理装置包括:一个消费控制线程和至少一个消费常规线程;其中,每个所述消费控制线程或所述消费常规线程对应一个分区;其中,每个主题包括至少两个所述分区;其中,所述业务处理装置用于:使每个所述消费控制线程或所述消费常规线程发送一个所述分区的消息消费状态数据至所述消费进度协调装置;各个所述消费控制线程和所述消费常规线程从所述消费进度协调装置获取所述同步检查数据;各个所述消费控制线程和所述消费常规线程对处于所述同步检查数据的周期内的消息进行消费;所述消费进度协调装置包括:消费控制线程;其中,所述消费进度协调装置用于:当所述消费控制线程根据所述消息消费状态数据判断各个所述分区在当前周期的全部消息均已消费完成时,所述消费控制线程将同步检查数据的当前周期切换为下一周期。进一步,本专利技术所述的系统,所述消费进度协调装置用于:通过所述消费控制线程在所述同步检查数据设置时间检查点;在消费控制线程消费的数据达到所述时间检查点时,所述消费控制线程根据所述消息消费状态数据判断各个所述分区在当前周期的全部消息是否消费完成。进一步,本专利技术所述的系统,所述业务处理装置还用于:在时间达到所述时间检查点时,所述消费控制线程发送所述消息消费状态数据至所述消费进度协调装置并且从所述消费进度协调装置获取所述同步检查数据。进一步,本专利技术所述的系统,所述消息消费状态数据的数据结构包括:消费组、主题、总分区数、当前分区、当前消费位置和当前日志时间戳。进一步,本专利技术所述的系统,所述同步检查数据的数据结构包括:消费组、总分区数、周期和时间检查点。本专利技术还提供一种存储设备,所述存储设备存储计算机程序指令,所述计算机程序指令根据本专利技术所述的方法进行执行。本专利技术提供的分布式消息队列的消息消费的方法和系统,可以在进程内和进程间检查的机制,来协调每个分区的消费的速度,达到互相协调的目的,可以在消费时控制不同分区下消息消费的速度。此外,基于特定的业务需求,有些场景需要严格按照时间周期统计,特别是重新计算数据时,不能跨周期统计,否则会造成统计误差,本专利技术的分布式消息队列的消息消费的方法和系统也非常适用于这种场景。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显:图1为本专利技术实施例一提供的分布式消息队列的消息消费的方法的流程示意图;图2为本专利技术实施例一提供的分布式消息队列的消息消费的方法的原理示意图;图3为本专利技术实施例二提供的分布式消息队列的消息消费的方法的流程示意图;图4为本专利技术实施例三提供的分布式消息队列的消息消费的系统的结构示意图。附图中相同或相似的附图标记代表相同或相似的部件。具体实施方式下面结合附图对本专利技术作进一步详细描述。在本专利技术一个典型的配置中,终端、服务网络的设备均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的装置或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘本文档来自技高网
...

【技术保护点】
1.一种分布式消息队列的消息消费的方法,其特征在于,包括:消费控制线程或消费常规线程发送一个分区的消息消费状态数据至消费进度协调装置;当所述消费进度协调装置根据所述消息消费状态数据判断各个所述分区在当前周期的全部消息均已消费完成时,所述消费控制线程将同步检查数据的当前周期切换为下一周期;各个所述消费控制线程和所述消费常规线程从所述消费进度协调装置获取所述同步检查数据;各个所述消费控制线程和所述消费常规线程对处于所述同步检查数据的周期内的消息进行消费。

【技术特征摘要】
1.一种分布式消息队列的消息消费的方法,其特征在于,包括:消费控制线程或消费常规线程发送一个分区的消息消费状态数据至消费进度协调装置;当所述消费进度协调装置根据所述消息消费状态数据判断各个所述分区在当前周期的全部消息均已消费完成时,所述消费控制线程将同步检查数据的当前周期切换为下一周期;各个所述消费控制线程和所述消费常规线程从所述消费进度协调装置获取所述同步检查数据;各个所述消费控制线程和所述消费常规线程对处于所述同步检查数据的周期内的消息进行消费。2.根据权利要求1所述的方法,其特征在于,还包括:通过所述消费控制线程在所述同步检查数据设置时间检查点;在时间达到所述时间检查点时,所述消费控制线程根据所述消息消费状态数据判断各个所述分区在当前周期的全部消息是否消费完成。3.根据权利要求2所述的方法,其特征在于,还包括:在时间达到所述时间检查点时,所述消费常规线程发送所述消息消费状态数据至所述消费进度协调装置并且从所述消费进度协调装置获取所述同步检查数据。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述消息消费状态数据的数据结构包括:消费组、主题、总分区数、当前分区、当前消费位置和当前日志时间戳。5.根据权利要求1至3中任一项所述的方法,其特征在于,所述同步检查数据的数据结构包括:消费组、总分区数、周期和时间检查点。6.一种分布式消息队列的消息消费的系统,其特征在于,包括:业务处理装置和消费进度协调装置;所述业务处理装置包括:一个消费控制线程和至少一个消费常规线程;其中,每个所述消费控制线程或所述消费常规线程对应一个分区;其中,每个主题包括至少两...

【专利技术属性】
技术研发人员:张晓军徐建红
申请(专利权)人:上海恺英网络科技有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1