一种分布式异步业务分发方法及系统技术方案

技术编号:18445017 阅读:58 留言:0更新日期:2018-07-14 10:25
本发明专利技术公开了一种分布式异步业务分发方法,其为业务系统分发要处理的任务,其包括以下步骤:S10:将所述任务存储于数据库中,并将所述任务的状态设置为待处理;S20:从所述数据库中分布式异步获取任务,并更新所述任务的状态为处理中;S30:将获取的任务分发给所述业务系统处理;S40:将处理完成的任务放入处理完成队列;S50:基于所述处理完成队列更新所述数据库中任务的状态为处理完。此外,还公开了相应的系统。本发明专利技术数据可追溯核对,具有完整的一致性保障机制,解决因各种因素的异常引发的业务影响,具有高性能、高并发以及高稳定性等特点,可满足现有业务例如支付类业务场景。

A distributed asynchronous service distribution method and system

The present invention discloses a distributed asynchronous service distribution method, which distributes the tasks to be handled for the business system, which includes the following steps: S10: storing the task in the database and setting the state of the task to be treated; S20: the asynchronous acquisition of tasks from the database and the update of the tasks described in the database. The state of the service is processed; S30: the acquired task is distributed to the business system; S40: put the completed task into the processing completion queue; S50: the state of the task in the database described in the queue update based on the processing is finished. In addition, the corresponding system is also disclosed. The data can be traced and checked, has a complete consistency guarantee mechanism, solves the business impact caused by various factors and has high performance, high concurrency and high stability, and can meet the existing services such as the payment class service scene.

【技术实现步骤摘要】
一种分布式异步业务分发方法及系统
本专利技术涉及一种业务分发方法及系统,尤其涉及一种异步业务分发方法及系统。
技术介绍
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。这种动作,例如网页浏览、搜索和其他用户的行动是在现代网络上的许多社会功能的一个关键因素。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消费。RabbitMQ是一个可复用的企业消息系统。MQ(MessageQueue,消息队列)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。现有的消息分发系统如Kafka、RabbitMQ,消息只是流经分发到下层,并没有重试、延迟发送、状态存储,且数据无法核对,无法满足现有业务例如支付类业务场景。
技术实现思路
针对目前存在的问题,本专利技术提供了一种分布式异步业务分发方法,其具有状态存储功能,数据可追溯核对。本专利技术第一个方面提供了一种分布式异步业务分发方法,其为业务系统分发要处理的任务,其包括以下步骤:S10:将所述任务存储于数据库中,并将所述任务的状态设置为待处理;S20:从所述数据库中分布式异步获取任务,并更新所述任务的状态为处理中;S30:将获取的任务分发给所述业务系统处理;S40:将处理完成的任务放入处理完成队列;S50:基于所述处理完成队列更新所述数据库中任务的状态为处理完。本专利技术所述的分布式异步业务分发方法,其基于数据库操作任务数据,所述任务具有状态属性,因此具有状态存储功能,并且数据可追溯核对。本专利技术中,步骤S20中所述分布式异步获取任务通常是通过分布式的程序/线程以异步的方式扫描数据库获取任务,被获取的任务的状态被设为处理中,以防止被其它程序/线程重复获取。本专利技术中,步骤S30中所述分发通常为动态分发,即将所述任务在线匹配分发给对应的业务处理程序。本专利技术中,步骤S40中所述处理完成队列通常是一个文件,其及时记录处理完成的任务,从而保证处理进度的精准性。步骤S50通常为批量提交,从而提高更新速度,减少资源消耗。综上,本专利技术具有完整的一致性保障机制,解决因各种因素的异常引发的业务影响,具有高性能、高并发以及高稳定性等特点,具有重试、延迟发送功能,状态可存储,数据可追溯核对,可满足现有业务例如支付类业务场景。本专利技术中,所述任务也叫消息。对应消费-生产者模型,生产者往数据库中写入消息,数据库中的消息被分发给消费者处理。进一步地,本专利技术所述的分布式异步业务分发方法的步骤S20中,所述分布式异步获取为分布式异步批量获取。上述方案中,分布式的程序/线程以异步的方式扫描数据库批量获取任务,例如在10万个任务的数据库中,每个线程每次获取100个任务。批量获取大大提高了分发性能,例如以100个/次,则性能比1个/次提高了100倍。进一步地,本专利技术所述的分布式异步业务分发方法的步骤S20中,所述分布式异步获取包括抢锁机制,以防止分布式异步获取相同的任务。上述方案中,所述抢锁机制是指锁定获取权限的机制,即每次只允许一个获取方,例如程序/线程进行获取,以防止后续扫描数据库的程序/线程重复获取。进一步地,本专利技术所述的分布式异步业务分发方法的步骤S20中,所述分布式异步获取通过异步线程扫描实现。上述方案中,通过扫描获取状态和处理时间符合要求的一定数量的任务。更进一步地,上述分布式异步业务分发方法的步骤S20中,所述异步线程扫描按照预设的周期进行扫描。上述方案中,通常根据资源使用情况合理设置扫描周期。进一步地,本专利技术所述的分布式异步业务分发方法的步骤S40中,将处理异常的任务的状态更新为待处理。更进一步地,上述分布式异步业务分发方法的步骤S40中,设置所述处理异常的任务的下次处理时间。上述方案中,通常根据资源使用情况合理设置下次处理时间。更进一步地,上述分布式异步业务分发方法的步骤S40中,设置所述处理异常的任务的处理次数上限。上述方案中,通常根据资源使用情况合理设置处理次数上限。进一步地,本专利技术所述的分布式异步业务分发方法的步骤S10还包括预处理步骤,该预处理步骤包括判断所述程序是否第一次启动,若是则初始化数据库表信息,并初始化系统参数。更进一步地,上述分布式异步业务分发方法中,所述预处理步骤判断所述程序是否第一次启动,若否则判断是否有遗留的待处理任务,若有则先处理遗留的待处理任务,若没有则初始化系统参数。在本专利技术的一种优选实施例中,所述分布式异步业务分发方法包括:用户登录后,首先判断该用户是否为第一次登陆,如果判断为是,则初始化任务数据库表信息,初始化系统参数,将任务录入数据库,如果判断为否,则判断是否有遗留任务;如果判断有遗留任务,则处理遗留任务,处理后初始化该用户的系统参数,如果判断没有遗留任务,则初始化该用户系统参数,将新的任务录入数据库;将写入数据库的任务的状态设置为待处理;从所述数据库中分布式异步获取任务,并更新所述任务的状态为处理中;将获取的任务分发给所述业务系统处理;将处理完成的任务放入处理完成队列;基于所述处理完成队列更新所述数据库中任务的状态为处理完。在本专利技术的一种优选实施例中,所述分布式异步业务分发方法包括:用户登录后,首先判断该用户是否为第一次登陆,如果判断为是,则初始化任务数据库表信息,初始化系统参数,将任务录入数据库,如果判断为否,则初始化该用户系统参数,将新的任务录入数据库;将写入数据库的任务的状态设置为待处理;从所述数据库中分布式异步获取任务,并更新所述任务的状态为处理中;将获取的任务分发给所述业务系统处理;判断任务处理是否完成,将处理完成的任务放入处理完成队列,基于所述处理完成队列更新所述数据库中任务的状态为处理完;如果判断任务处理未完成,则更新所述任务的状态为处理中,并分发给所述业务系统重新处理。在本专利技术的一种优选实施例中,所述分布式异步业务分发方法包括:用户登录后,首先判断该用户是否为第一次登陆,如果判断为是,则初始化任务数据库表信息,初始化系统参数,将任务录入数据库,如果判断为否,则初始化该用户系统参数,将新的任务录入数据库;将写入数据库的任务的状态设置为待处理;从所述数据库中分布式异步获取任务,并更新所述任务的状态为处理中;将获取的任务分发给所述业务系统处理;判断任务处理是否完成,将处理完成的任务放入处理完成队列,基于所述处理完成队列更新所述数据库中任务的状态为处理完;如果判断任务处理未完成,则更新所述任务的状态为处理中,并分发给所述业务系统重新处理;如果重新处理的任务仍旧被判断为处理未完成,则判断重新处理次数是否达到预设重新处理次数上限,如果达到上限,则停止处理,待预设时间后进行处理,如果未达到上限,则更新所述任务的状态为处理中,并分发给所述业务系统重新处理。在本专利技术的一种优选实施例本文档来自技高网...

