本发明专利技术提供一种处理任务的方法及系统,有利于解决数据库压力问题和单点问题。其中,处理任务的方法,包括:业务中心创建多个任务,任务分为预设类型任务和其他类型任务;业务中心将预设类型任务发送到任务驱动引擎中,任务驱动引擎为多线程并发任务调度框架;多个工作节点各自执行从任务驱动引擎中获取到的预设类型任务;业务中心将其他类型任务发送到数据库的任务表中;多个工作节点各自执行从数据库的任务表中获取到的其他类型任务。
【技术实现步骤摘要】
本专利技术涉及互联网
,具体涉及一种执行任务的方法及系统。
技术介绍
中国的彩民数量逐年增长,随着互联网的发展,越来越多的彩民选择在互联网平台进行购彩。网络出票中心是整个网络彩票系统的核心,它负责整个网络彩票系统的投注、出票流程。因为购彩是一种有时效性的活动,所以网络出票中心需要在截止时间前为用户完成下单和出票。而在购彩高峰期,瞬间的下单量十分巨大。面对巨大的访问量,如何保证系统的高可用性是一个关键问题。同时随着数据量的增加,如何水平扩展并降低维护成本也是另外一个关键问题。现有的解决海量数据的方案为:通过分库分表(Sharding)在数据存储层实现伸缩,来降低数据库的压力。具体地,将原来单一数据库按照一定的规则进行切分,把数据分散到多台物理机上存储,从而突破单机限制。这种切分对上层应用来说是透明的,多个物理上分布的数据库在逻辑上依然是一个库。但是,该方案具有如下的缺点:a.数据库压力问题所有的任务都存在数据库中,会有几十个任务调度定时的访问数据库,数据库会频繁的输入输出。随着任务量的逐渐增加,数据库压力很大,稳定性差。b.单点问题在高并发的环境下,会存在重复下单、重复投注的问题,造成不必要的经济损失。
技术实现思路
有鉴于此,本专利技术提供一种处理任务的方法及系统,有助于解决数据库压力问题和单点问题。本专利技术的其他目的和有益效果可从具体实施方式中得出。为实现上述目的,根据本专利技术的一个方面,提供了一种处理任务的方法,包括:业务中心创建多个任务,所述任务分为预设类型任务和其他类型任务;所述业务中心将所述预设类型任务发送到任务驱动引擎中,所述任务驱动引擎为多线程并发任务调度框架;多个工作节点各自执行从所述任务驱动引擎中获取到的所述预设类型任务;所述业务中心将所述其他类型任务发送到数据库的任务表中;所述多个工作节点各自执行从所述数据库的任务表中获取到的所述其他类型任务。可选地,在所述工作节点执行从所述任务驱动引擎中获取到的预设类型任务失败的情况下,所述方法还包括:所述工作节点重新从所述任务驱动引擎中获取相应的所述预设类型任务并执行;所述任务驱动引擎将累计失败次数加1,然后判断所述累计失败次数是否超过阀值,若是,则将执行失败的预设类型任务从任务队列中消费,并且将一个与执行失败的预设类型任务相同的预设类型任务插入所述任务队列的队尾。可选地,还包括:所述业务中心将所述预设类型任务发送到所述数据库的任务表中;在所述任务驱动引擎故障的情况下,所述多个工作节点各自执行从所述数据库的任务表中获取到的预设类型任务。为实现上述目的,根据本专利技术的另一方面,提供了一种处理任务的系统,其特征在于,包括:业务中心、任务驱动引擎、数据库以及多个工作节点,其中,所述业务中心用于创建多个任务,所述任务分为预设类型任务和其他类型任务,用于将所述预设类型任务发送到所述任务驱动引擎中,以及用于将所述其他类型任务发送到所述数据库的任务表中;所述任务驱动引擎为多线程并发任务调度框架;所述多个工作节点用于各自执行从所述任务驱动引擎中获取到的所述预设类型任务,以及用于各自执行从所述数据库的任务表中获取到的所述其他类型任务。可选地,所述工作节点还用于在所述工作节点执行从所述任务驱动引擎中获取到的预设类型任务失败的情况下,重新从所述任务驱动引擎中获取相应的所述预设类型任务并执行;所述任务驱动引擎还用于当所述工作节点执行从所述任务驱动引擎中获取到的相应的所述预设类型任务失败时,将累计失败次数加1,然后判断所述累计失败次数是否超过阀值,若是,则将执行失败的预设类型任务从任务队列中消费,重新将一个与执行失败的预设类型任务相同的预设类型任务插入所述任务队列的队尾。可选地,所述业务中心还用于将所述预设类型任务发送到所述数据库的任务表中;所述多个工作节点还用于在所述任务驱动引擎故障的情况下,各自执行从所述数据库的任务表中获取到的预设类型任务。根据本专利技术的技术方案,通过引入任务驱动引擎,一方面可以将分布式高并发的预设类型任务从数据库的任务表中剥离出来,减轻了数据库的压力,另一方面任务驱动引擎本身能够将若干个并发的任务变为任务队列,解决了单点问题。附图说明附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是根据本专利技术实施例的执行任务的方法的主要步骤的示意图。图2是根据本专利技术实施例的执行任务的系统的主要部件的示意图。具体实施方式以下结合附图对本专利技术的示范性实施例做出说明,其中包括本专利技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本专利技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。图1是根据本专利技术实施例的执行任务的方法的主要步骤的示意图。如图1所示,该方法主要包括如下的步骤S11至步骤S15。步骤S11:业务中心创建多个任务。其中,任务分为预设类型任务和其他类型任务两类。为使本专利技术被更好地理解,下面结合网络购彩情景来举例说明。业务中心通常是指网销彩票服务商系统后台,相当于服务端。预设类型任务通常是指具有分布式、高并发的特点的任务,这些任务如果按照传统方式交给数据库来处理,会给数据库带来很大压力。预设类型任务具体包括哪些任务这是由人工预先确定的。在网络购彩情景中预设类型任务可以包括彩票投注任务、彩票出票任务等等任务。在其他情景中预设类型任务可以是话费充值任务、秒杀下单任务等等任务。所有任务中去除预设类型任务,剩下的就是其他类型任务,具体地可以是用户登录认证任务、支付任务等等任务。步骤S12:业务中心将预设类型任务发送到任务驱动引擎中,其中,任务驱动引擎为多线程并发任务调度框架。例如,任务驱动引擎可以为基于Redis和MongoDB实现的多线程并发任务调度框架,该设置的任务驱动引擎具有技术成熟,简单易行,通用性强等优点。任务驱动引擎可以理解为数据库的缓存层。任务驱动引擎能够对任务进行时序上的安排调整,将并发的多个任务变成顺序执行的任务队列。需要说明的是,BasePopTasksHandler和BasePushTaskManager是任务驱动引擎处理任务的抽象类,需要集成它们来实现任务的插入(push)和取出(pop),可以通过模板模式来实现。为了方便后续业务扩展,定义TaskTypeExecutor接口,从任务驱动引擎pop消息实现该接口即可。步骤S13:多个工作节点各自执行从任务驱动引擎中获取到的预设类型任务。多个节点是指分布在地理上不同位置的多个客户端,它们是执行各种任务的主体。例如多个彩民购彩应用APP,它们可以执行彩票投注任务;又例如多个彩票代理商出票应用APP,它们可以执行彩票出票任务。步骤S14:业务中心将其他类型任务发送到数据库的任务表中。需要说明的是,步骤S14不一定要在步骤S12和步骤S13之后执行,只需要在步骤S11之后执行即可。步骤S15:多个工作节点各自执行从数据库的任务表中获取到的其他类型任务。需要说明的是,步骤S15不一定要在步骤S12和步骤S13之后执行,只需要在步骤S14之后执行即可。由上可知,本专利技术实施例的处理任务方法通过集成任务驱动引擎实现队列任务,第一方面,将分本文档来自技高网...
【技术保护点】
一种处理任务的方法,其特征在于,包括:业务中心创建多个任务,所述任务分为预设类型任务和其他类型任务;所述业务中心将所述预设类型任务发送到任务驱动引擎中,所述任务驱动引擎为多线程并发任务调度框架;多个工作节点各自执行从所述任务驱动引擎中获取到的所述预设类型任务;所述业务中心将所述其他类型任务发送到数据库的任务表中;所述多个工作节点各自执行从所述数据库的任务表中获取到的所述其他类型任务。
【技术特征摘要】
1.一种处理任务的方法,其特征在于,包括:业务中心创建多个任务,所述任务分为预设类型任务和其他类型任务;所述业务中心将所述预设类型任务发送到任务驱动引擎中,所述任务驱动引擎为多线程并发任务调度框架;多个工作节点各自执行从所述任务驱动引擎中获取到的所述预设类型任务;所述业务中心将所述其他类型任务发送到数据库的任务表中;所述多个工作节点各自执行从所述数据库的任务表中获取到的所述其他类型任务。2.如权利要求1所述的处理任务的方法,其特征在于,在所述工作节点执行从所述任务驱动引擎中获取到的预设类型任务失败的情况下,所述方法还包括:所述工作节点重新从所述任务驱动引擎中获取相应的所述预设类型任务并执行;所述任务驱动引擎将累计失败次数加1,然后判断所述累计失败次数是否超过阀值,若是,则将执行失败的预设类型任务从任务队列中消费,并且将一个与执行失败的预设类型任务相同的预设类型任务插入所述任务队列的队尾。3.如权利要求1所述的处理任务的方法,其特征在于,还包括:所述业务中心将所述预设类型任务发送到所述数据库的任务表中;在所述任务驱动引擎故障的情况下,所述多个工作节点各自执行从所述数据库的任务表中获取到的预设类型任务。4.一种处理任务的系统,其特征在于,包括:业务中心、任务驱动引擎、...
【专利技术属性】
技术研发人员:李慧岩,崔岩,周宁,丁琼,
申请(专利权)人:北京京东尚科信息技术有限公司,北京京东世纪贸易有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。