[发明专利]基于延时队列的分布式任务轮询的方法在审
申请号: | 201910550710.4 | 申请日: | 2019-06-24 |
公开(公告)号: | CN110262910A | 公开(公告)日: | 2019-09-20 |
发明(设计)人: | 李家鹏 | 申请(专利权)人: | 四川新网银行股份有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 成都智言知识产权代理有限公司 51282 | 代理人: | 濮云杉 |
地址: | 610094 四川省成都市成都*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 轮询 队列 业务数据 延时 读取 分布式调度 队列消息 轮询请求 时间结束 数据分组 数据重复 系统处理 消息队列 扩展性 复杂度 相等 延迟 过期 投递 时机 退出 转换 服务 | ||
本发明涉及基于延时队列的分布式任务轮询的方法,包括:A.根据消息队列的消息过期与死信投递机制,建立业务延时队列;B.在微服务中建立用于接收任务轮询请求的任务轮询队列;C.将需要轮询的业务数据转换为队列消息,并将其投入到所述的业务延时队列中,在指定的延迟时间结束后,将所述需要轮询的业务数据自动投入到所述的任务轮询队列中;D.由系统处理任务轮询队列中的业务数据,并根据处理结果判断业务数据是否退出任务轮询队列。本发明能够使每个任务的执行间隔相等,任务的处理时机相对公平,并且在不采用数据分组方式的情况下,解决了数据重复读取的问题,减少了分布式调度程序的复杂度,同时具有良好的扩展性。
技术领域
本发明涉及分布式任务调度的方法,具体的讲是基于延时队列的分布式任务轮询的方法。
背景技术
微服务架构是一项在云中部署应用和服务的新技术,微服务的架构模式在互联网分布式技术领域已经逐步占据主流地位。在将应用模块拆分成微服务后,每个微服务在做高可用 (High Availability)部署时,必须是无状态的,这样才能方便扩展。而调度作业程序除了是无状态的以外,在做高可用分布式部署的时候,还要解决在执行某个作业时,多份程序同时从一个数据库中抽取某个状态的数据时,数据重复的问题。常用的任务调度机制不再适用于分布式场景,如何优雅、低开销的实现分布式场景下的任务轮询,直接决定了一个分布式系统将来的可扩展性。
在现有的一些微服务任务轮询技术中,常采用将数据库数据分组的方式来解决不再重复读取数据的问题。但在一些只需要轮询业务结果状态的任务中,使用数据库分组轮询技术就显的比较笨重。例如:在一个支付系统的场景中,支付的结果状态存在三种,交易处理中、交易已完成、交易失败,任何一个交易请求都可能返回交易处理中,而且返回结果的时间是不可预估的,我们需要将支付的最终结果推送给上游系统,常用的解决方案是设计一个定时轮询的作业来查询最终的支付结果,并返回给上游。在分布式场景下,每一个分布式调度作业,都需要先根据ID取模等于某个数字,且状态是处理中的条件来读取数据,比如调度作业 A读取数据的取模规则为模数等于1,调度作业B的取模规则为模数等于2,这样就避免了重复读取同一份数据的问题。
这个方案可行,但存在很大的局限性。首先,程序本身不够灵活,在程序开发时需要先开发一套针对调度的配置规则,在程序部署时,运维人员必须要了解并修改一个任务的调度配置规则才可以部署,这将不利于自动化部署,且增加了额外的学习成本。第二,定时作业由于读取数据时,采用了一个固定的周期来执行,任务粒度过粗,没有根据每一个任务的创建时间来订制调度周期,缺乏一定的公平性的,后来的请求有可能在最近的一个调度周期内被执行,在业务高峰期,交易处理往往会有一定程度的延迟,在这个周期内查询刚发生的交易结果,往往是徒劳无功的,反而增加了下游系统的压力。第三,分布式调度作业需要独立部署,这将占用额外的硬件资源。
发明内容
针对上述问题,本发明提供了一种基于延时队列的分布式任务轮询的方法,使每个任务的执行间隔相等,任务的处理时机相对公平,并且在不采用数据分组方式的情况下,解决数据重复读取的问题,减少分布式调度程序的复杂度。
本发明基于延时队列的分布式任务轮询的方法,包括:
A.根据消息队列的消息过期与死信投递机制,建立业务延时队列;
B.在微服务中建立用于接收任务轮询请求的任务轮询队列;
C.将需要轮询的业务数据转换为队列消息,并将其投入到所述的业务延时队列中,在指定的延迟时间结束后,将所述需要轮询的业务数据自动投入到所述的任务轮询队列中;
D.由系统处理任务轮询队列中的业务数据,并根据处理结果判断业务数据是否退出任务轮询队列。
通过消息队列的方式能够实现每个任务的执行间隔相等的公平机制,减少系统无谓的符载压力,同时也能够减少分布式调度程序的复杂度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川新网银行股份有限公司,未经四川新网银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910550710.4/2.html,转载请声明来源钻瓜专利网。