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

应用的并行启动处理方法、装置及电子设备与流程

2022-06-22 19:42:03 来源:中国专利 TAG:


1.本技术属于软件微服务领域,尤其涉及应用的并行启动处理方法、装置及电子设备。


背景技术:

2.springboot作为主流的java微服务框架,已经越来越多地被应用到实际的项目中。为了确保整个启动生命周期的可控性,springboot使用了同步单线程的方式初始化各类rpc组件和中间件客户端sdk,这样才能确保整个java应用启动完成时可以对外提供服务。
3.在现有同步启动机制下,一个核心的springboot的java微服务应用由于实际应用场景需要,除了需要初始化rpc组件和相关中间件sdk外,还需要有些额外的处理,如此一来就大大增加了应用的启动时间,启动时间可能长达数十分钟。


技术实现要素:

4.本技术实施例提出了应用的并行启动处理方法、装置,将现有的应用执行逻辑修改为并行处理,能够缩短应用执行时长。
5.具体的,根据本公开实施例的第一方面,本技术实施例提出应用的并行启动处理方法,所述方法包括:接收待处理的springboot框架下的java应用,提取java应用中的bean组件;判断bean组件实例化过程中是否存在顺序依赖关系的执行链;在保留原顺序依赖关系基础上,将不存在顺序依赖关系的执行链调整为并行执行逻辑,完成bean组件实例化过程的启动顺序调整。
6.可选的,所述判断bean组件实例化过程中是否存在顺序依赖关系的执行链,包括:提取bean组件中的声明代码字段;根据声明代码字段中是否存在已声明的执行链名称,判断是否存在顺序依赖关系的执行链。
7.可选的,所述方法还包括:获取处于并行执行逻辑的执行链的执行结果;对执行结果进行校验,校验通过后输出当前执行链的执行结果;当校验未通过时,则停止执行当前java应用。
8.可选的,所述方法还包括:如果执行链中包含多个原子任务操作,则判断原子任务操作之间是否存在分组设置。
9.可选的,所述方法包括:如果不存在分组设置,则将当前执行链中的原子任务操作全部调整为顺序执行逻辑处理;
如果存在分组设置,则同个分组内部原子任务操作调整为顺序执行逻辑处理,不同分组调整为并发执行逻辑处理。
10.根据本公开实施例的第二方面,本技术实施例还提出应用的并行启动处理装置,所述装置包括:实例提取单元,用于接收待处理的springboot框架下的java应用,提取java应用中的bean组件;关系判定单元,用于判断bean组件实例化过程中是否存在顺序依赖关系的执行链;顺序调整单元,用于在保留原顺序依赖关系基础上,将不存在顺序依赖关系的执行链调整为并行执行逻辑,完成bean组件实例化过程的启动顺序调整。
11.可选的,所述关系判定单元,还用于:字段提取子单元,用于提取bean组件中的声明代码字段;字段判断子单元,用于根据声明代码字段中是否存在已声明的执行链名称,判断是否存在顺序依赖关系的执行链。
12.可选的,所述装置还包括:结果获取单元,用于获取处于并行执行逻辑的执行链的执行结果;结果校验单元,用于对执行结果进行校验,校验通过后输出当前执行链的执行结果;结果执行单元,用于对执行结果进行校验,校验通过后输出当前执行链的执行结果。
13.可选的,所述装置还包括:分组判断单元,用于如果执行链中包含多个原子任务操作,则判断原子任务操作之间是否存在分组设置。
14.可选的,所述装置包括:关系二次判定单元,用于如果不存在分组设置,则将当前执行链中的原子任务操作全部调整为顺序执行逻辑处理;顺序二次调整单元,用于如果存在分组设置,则同个分组内部原子任务操作调整为顺序执行逻辑处理,不同分组调整为并发执行逻辑处理。
15.根据本公开实施例的第三方面,本实施例提供了一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行前述应用的并行启动处理方法的步骤。
16.根据本公开实施例的第四方面,本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行根据前述应用的并行启动处理方法的步骤。
17.有益效果:本技术通过将java应用中不同bean组件实例化过程进行异步并发执行处理,相对于原有的顺序执行方式能够大幅缩短应用执行耗时;同时在并发执行过程中针对执行结果
进行及时校验,在发现异常时能够阻止应用执行,从而保证应用执行的稳定性。
附图说明
18.为了更清楚地说明本技术的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1为应用启动的现有应用启动流程图;图2为本技术实施例提出的应用的并行启动处理方法的流程图;图3为本技术实施例提出的改进后的应用启动流程图;图4为本技术实施例提出的应用的并行启动处理装置的结构示意图;图5为本技术实施例提出的一种电子设备的结构示意图。
具体实施方式
20.为使本技术的结构和优点更加清楚,下面将结合附图对本技术的结构作进一步地描述。
21.为了解决当前java微服务框架springboot下应用启动耗时过长的问题,本技术实施例提出了将其中bean组件实例化过程中的启动顺序由原来的顺序执行调整为并行执行的启动方式,从而有效缩短了应用启动时间过长的问题。
22.在本实施例中提及到的bean组件为java对象实例,bean组件实例化过程则是指创建java对象实例的过程。
23.为了便于理解,首先提出一个具体的现有处理流程如图1所示。
24.当前的微服务应用包含三个组件实例化过程:1.rpc组件实例化过程;2.mq组件实例化过程;3.cache组件实例化过程;还包括两个依赖于前述两个组件实例化过程:4. 依赖mq组件的业务bean组件实例化过程;5. 依赖cache组件的业务bean组件实例化过程。
25.并且rpc组件实例化中进一步包含有对3个服务暴露和2个服务引用的子模块,分别为:1.1业务rpc服务暴露接口一解析;1.2业务rpc服务暴露接口二解析;1.3业务rpc服务暴露接口三解析;1.4业务rpc服务引用接口一解析;1.5业务rpc服务引用接口二解析。
26.在执行过程中使用同一个main处理线程,即按图1中箭头所示的方向顺序执行,可知rpc组件实例化过程的耗时为五个子模块的处理时间之和,整个应用执行耗时为三个bean组件实例化过程的处理时间之和。
27.实施例一针对前述内容提出的处理流程,本技术实施例提出了应用的并行启动处理方法,如图2所示,所述方法包括:11、接收待处理的springboot框架下的java应用,提取java应用中的bean组件;
12、判断bean组件实例化过程中是否存在顺序依赖关系的执行链;13、在保留原顺序依赖关系基础上,将不存在顺序依赖关系的执行链调整为并行执行逻辑,完成bean组件实例化过程的启动顺序调整。
28.出于规范描述的考虑,首先提出原子任务操作、执行链两个概念。
29.原子任务操作(handler):实际的有状态的操作处理,是最小的操作单元。例如图1中的五个子模块。
30.执行链(process chain):是一个有状态的异步线程,包含了一系列顺序固定的原子任务操作。单条执行链内部支持分组,使用分组功能后执行链内部的所有原子任务会按组划分,最终拆分为多个并发的异步线程。
31.值得注意的是,进行启动顺序调整的必要步骤为上述步骤“12、判断bean组件实例化过程中是否存在顺序依赖关系的执行链”。
32.具体的,该步骤的具体执行方式为:121、提取bean组件中的声明代码字段;122、根据声明代码字段中是否存在已声明的执行链名称,判断是否存在顺序依赖关系的执行链。
33.在编程环境中会包含有声明代码字段addchain()字段,该字段表示的含义为在当前执行链之前之前优先处理完成的执行链。
34.以createchain(chainname:

bus’)addchain(

mq’)为例,按照接口定义,执行顺序为优先处理“执行链mq”,然后再创建当前执行链bus的操作。
35.执行链之间存在顺序依赖关系,如执行链b依赖执行链a。则即使同时提交了执行链a与执行链b,b也会在a执行完毕之后再开始执行,而非同时并发执行。当所有的原子任务操作结束处理(或所有分组执行结束),则该执行链也认为处理完毕。
36.在实施中,为了实现组件并行启动的处理,首先需要执行步骤11来获取java应用中包含的诸多bean组件;接着判断诸多bean组件实例化过程之间是否存在顺序依赖关系;最终将不存在顺序依赖关系的bean组件实例化过程划分为不同的执行链进行并行执行,而将存在顺序依赖关系的bean组件实例化过程根据已存在的顺序依赖关系按原逻辑对应的执行链处理。
37.例如,当前存在三个bean组件实例化过程:rpc组件实例化过程、mq组件实例化过程、cache组件实例化过程,额外还有依赖mq组件的业务bean组件实例化过程、依赖cache组件的业务bean组件实例化过程。
38.根据上文可知:rpc组件实例化过程、mq组件实例化过程、cache组件实例化过程三者本身不存在顺序依赖关系,因此可以将该三者调整为并行执行,即生成三个执行链;而后两个组件实例化过程存在顺序依赖关系,因此分别融入已有的两个执行链,具体为:1)rpc组件实例化操作定义为执行链rpc chain;2)mq组件实例化操作定义为执行链mq chain, 依赖mq组件的业务bean组件实例化过程操作为mqbiz chain;3)cache组件实例化操作定义为执行链cache chain, 依赖cache组件的业务bean组件实例化过程操作分别定义为cachebiz chain;rpc chain、mq chain和cache chain并行执行,而mqbiz chain会在mq chain之后
执行,cachebiz chain会在cache chain执行后执行。
39.可选的,在前述方法执行基础上,还包括如下内容:如果执行链中包含多个原子任务操作,则判断原子任务操作之间是否存在分组设置;如果不存在分组设置,则将当前执行链中的原子任务操作全部调整为顺序执行逻辑处理;如果存在分组设置,则同个分组内部原子任务操作调整为顺序执行逻辑处理,不同分组调整为并发执行逻辑处理。
40.在实施中,与前述执行链执行逻辑调整方式类似,rpc chain根据内置的5个原子任务(即图1中的5个子模块)操作拆分成5组任务,组与组之间并行执行,加快rpc chain的执行时间,最终实现整个应用启动耗时的加快。
41.在调整获取并行执行逻辑后,考虑到应用执行过程中的稳定性,本技术提出的启动方法,还包括如下校验步骤:获取处于并行执行逻辑的执行链的执行结果;对执行结果进行校验,校验通过后输出当前执行链的执行结果。
42.当校验未通过时,则停止执行当前java应用。
43.在实施中,虽然在一定程度上通过并行执行的方式缩短了应用的启动耗时,但为了保证缩短启动时长后应用的稳定性,还需要对每条执行链输出的执行结果进行及时校验。有任一条执行链的执行结果异常则及时停止应用,同样针对并行处理后的原子任务操作进行同样的校验处理,处理正常才将应用整体对外提供服务。
44.经过上述处理后,按本技术实施例提出的并行启动方法调整后的启动流程图如图3所示,从中可以看出,由于“1.rpc组件实例化过程”、“2.mq组件实例化过程”、“3.cache组件实例化过程”三者之间不存在顺序依赖关系,因此将上述三者的执行顺序调整为并行执行逻辑,并且“1.rpc组件实例化过程”中的五个子服务由于没有顺序依赖关系,同样调整为并行执行逻辑,这样整个执行过程的耗时,由原先的多个组件实例化的耗时之和,缩短为最长一个组件实例化的执行时长,从而显著缩短了应用启动耗时。
45.实施例二:针对前述内容提出的处理流程,本技术实施例提出了应用的并行启动处理装置4,如图4所示,所述装置包括:实例提取单元41,用于接收待处理的springboot框架下的java应用,提取java应用中的bean组件;关系判定单元42,用于判断bean组件实例化过程中是否存在顺序依赖关系的执行链;顺序调整单元43,用于在保留原顺序依赖关系基础上,将不存在顺序依赖关系的执行链调整为并行执行逻辑,完成bean组件实例化过程的启动顺序调整。
46.出于规范描述的考虑,首先提出原子任务操作、执行链两个概念。
47.原子任务操作(handler):实际的有状态的操作处理,是最小的操作单元。例如图1中的五个子模块。
48.执行链(process chain):是一个有状态的异步线程,包含了一系列顺序固定的原
子任务操作。单条执行链内部支持分组,使用分组功能后执行链内部的所有原子任务会按组划分,最终拆分为多个并发的异步线程。
49.值得注意的是,进行启动顺序调整的必要步骤为上述关系判定单元42的执行内容。
50.具体的,关系判定单元42,还包括:字段提取子单元,用于提取bean组件中的声明代码字段;字段判断子单元,用于根据声明代码字段中是否存在已声明的执行链名称,判断是否存在顺序依赖关系的执行链;在编程环境中会包含有声明代码字段addchain()字段,该字段表示的含义为在当前执行链之前之前优先处理完成的执行链。
51.以createchain(chainname:

bus’)addchain(

mq’)为例,按照接口定义,执行顺序为优先处理“执行链mq”,然后再创建当前执行链bus的操作。
52.执行链之间存在顺序依赖关系,如执行链b依赖执行链a。则即使同时提交了执行链a与执行链b,b也会在a执行完毕之后再开始执行,而非同时并发执行。当所有的原子任务操作结束处理(或所有分组执行结束),则该执行链也认为处理完毕。
53.在实施中,为了实现组件并行启动的处理,首先需要实例提取单元41执行相关操作来获取java应用中包含的诸多bean组件;接着判断诸多bean组件实例化过程之间是否存在顺序依赖关系;最终将不存在顺序依赖关系的bean组件实例化过程划分为不同的执行链进行并行执行,而将存在顺序依赖关系的bean组件实例化过程根据已存在的顺序依赖关系按原逻辑对应的执行链处理。
54.例如,当前存在三个bean组件实例化过程:rpc组件实例化过程、mq组件实例化过程、cache组件实例化过程,额外还有依赖mq组件的业务bean组件实例化过程、依赖cache组件的业务bean组件实例化过程。
55.根据上文可知,rpc组件实例化过程、mq组件实例化过程、cache组件实例化过程三者本身不存在顺序依赖关系,因此可以将该三者调整为并行执行,即生成三个执行链;而后两个组件实例化过程存在顺序依赖关系,因此分别融入已有的两个执行链,具体为:1)rpc组件实例化操作定义为执行链rpc chain;2)mq组件实例化操作定义为执行链mq chain, 依赖mq组件的业务bean组件实例化过程操作为mqbiz chain;3)cache组件实例化操作定义为执行链cache chain, 依赖cache组件的业务bean组件实例化过程操作分别定义为cachebiz chain;rpc chain、mq chain和cache chain并行执行,而mqbiz chain会在mq chain之后执行,cachebiz chain会在cache chain执行后执行。
56.可选的,所述装置包括:分组判断单元,用于如果执行链中包含多个原子任务操作,则判断原子任务操作之间是否存在分组设置;关系二次判定单元,用于如果不存在分组设置,则将当前执行链中的原子任务操作全部调整为顺序执行逻辑处理;顺序二次调整单元,用于如果存在分组设置,则同个分组内部原子任务操作调整
为顺序执行逻辑处理,不同分组调整为并发执行逻辑处理。
57.在实施中,与前述执行链执行逻辑调整方式类似,rpc chain根据内置的5个原子任务(即图1中的5个子模块)操作拆分成5组任务,组与组之间并行执行,加快rpc chain的执行时间,最终实现整个应用启动耗时的加快。
58.可选的,所述装置包括:结果获取单元,用于获取处于并行执行逻辑的执行链的执行结果;结果校验单元,用于对执行结果进行校验,校验通过后输出当前执行链的执行结果;异常终止单元,用于当校验未通过时,则停止执行当前java应用。
59.在实施中,虽然在一定程度上通过并行执行的方式缩短了应用的启动耗时,但为了保证缩短启动时长后应用的稳定性,还需要对每条执行链输出的执行结果进行及时校验。有任一条执行链的执行结果异常则及时停止应用,同样针对并行处理后的原子任务操作进行同样的校验处理,处理正常才将应用整体对外提供服务。
60.经过上述处理后,按本技术实施例提出的并行启动方法调整后的启动流程。如图3所示,从中可以看出,由于“1.rpc组件实例化过程”、“2.mq组件实例化过程”、“3.cache组件实例化过程”三者之间不存在顺序依赖关系,因此将上述三者的执行顺序调整为并行执行逻辑,并且“1.rpc组件实例化过程”中的五个子服务由于没有顺序依赖关系,同样调整为并行执行逻辑,这样整个执行过程的耗时,由原先的多个组件实例化的耗时之和,缩短为最长一个组件实例化的执行时长,从而显著缩短了应用启动耗时。应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。作为模块或单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现木公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
61.本示例实施方式中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例中所述应用的并行启动处理方法的步骤。所述应用的并行启动处理方法的具体步骤可参考前述实施例中关于上述应用顺序调整的详细描述,此处不再赘述。所述计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
62.本示例实施方式中,还提供一种电子设备,该电子设备可以包括处理器以及用于存储所述处理器的可执行指令的存储器。其中,所述处理器配置为经由执行所述可执行指令来执行上述任一实施例中所述应用的并行启动处理方法的步骤。该生成方法的步骤可参考前述方法实施例中的详细描述,此处不再赘述。
63.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算
设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施方式的方法。
64.图5示出根据本公开示例实施方式中一种电子设备的示意图。例如,装置可以被提供为一服务器或客户端。参照图5,设备包括处理组件423,其进一步包括一个或多个处理器,以及由存储器432所代表的存储器资源,用于存储可由处理组件423执行的指令,例如应用程序。存储器432中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件423被配置为执行指令,以执行上述方法。
65.装置还可以包括一个电源组件426被配置为执行装置内部的电源管理,一个有线或无线的网络接口450被配置为将装置连接到网络,和一个输入输出接口458。装置可以操作基于存储在存储器432的操作系统,例如windows server tm,mac os xtm,unix tm、linux tm,freebsdtm或类似。
66.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本实施例旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
再多了解一些

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

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

相关文献