一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

任务处理方法及装置与流程

2022-08-10 17:18:43 来源:中国专利 TAG:


1.本公开涉及数据处理技术领域,具体涉及到一种任务处理方法及装置。


背景技术:

2.pipeline服务架构,即流水线服务架构。
3.相关技术中,当数据变更后,业务模块通常无法及时自动处理,而通过人工修复数据的方式存在工作量和难度大,修复效率低的问题。


技术实现要素:

4.本公开的主要目的在于提供一种任务处理方法及装置。
5.为了实现上述目的,根据本公开的第一方面,提供了一种任务处理方法方法,包括:在自动拉取到变更的日志信息对应的序列化信息后,部署有pipeline服务架构的服务端将序列化后的日志信息反序列化为业务数据对象;从各个业务模块订阅的数据对象中确定与所述业务数据对象匹配的数据对象,其中,所述各个业务模块为部署在pipeline服务架构下游的业务模块;在将匹配的数据对象所对应的业务模块确定为触发回调的业务模块后,触发该业务模块的pipeline接口处理异步任务。
6.可选地,自动拉取到变更的日志信息对应的序列化信息包括:监听数据库记录的日志,并在监听过程中获取变更日志,其中,为每条变更日志生成traceid;将变更日志序列化成json字符串信息,其中,所述json字符串信息包括traceid、表名、变更前的数据、变更后的数据;将所述json字符串信息发送至分布式日志系统中,以供部署有pipeline服务架构的服务端进行自动拉取。
7.可选地,方法还包括为各个业务模块预先订阅数据对象,包括:当pipeline服务架构启动后,具有依赖注入功能的容器被启动;具有依赖注入功能的容器扫描业务模块pipeline接口中实现类的泛型类,以基于所述泛型类确定数据对象定义类;将所述数据对象定义类映射到对应的数据库表名后,把实现类、数据对象定义类和数据库表名注册到订阅的map中。
8.可选地,从各个业务模块订阅的数据对象中确定与所述业务数据对象匹配的数据对象包括:基于业务数据对象中的表名,从map中确定与该表名相同的表名,其中,与该表名相同的表名所对应的业务模块为触发回调的业务模块。
9.可选地,触发该业务模块的pipeline接口处理异步任务包括:从map中确定所述目标业务模块的实现类;基于所述实现类触发业务模块的代码执行异步任务。
10.可选地,所述方法还包括:检测pipeline接口实现类是否执行异常;如果执行异常,则记录pipeline服务执行异常日志;如果执行不存在异常,则记录pipeline服务执行完成日志;和/或,销毁异步线程。
11.可选地,自动拉取到变更的日志信息对应的序列化信息,方法包括:检测缓存使用量是否达到上限值,如果未达到上限值,则从日志系统中自动拉取所述序列化信息至所述
缓存中;
12.检测异步线程数量是否达到上限值,如果未达到,则创建异步线程。
13.可选地,部署有pipeline服务架构的服务端将序列化后的日志信息反序列化为业务数据对象包括:从缓存中获取所述序列化信息,并确定其对应的表名;如果表名被订阅,署有pipeline服务架构的服务端将所述序列化信息反序列化为业务数据对象;和/或,记录pipeline服务执行开始日志。
14.根据本公开的第二方面,提供了一种任务处理装置,该装置包括:信息处理单元,被配置成在自动拉取到变更的日志信息对应的序列化信息后,部署有pipeline服务架构的服务端将序列化后的日志信息反序列化为业务数据对象;匹配单元,被配置成从各个业务模块订阅的数据对象中确定与所述业务数据对象匹配的数据对象,其中,所述各个业务模块为部署在pipeline服务架构下游的业务模块;调用单元,被配置成在将匹配的数据对象所对应的业务模块确定为触发回调的业务模块后,触发该业务模块的pipeline接口处理异步任务。
15.根据本公开的第三方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器执行第一方面任意一项实现方式所述的任务处理方法。
16.在本公开实施例任务处理方法及装置,包括在自动拉取到变更的日志信息对应的序列化信息后,部署有pipeline服务架构的服务端将序列化后的日志信息反序列化为业务数据对象;从各个业务模块订阅的数据对象中确定与所述业务数据对象匹配的数据对象,其中,所述各个业务模块为部署在pipeline服务架构下游的业务模块;在将匹配的数据对象所对应的业务模块确定为触发回调的业务模块后,触发该业务模块的pipeline接口处理异步任务。通过从基于变化数据的日志信息对信息序列化、对信息进行传输、对信息进行反序列化、信息订阅分发、触发回调业务代码的方式实现了异步任务调度。克服了相关技术中,业务模块自行发起异步任务,存在数据库事务出现回滚的情形,进而已发起的异步任务实际处理无效,被处理异步任务会引发业务风险,如果在事务成功后发送会破坏现有代码结构;以及数据更改等不会触发异步任务造成一部分数据变化后没有被后续业务处理,人工做业务流程的数据修复工作量和难度大的问题。
附图说明
17.为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1是根据本公开实施例的任务处理方法流程图;
19.图2是根据本公开实施例的任务处理方法的一个应用场景图;
20.图3是根据本公开实施例的任务处理方法的另一个应用场景图;
21.图4是适用于本实施例任务处理方法及方法的系统示意图;
22.图5是根据本公开实施例的电子设备的示意图。
具体实施方式
23.为了使本技术领域的人员更好地理解本公开方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
24.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
25.需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
26.根据本公开实施例,提供了一种任务处理方法方法,如图1所示,该方法包括如下的步骤101至步骤103:
27.步骤101:在自动拉取到变更的日志信息对应的序列化信息后,部署有pipeline服务架构的服务端将序列化后的日志信息反序列化为业务数据对象。
28.在本实施例中,自动拉取信息的触发条件可以是当监测到数据库中的数据被更改后可触发主动拉取变更的日志信息动作。变更的日志信息可以是由各个软件系统、或运维人员通过dba工具等修改渠道修改mysql数据库的数据造成的,而mysql数据库可以开启记录binlog日志(mysql的二进制日志),记录每次数据库事务数据表记录修改的日志。
29.作为本实施例一种可选的实现方式,自动拉取到变更的日志信息对应的序列化信息包括:监听数据库记录的日志,并在监听过程中获取变更日志,其中,为每条变更日志生成traceid;将变更日志序列化成json字符串信息,其中,所述json字符串信息包括traceid、表名、变更前的数据、变更后的数据;将所述json字符串信息发送至分布式日志系统中,以供部署有pipeline服务架构的服务端进行自动拉取。
30.在本可选的实现方式中,可以通过maxwell监听mysql数据库binlog日志,获取数据表记录的变更日志(该变更的日志可以包括:数据的新增、数据的修改、数据的删除等变更日志),并且每条变更日志可生成新的traceid,将以上数据序列化成json字符串信息(包含traceid、表名、变更前的整条数据、变更后的整条数据)发送到分布式日志系统中,该系统可以是kafka集群。kafka集群接收以上数据,并可提供信息的传输通道。
31.进一步的,部署有pipeline服务架构的服务端可以从上述传输通道中主动拉取序列化后的信息,并将其反序列化。
32.作为本实施例一种可选的实现方式,自动拉取到变更的日志信息对应的序列化信息,方法包括:检测缓存使用量是否达到上限值,如果未达到上限值,则从日志系统中自动拉取所述序列化信息至所述缓存中;检测异步线程数量是否达到上限值,如果未达到,则创建异步线程。
33.在本可选的实现方式中,参考图2,pipeline服务架构启动时,可以创建pipeline
守护线程;pipeline守护线程可以检测缓存使用量是否到达上限,如果达到上限则再次执行检测,否则pipeline守护线程拉取(kafka集群通道)变更日志的序列化信息到缓存中;而后pipeline守护线程检测异步线程数量是否到达上限,如果达到上限则继续检测缓存使用量是否到达上限,否则pipeline守护线程创建pipeline异步线程;最后pipeline异步线程将信息从缓存中取出(缓存数量减1),并解析序列化的信息(json格式的数据)获取表名。
34.本实施例通过从数据库源头开始监听变化数据的日志,提取需要的变更日志信息,进而可基于此触发异步任务的处理的方式,使得任何情况的数据修改都会启动异步任务处理,保证业务数据处理流程的完整性;避免了传统的业务代码自己发起异步任务,存在数据库事务中发起问题,如果事务出现回滚,已发起的异步任务实际处理无效,被处理异步任务会引发业务风险,如果在事务成功后发送会破坏现有代码结构;运维人员数据更改修复等不会触发异步任务造成一部分数据变化后没有被后续业务处理,人工做业务流程的数据修复工作量和难度很大的问题。
35.步骤102:从各个业务模块订阅的数据对象中确定与所述业务数据对象匹配的数据对象,其中,所述各个业务模块为部署在pipeline服务架构下游的业务模块。
36.在本实施例中,通过确定匹配的数据对象,便可以针对变更的数据,及时确定处理该变更数据的业务模块,以使该业务模块及时进行业务处理。进一步地,每个业务模块可对应有数据对象,该数据对象可以是预先订阅的。
37.作为本实施例一种可选的实现方式,方法还包括为各个业务模块预先订阅数据对象,包括:当pipeline服务架构启动后,具有依赖注入功能的容器被启动;具有依赖注入功能的容器扫描业务模块pipeline接口中实现类的泛型类,以基于所述泛型类确定数据对象定义类;将所述数据对象定义类映射到对应的数据库表名后,把实现类、数据对象定义类和数据库表名注册到订阅的map中。
38.在本可选的实现方式中,参考图3,图3示出了pipieline服务架构数据对象订阅流程图,首先pipeline服务架构启动后,启动必要的服务,包括ioc容器、还可以同时启动kafka通道、pipeline守护线程等;而后ioc容器可以扫描pipeline接口实现类的泛型类,通过该泛型类找到对应的数据对象定义类;最后将数据对象定义类映射到对应的数据库表名,把pipeline接口实现类、数据对象定义类和数据库表名注册到订阅的map中,供pipieline服务架构触发回调使用。
39.作为本实施例一种可选的实现方式,从各个业务模块订阅的数据对象中确定与所述业务数据对象匹配的数据对象包括:基于业务数据对象中的表名,从map中确定与该表名相同的表名,其中,与该表名相同的表名所对应的业务模块为触发回调的业务模块。
40.在本可选的实现方式中,在自动拉取序列化的信息后,该信息便对应有表名,通过该表名,从map中的表名确定相同的表名,该相同的表名所映射业务模块即为针对当前变更日志需要执行适应业务的业务模块。
41.步骤103:在将匹配的数据对象所对应的业务模块确定为触发回调的业务模块后,触发该业务模块的pipeline接口处理异步任务。
42.在本实施例中,根据下游业务模块订阅的数据对象触发回调下游的业务代码模块,并记录信息订阅的日志(包含关键的traceid和数据主键id);业务模块根据对应数据对象发起异步任务处理相应的业务。
43.作为本实施例一种可选的实现方式,从map中确定所述目标业务模块的实现类;基于所述实现类触发业务模块的代码执行异步任务。
44.本可选的实现方式中,在确定业务模块后,确定业务模块的实现类,并基于该实现类执行异步处理任务。
45.在本实施例中,通过从数据库源头开始监听变化数据的日志,提取需要的变化信息、对信息序列化、对信息进行传输、对信息进行反序列化、信息订阅分发、触发回调业务代码的方式实现了异步任务调度。克服了相关技术中,业务模块自行发起异步任务,存在数据库事务出现回滚的情形,进而已发起的异步任务实际处理无效,被处理异步任务会引发业务风险,如果在事务成功后发送会破坏现有代码结构;以及数据更改等不会触发异步任务造成一部分数据变化后没有被后续业务处理,人工做业务流程的数据修复工作量和难度大的问题。
46.作为本实施例一种可选的实现方式,方法还包括:检测pipeline接口实现类是否执行异常;如果执行异常,则记录pipeline服务执行异常日志;如果执行不存在异常,则记录pipeline服务执行完成日志;和/或,销毁异步线程。
47.在本可选的实现方式中,继续参考图2,检测pipeline接口实现类是否执行异常,如果出现异常则记录pipeline服务执行异常日志,包括:traceid、数据主键、出错时间、pipeline接口实现类名、出错详细信息,当时执行期间的信息;否则继续记录pipeline服务执行完成日志,包括:traceid、数据主键、完成时间、pipeline接口实现类名;最后pipeline异步线程销毁(异步线程数量减1)。
48.作为本实施例一种可选的实现方式,部署有pipeline服务架构的服务端将序列化后的日志信息反序列化为业务数据对象包括:从缓存中获取所述序列化信息,并确定其对应的表名;如果表名被订阅,署有pipeline服务架构的服务端将所述序列化信息反序列化为业务数据对象;和/或,记录pipeline服务执行开始日志。
49.在本可选的实现方式中,继续参考图2,pipeline异步线程将信息从缓存中取出(缓存数量减1),并解析信息(json格式的数据)获取表名;根据订阅map中的表名判断该信息是否被订阅,如果没有被订阅则执行完成;否则根据订阅map中注册的数据对象定义类将信息(json格式的数据)反序列化成数据对象;而后记录pipeline服务执行开始日志,包括:traceid、数据主键、开始时间、pipeline接口实现类名;根据订阅map中注册pipeline接口实现类触发回调其具体方法执行。
50.通过上述可选的实现方式实现了全链路的追踪日志,任何一个环节出现问题能被及时发现,克服了自行创建异步任务难做到统一管理,异步任务消息的生产、发送、传输、消费、触发回调任何一个环节出现问题,难以做到系统全面的链路跟踪的技术缺陷。
51.从以上的描述中,可以看出,本公开实现了如下技术效果:
52.本实施例异步任务发起在事务提交之后,不存在数据库事务回滚发起无效的异步任务,并保证业务代码架构的合理性;任何情况的数据修改都会启动异步任务处理,不会遗漏非软件系统触发的异步任务,保证业务数据处理流程的完整性;由pipieline服务架构公共代码具备通用性并做了traceid全链路的追踪日志,任何一个环节出现问题能被及时发现,解决现有业务代码问题。
53.需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的
计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
54.根据本公开实施例,还提供了一种用于实施上述任务处理方法的装置,该装置包括:信息处理单元,被配置成在自动拉取到变更的日志信息对应的序列化信息后,部署有pipeline服务架构的服务端将序列化后的日志信息反序列化为业务数据对象;匹配单元,被配置成从各个业务模块订阅的数据对象中确定与所述业务数据对象匹配的数据对象,其中,所述各个业务模块为部署在pipeline服务架构下游的业务模块;调用单元,被配置成在将匹配的数据对象所对应的业务模块确定为触发回调的业务模块后,触发该业务模块的pipeline接口处理异步任务。
55.作为本实施例一种可选的实现方式,自动拉取到变更的日志信息对应的序列化信息包括:监听数据库记录的日志,并在监听过程中获取变更日志,其中,为每条变更日志生成traceid;将变更日志序列化成json字符串信息,其中,所述json字符串信息包括traceid、表名、变更前的数据、变更后的数据;将所述json字符串信息发送至分布式日志系统中,以供部署有pipeline服务架构的服务端进行自动拉取。
56.作为本实施例一种可选的实现方式方法还包括为各个业务模块预先订阅数据对象,包括:当pipeline服务架构启动后,具有依赖注入功能的容器被启动;具有依赖注入功能的容器扫描业务模块pipeline接口中实现类的泛型类,以基于所述泛型类确定数据对象定义类;将所述数据对象定义类映射到对应的数据库表名后,把实现类、数据对象定义类和数据库表名注册到订阅的map中。
57.作为本实施例一种可选的实现方式,基于所述业务数据对象,从各个业务模块订阅的数据对象中确定与之匹配的数据对象包括:基于业务数据对象中的表名,从map中确定与该表名相同的表名,其中,与该表名相同的表名所对应的业务模块为触发回调的业务模块。
58.作为本实施例一种可选的实现方式,触发该业务模块的pipeline接口处理异步任务包括:从map中确定所述目标业务模块的实现类;基于所述实现类触发业务模块的代码执行异步任务。
59.作为本实施例一种可选的实现方式,所述方法还包括:检测pipeline接口实现类是否执行异常;如果执行异常,则记录pipeline服务执行异常日志;如果执行不存在异常,则记录pipeline服务执行完成日志;和/或,销毁异步线程。
60.作为本实施例一种可选的实现方式,自动拉取到变更的日志信息对应的序列化信息,方法包括:检测缓存使用量是否达到上限值,如果未达到上限值,则从日志系统中自动拉取所述序列化信息至所述缓存中;检测异步线程数量是否达到上限值,如果未达到,则创建异步线程。
61.作为本实施例一种可选的实现方式,部署有pipeline服务架构的服务端将序列化后的日志信息反序列化为业务数据对象包括:从缓存中获取所述序列化信息,并确定其对应的表名;如果表名被订阅,署有pipeline服务架构的服务端将所述序列化信息反序列化为业务数据对象;和/或,记录pipeline服务执行开始日志。
62.参考图4,适用于上述所有实施例系统架构可以包括数据库,数据库中的数据可以被修改,当数据库中的数据被(软件系统或者dba工具)修改时,可触发异步任务的调度过程
(该过程与上述实施例的过程相同,在此不再赘述)。还包括服务端,在该服务端上可部署有pipeline服务架构,该服务端可以通过传输通道获取数据库中变更数据,并基于该变更数据确定执行异步任务的业务模块(图4中的业务代码模块)。
63.本公开实施例提供了一种电子设备,如图5所示,该电子设备包括一个或多个处理器51以及存储器52,图5中以一个处理器51为例。
64.该控制器还可以包括:输入装置53和输出装置55。
65.处理器51、存储器52、输入装置53和输出装置54可以通过总线或者其他方式连接,图5中以通过总线连接为例。
66.处理器51可以为中央处理器(centralprocessingunit,cpu)。处理器51还可以为其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
67.存储器52作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本公开实施例中的控制方法对应的程序指令/模块。处理器51通过运行存储在存储器52中的非暂态软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的方法。
68.存储器52可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据服务器操作的处理装置的使用所创建的数据等。此外,存储器52可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器52可选包括相对于处理器51远程设置的存储器,这些远程存储器可以通过网络连接至网络连接装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
69.输入装置53可接收输入的数字或字符信息,以及产生与服务器的处理装置的用户设置以及功能控制有关的键信号输入。输出装置54可包括显示屏等显示设备。
70.一个或者多个模块存储在存储器52中,当被一个或者多个处理器51执行时,执行如图1所示的方法。
71.本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各电机控制方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flashmemory)、硬盘(harddiskdrive,缩写:hdd)或固态硬盘(solid-statedrive,ssd)等;存储介质还可以包括上述种类的存储器的组合。
72.虽然结合附图描述了本公开的实施方式,但是本领域技术人员可以在不脱离本公开的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献