具体实施方式
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。
参考图1所示,图1为本说明书实施例中任务处理方法的场景图。外部节点100和分布式计算机系统200。分布式计算机系统200包括多个通过通信网络连接的任务处理节点201,分布式计算机系统200中的各任务处理节点201可以来自于不同地点和/或具有不同功能和/或拥有不同数据,各个任务处理节点201在统一管理控制下形成分布计算机系统。外部节点100可以为终端设备或者不属于分布式计算机系统200的另一服务器。任务处理节点201中设置有任务处理装置202。各个外部节点100向分布式计算机系统200发起一个以上的业务处理请求,分布式计算机系统200中的各任务处理节点201分布式并行处理基于一个以上的任务请求产生的批量即时任务,从而能够快速、稳定的处理业务处理请求。
具体的,一个业务请求可以产生一个或者多个即时任务。在同一时刻,分布式计算机系统200接收来自外部节点200传递来的一个以上业务请求,基于一个以上的业务请求产生批量即时任务。将批量即时任务分配给分布式计算机系统200中的多个任务处理节点201进行处理。
具体的,参考图3所示,任务处理装置202包括任务接收器203和任务处理器204。具体的,任务接收器203包括:第一消息接口、事件转换器和定时消息中间件TMQ、第一事件数据库。任务处理器204包括:第二消息接口、任务监听器、核心处理模块、业务配置模块和第二事件数据库。任务处理器204还可以包括运维模块。
具体的,核心处理模块包括:事件处理线程池、事件队列和业务处理线程池。任务监听器用于监听批量即时任务,异步接收监听到的批量即时任务并传递给核心处理模块,由核心处理模块并行处理批量即时任务。
第一方面,本说明书实施例提供一种任务处理方法,应用在图1的任一任务处理节点201。下面,参考图2和图3所示,本说明书实施例提供的任务处理方法包括如下步骤:
S202、监听批量即时任务,并将监听到的批量即时任务添加至事件处理线程池。
在具体实施过程中,监听到的批量即时任务来自于多个业务场景或者来自于同一业务场景。具体的,通过任务监听器监听批量即时任务。
在本说明书实施例中,可以由如下情况会产生批量即时任务,分别进行说明:
情况一:在某些业务场景,基于外部节点的一次业务请求会产生多个即时任务,这种业务请求为第一业务请求,则步骤S202中的批量即时任务来自于一个或者多个第一业务请求。
针对情况一,步骤S202的实施过程如下:由第二消息接口触发接收外部节点传来的第一业务处理请求,并基于第一业务处理请求产生批量即时任务;任务监听器监听基于第一业务处理请求产生的批量即时任务。在本实施例中,由任务处理器的第二消息接口直接触发对第一业务处理请求的接收,而不通过任务接收器的第一消息接口进行接收。
情况二:在某些业务场景,在同一时刻接收到来自多个外部节点的第二业务请求,在同一时刻需要处理多个第二业务请求。其中,第二业务请求的任务类型可以为长事件任务、短事件任务、即时事件任务。则步骤S202中的批量即时任务来自于同一个第二业务请求或者多个第二业务请求。
针对情况二,步骤S202的具体实施过程如下:接收M个外部节点传来的M个第二业务处理请求,M为大于1的整数;利用定时消息中间件将M个第二业务处理请求分别转换为对应的定时触发任务;利用定时消息中间件在到达定时触发任务的触发时间时发出该定时触发任务,以使任务监听器监听到批量即时任务。
通过将第二业务处理请求转换为定时触发任务后进行处理,从而保证了任务处理的稳定性。
需要说明的时,在本实施方式中,批量即时任务可以来自于同一业务场景的多个即时任务或者多个不同的业务场景。
具体来讲,定时消息中间件可以为使用TMQ,TMQ是一款分布式定时消息中间件,可以支持超大规模定时触发器。本说明书实施例中的定时触发任务,具体为:预选设置时间或时间表达式,当时间到达预选设置时间或时间表达式的时间点时触发执行的任务。
在一可选的实施方式中,根据第二业务处理请求的任务类型将第二业务处理请求转换为定时触发任务。具体的实施方式可以为:检测第二业务处理请求的任务类型;根据与第二业务处理请求的任务类型对应的转换方式,将第二业务处理请求转换为定时触发任务。
在具体实施过程中,第二业务处理请求中携带有用于判断任务类型的信息。具体来讲,可以根据第二业务处理请求中的时间信息判断第二业务处理请求的任务类型:
在本说明书实施例中,如果第二业务处理请求的时间信息满足针对长事件任务设置的时间条件,则确定第二业务处理请求的任务类型为长事件任务;如果第二业务处理请求的时间信息满足针对短事件任务设置的时间条件,则确定第二业务处理请求的任务类型为长事件任务;如果均不满足,则确定第二业务处理请求的任务类型为即时事件任务;或者:若第二业务处理请求不携带时间信息,则确定第二业务处理请求的任务类型为即时事件任务。
举例来讲,针对长事件任务设置的时间条件,可以为:大于或等于1年,针对短事件任务设置的时间条件,可以为:小于1年且大于1个月。当然,在本说明书实施例中可以根据业务场景的不同进行设置,或者可以根据实际需求进行设置各个任务类型对应的时间条件。
在具体实施过程中,第二业务处理请求的任务类型不同,则将第二业务处理请求转换为定时触发任务的实施过程就相应不同,下面分别进行说明:
一、第二业务请求的任务类型为长事件任务:
针对第二业务处理请求的任务类型为长事件任务,将长事件任务转换为多个新短事件任务;将各个新短事件任务持久化至第一事件数据库;从第一事件数据库中获取任务执行时间点与当前时间点匹配的新短事件任务并将其转换为定时触发任务。
具体的,通过事件转换器件将长事件任务转换为多个新短事件任务。
比如,第二业务处理请求具体为需要2年后处理的请求,则可以转换为每2个月进行处理的10个新短事件任务,或者可以转换为每6个月进行处理的4个新短事件任务。在具体实施过程中,将长事件任务转换成新短事件任务的个数不进行具体限定。
具体的,基于转换得到的各个新短事件任务的执行时间点,从第一事件数据库中获取执行时间点与当前时间点匹配的新短事件任务,并转换为定时触发任务。
举例来讲,针对同一长事件任务转换得到每6个月进行处理的各个新短事件任务,则从写入各个新短事件任至第一事件数据库的时间点开始,在达到6个月时,从第一事件数据库中获取与任务执行时间点为6个月所对应的新短事件任务并转换为定时触发任务;在达到12个月时,从第一事件数据库中获取与执行时间点为12个月所对应的新短事件任务并转换为定时触发任务,以此类推。
在一可选的实施方式中,将从第一事件数据库中获取的新短事件任务投递给定时消息中间件,由定时消息中间件将新短事件任务转换为定时触发任务。
二、针对第二业务处理请求的任务类型为短事件任务,则将短事件任务直接投递给定时消息中间件,由定时消息中间件将短事件任务转换为定时触发任务。
三、针对第二业务处理请求的任务类型为即时事件任务,将即时事件任务直接投递给定时消息中间件,由定时消息中间件将即时事件任务转换为定时触发任务。
需要说明的是,在情况二中由任务接收器的第一消息接口触发接收外部节点传来的第二业务处理请求。
在一可选的实施方式中,任务接收器接收到外部节点传来的第二业务处理请求之后,还包括:预处理第二业务处理请求;根据预处理结果确定是否将第二业务处理请求转换为定时触发任务。
具体的,预处理第二业务处理请求,具体实施方式可以是:提取第二业务处理请求中的业务数据,对提取的业务数据进行预校验,如果对业务数据的预校验结果为有效业务数据,则将第二业务处理请求转换为定时触发任务;否则,不将第二业务处理请求转换为定时触发任务。
在一可选的实施方式中,针对已经接入的各业务场景各自配置有接入配置信息。其中,接入配置信息包括任务过滤规则、业务处理逻辑、任务监控方式以及业务校验方式中的一种以上。因此,在接入新的业务场景之后,配置针对新的业务场景的接入配置信息。具体的,针对新的业务场景配置任务过滤规则、业务处理逻辑、任务监控方式以及业务校验方式中的一种以上。
在具体实施过程中,通过业务配置模块配置针对业务从场景配置接入配置信息。
其中,在一可选的实施方式中,如果针对各业务场景对应配置有业务校验方式。调用针对第二业务处理请求所对应业务场景配置的业务校验方式,对从第二业务处理请求中提取的业务数据进行预校验。具体而言,对提取的业务数据进行预校验,可以是:基于提取的业务数据中的时间数据,判断第二业务处理请求是否为过期的业务处理请求。
S204、利用事件处理线程池中的线程并行对监听到的批量即时任务进行过滤处理,并将过滤处理得到的有效即时任务添加至事件队列。
在步骤S204中,利用事件处理线程池中的线程并行对监听到的批量即时任务进行过滤处理,从而过滤掉批量即时任务中的无效即时任务,而保留批量即时任务中的有效即时任务。
在一可选的实施方式中,通过如下实施方式实现对批量即时任务进行过滤处理:
预先配置有过滤条件,判断批量即时任务中的即时任务是否满足预先配置的过滤条件;将批量即时任务中满足过滤条件的即时任务确定为无效即时任务,不满足过滤条件的即时任务确定为有效即时任务。
预先配置的过滤条件,具体为包括一条以上任务过滤规则,命中一条以上任务过滤规则,则确定为无效即时任务。举例来讲,任务过滤规则可以为:过滤过期即时任务。需要说明的是,针对即时任务设置有结束时间(Deadline),如果当前时刻晚于即时任务的结束时间,则表征该即时任务为过期即时任务。需要说明的是,不同的业务场景下,判断是否为过期即时任务时所使用的任务有效期可以不同。
在本说明书实施例中,并不限制于上述举例的任务过滤规则,不同的业务场景配置有不同的任务过滤规则。在一可选的实施方式,在接入新的业务场景时,针对新的业务场景配置新的任务过滤规则,从而对于接入的不同业务场景均有适配的任务过滤规则。
基于不同的业务场景配置适配的任务过滤规则,则对监听到的批量即时任务进行过滤处理的实施方式可以为:确定批量即时任务中与当前待过滤任务所对应的业务场景;根据与当前待过滤任务所对应的业务场景适配的任务过滤规则,判断当前待过滤任务是否为有效即时任务。
在具体实施过程中,添加至事件队列的有效即时任务数量过多会导致事件队列溢出。为了应对这一问题,在将过滤处理获得的有效即时任务添加至事件队列时如果事件队列溢出,则将有效即时任务持久化至第二事件数据库,以在第二事件数据库中保存为待处理任务;在事件队列中存在剩余空间时,从第二事件数据库中获取待处理任务并添加至事件队列,以提供给业务处理线程池中的线程进行处理。
在一可选的实施方式中,可以是预先配置事件处理线程池和业务处理线程池的线程数、并预先配置事件队列的队列大小。需要说明的是,这种方式针对接入业务场景稳定的情况。
不同业务场景的接入会导致任务量变化。因此,在另一可选的实施方式中,为了应对接入新的业务场景导致任务量变化,事件处理线程池和业务处理线程池的线程数、事件队列的队列大小可以动态配置,从而能够在扩展性上支持水平扩容和业务接入。
具体的,动态配置的实施过程如下:检测是否接入新的业务场景;根据新的业务场景,重新配置事件处理线程池的线程数和业务处理线程池的线程数和事件队列的队列大小。
具体而言,根据当前接入的新的业务场景的流量级别,动态配置事件处理线程池的线程数、业务处理线程池的线程数和事件队列的队列大小。
举例来讲,如:当前接入的新的业务场景的流量级别为100tps,而单个线程的处理能力是100ms,则事件处理线程池的线程数和业务处理线程池中均增加多于或等于10个的线程,而事件队列中增加10个或者更多个任务空间。
通过步骤S204能够避免无效的任务请求进入事件队列。
S206、利用业务处理线程池中的线程并行处理事件队列中的有效即时任务。
具体的,各接入的业务场景特有的业务处理逻辑,需要不同的业务处理逻辑来应对不同的业务场景,因此,在步骤S206中,确定有效即时任务对应的目标业务场景;获取所述目标业务场景的业务处理逻辑;利用业务处理线程池中的线程,基于目标业务场景的业务处理逻辑处理该目标业务场景下的有效即时任务。从而保证对不同业务场景下任务处理的正确性。
通过步骤S202~S206,实现了并行对批量即时任务进行处理,从而达到高吞吐量和秒内延时的处理任务的技术效果,进而快速、稳定的应对业务处理量大且实时性要求比较高的场景,达到高吞吐量和秒内延时。
在一可选的实施方式中,如果针对接入的各业务场景对应配置有接入配置信息。在执行步骤S204和步骤S206之前,查询监听到的批量即时任务的接入配置信息,以确定批量即时任务中各即时任务的任务过滤规则、业务处理逻辑、任务监控方式中的一种以上。
在具体实施过程中,调用与当前接入的业务场景适配的任务监控方式,进行各有效即时任务被执行过程中的任务监控。
具体的,任务监控包括但不限于如下一种以上:对有效即时任务被执行过程的日志监控、以及任务处理器的容量监控。在具体实施过程中,可以通过运维模块进行各有效即时任务被执行过程中的任务监控。
有效即时任务被执行过程的日志监控用于明确有效即时任务被执行的情况信息。比如:执行结果、完成时间等等。对任务处理器的容量监控用于明确事件处理线程池、业务处理线程池的使用状态。具体而言,监控事件处理线程池是否高于第一预设预警水位,以及监控业务处理线程池是否高于第二预设预警水位。如果事件处理线程池高于第一预设预警水位,则发出用于提示在事件处理线程池中新建线程第一报警信息;如果业务处理线程池高于第二预设预警水位,则发出用于提示在业务处理线程池中新建线程的第二报警信息。
从而根据有效即时任务被执行过程的日志监控、对任务处理器的容量监控可以动态调整任务处理器的各个指标数据。
进一步的,在一可选的实施方式中,利用业务处理线程池中的线程并行处理事件队列中的有效即时任务之后,将得到的处理结果持久化至第二事件数据库。
第二方面,基于同一发明构思,本说明书实施例提供一种任务处理装置202,参考图1和图3所示,任务处理装置202包括任务处理器204,任务处理器204包括:
任务监听器,用于监听批量即时任务,并将监听到的批量即时任务添加至事件处理线程池;
核心处理模块,用于利用所述事件处理线程池中的线程并行对监听到的批量即时任务进行过滤处理,并将过滤处理得到的有效即时任务添加至事件队列,利用业务处理线程池中的线程并行处理所述事件队列中的有效即时任务。
所述批量即时任务来自多个业务场景或者同一业务场景。
在一种可选方式中,所述任务处理装置还包括:第二消息接口,用于接收外部节点传来的第一业务处理请求,基于所述第一业务处理请求产生所述批量即时任务;
所述任务监听器,用于监听基于所述第一业务处理请求产生的所述批量即时任务。
在一种可选方式中,所述装置还包括任务接收器203,所述任务接收器203包括:
第一消息接口,用于接收M个外部节点传来的M个第二业务处理请求,M为大于1的整数;
任务转换器,用于将所述M个第二业务处理请求分别转换为对应的定时触发任务;还用于在到达所述定时触发任务的触发时间时发出所述定时触发任务,以使所述任务监听器监听到所述批量即时任务。
在一种可选方式中,所述任务转换器,用于通过如下步骤将所述第二业务处理请求转换定时触发任务:
检测所述第二业务处理请求的任务类型;
根据与所述第二业务处理请求的任务类型对应的转换方式,将所述第二业务处理请求转换为定时触发任务。
在一种可选方式中,所述任务转换器,包括:
事件转换器,用于针对所述第二业务处理请求的任务类型为长事件任务,将所述长事件任务转换为多个新短事件任务,以及将所述新短事件任务持久化至第一事件数据库;
定时消息中间件,用于从所述第一事件数据库中获取任务执行时间点与当前时间点匹配的新短事件任务,并转换为定时触发任务。
在一种可选方式中,所述装置还包括业务配置模块,用于检测是否接入新的业务场景;根据所述新的业务场景,重新配置所述事件处理线程池的线程数和所述业务处理线程池的线程数和所述事件队列的队列大小。
在一种可选方式中,所述业务配置模块,还用于:在所述接入新的业务场景之后,配置针对所述新的业务场景的任务过滤规则、业务处理逻辑、任务监控方式以及业务校验方式中的一种以上。
在一种可选方式中,所述核心处理模块,具体用于:
确定所述有效即时任务对应的目标业务场景;
获取所述目标业务场景的业务处理逻辑;
利用所述业务处理线程池中的线程,基于所述目标业务场景的业务处理逻辑处理所述有效即时任务。
在一种可选方式中,所述核心处理模块,具体用于:
确定所述批量即时任务中当前待过滤任务所对应的业务场景;
根据与所述当前待过滤任务所对应的业务场景适配的任务过滤规则,判断所述当前待过滤任务是否为有效即时任务。
在一种可选方式中,所述核心处理模块,还用于:
如果将过滤处理获得的有效即时任务添加至事件队列时所述事件队列溢出,将所述有效即时任务持久化至第二事件数据库,以在所述第二事件数据库中保存为待处理任务;
在所述事件队列中存在剩余空间时,从所述第二事件数据库中获取所述待处理任务并添加至所述事件队列。
基于同一发明构思,本说明书实施例提供一种任务处理方法,应用于分布式计算机系统200。参考图1所示,分布式计算机系统200包括多个任务处理节点201,任务处理节点201用于执行前述实施例所述的任务处理方法中任一可选方式所述的步骤。
基于同一发明构思,本说明书实施例提供一种分布式计算机系统200,包括多个前述实施例中所述的任务处理节点201,所述任务处理节点201上布置有任务处理装置202。如图4所示,任务处理装置202包括存储器404、处理器402及存储在存储器404上并可在处理器402上运行的计算机程序,处理器402执行程序时实现前述实施例中任务处理方法的任一可能实施方式所述的步骤。
其中,在图4中,总线架构(用总线400来代表),总线400可以包括任意数量的互联的总线和桥,总线400将包括由处理器402代表的一个或多个处理器和存储器404代表的存储器的各种电路链接在一起。总线400还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口406在总线400和接收器401和发送器403之间提供接口。接收器401和发送器403可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器402负责管理总线400和通常的处理,而存储器404可以被用于存储处理器402在执行操作时所使用的数据。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。
显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。