【技术保护点】
1.一种分布式异步业务分发方法,其为业务系统分发要处理的任务,其特征在于,包括以下步骤:S10:将所述任务存储于数据库中,并将所述任务的状态设置为待处理;S20:从所述数据库中分布式异步获取任务,并更新所述任务的状态为处理中;S30:将获取的任务分发给所述业务系统处理;S40:将处理完成的任务放入处理完成队列;S50:基于所述处理完成队列更新所述数据库中任务的状态为处理完。

【技术特征摘要】
1.一种分布式异步业务分发方法,其为业务系统分发要处理的任务,其特征在于,包括以下步骤:S10:将所述任务存储于数据库中,并将所述任务的状态设置为待处理;S20:从所述数据库中分布式异步获取任务,并更新所述任务的状态为处理中;S30:将获取的任务分发给所述业务系统处理;S40:将处理完成的任务放入处理完成队列;S50:基于所述处理完成队列更新所述数据库中任务的状态为处理完。2.如权利要求1所述的分布式异步业务分发方法,其特征在于:步骤S20中,所述分布式异步获取为分布式异步批量获取。3.如权利要求1所述的分布式异步业务分发方法,其特征在于:步骤S20中,所述分布式异步获取包括抢锁机制,以防止分布式异步获取相同的任务。4.如权利要求1所述的分布式异步业务分发方法,其特征在于:步骤S10中,用户登录后,首先判断该用户是否为第一次登陆,如果判断为是,则初始化任务数据库表信息,初始化系统参数,将任务录入数据库,如果判断为否,则初始化该用户系统参数,将新的任务录入数据库;将写入数据库的任务的状态设置为待处理。5.如权利要求4所述的分布式异步业务分发方法,其特征在于:步骤S50中,判断任务处理是否完成,将处理完成的任务放入处理完成队列,基于所述处理完成队列更新所述数据库中任务的状态为处理完;如果判断任务处理未完成,则更新所述任务的状态为处理中,并分发给所述业务系统重新处理;如果重新处理的任务仍旧被判断为处理未完成,则判断重新处理次数是否达到预设重新处理次数上限,如果达到上限,则停止处理,待预设时间后进行处理,如果未达到上限,则更新所述任务的状态为处理中,并返回步骤S30分发给所述业务系统进行重新处理。6.如权利要求5所述的分布式异步业务分发方法,其特征在...

【专利技术属性】
技术研发人员:魏巍
申请(专利权)人:宝付网络科技上海有限公司
类型:发明
国别省市:上海,31

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

1