System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机软件领域,具体涉及一种应用程序构建方法及系统。
技术介绍
1、基于低代码开发平台开发的微服务应用程序,技术团队通过低代码开发平台去构建业务模型,开发、构建、管理应用程序时,由于开发团队的规模化、平台服务云化、应用程序的微服务化导致了在软件开发过程中,大量时间和资源花费在了应用程序的编译、打包过程中。从而在资源有限的情况下,经常出现单体规模大的应用程序发布任务占用服务器,导致其他应用程序发布任务长时间等待的情况。
技术实现思路
1、本专利技术要解决的技术问题在于解决现有技术中开发应用程序时,容易在资源有限的情况下,出现单体规模大的应用程序发布任务占用服务器,导致其他应用程序发布任务长时间等待的情况,本专利技术旨在构建一套调度方法,执行应用程序的批量构建过程。
2、为了解决上述技术问题,本专利技术提供如下技术方案。
3、本专利技术提供一种应用程序构建方法,包括:
4、于低代码开发平台进行应用程序的开发,并发送应用程序构建指令;
5、构建程序构建调度服务模块,接收所述应用程序构建指令并组建任务对象,对所述任务对象进行调度分配并发送任务执行指令;所述程序构建调度服务模块包括元数据解析器、容量分析器、构建指令监听器、任务构建队列、编译队列、编译队列仲裁和/或任务调度器;
6、调度完成后,编译环境接收所述任务执行指令,对任务对象进行编译和构建,并发送任务执行结果;
7、所述编译队列仲裁接收所述任务执行结
8、进一步的,所述低代码开发平台包括元数据服务单元和程序文件生成器;其中,
9、所述元数据服务单元将描述应用程序的模块、模型、字段、页面视图的结构和属性信息转化成半结构化的元数据并做持久化处理;
10、所述程序文件生成器中对于低代码开发平台开发生成的代码,通过描述结构、属性的元数据信息填充到代码模版文件中,生成对应的程序文件。
11、进一步的,所述程序构建调度服务模块接收所述应用程序构建指令并组建任务对象,对所述任务对象进行调度分配并发送任务执行指令包括:
12、所述构建指令监听器接收到所述应用程序构建指令后,构建任务对象并调用所述元数据解析器、容量分析器评估待构建的应用程序容量,并将任务对象发送到所述任务构建队列;
13、所述任务调度器接收到任务对象后,以任务规模为指标,对任务队列内的所有任务对象进行调度分配,将任务对象分配至对应的编译队列中,编译队列包括编译主队列和编译子队列。
14、进一步的,所述构建指令监听器接收到所述应用程序构建指令后,构建任务对象并调用所述元数据解析器、容量分析器评估待构建的应用程序容量,并将任务对象发送到所述任务构建队列,具体包括:
15、指令监听器监听低代码开发平台发出的应用程序构建指令;
16、将构建指令组装为任务对象,生成任务编号,并将程序元数据、程序编号写入任务对象;
17、元数据解析器获取当前指令对应的应用程序容量,同时结合该应用程序以往的执行记录,通过容量分析器,评估本次指令任务的任务规模;
18、将任务对象装入任务构建队列并推送至任务调度器执行调度工作,任务对象包括任务编号、程序编号、任务容量以及任务属性信息,其中任务属性包括应用程序完整的元数据内容。
19、进一步的,所述元数据解析器调用低代码平台的元数据服务单元,根据程序编号查询对应的元数据,解析元数据内容,计算应用程序当前版本的容量,计算公式为:
20、程序容量=字符量(c)*字符权重(α);
21、字符量(c)=程序总字符数/字符单位δk;
22、其中字符权重根据实际情况动态配置,字符单位的单位量k表示千;
23、所述容量分析器分析构建任务的总体容量,总体容量为应用程序容量和该程序历史实际构建时间平均值的综合值,计算公式为:
24、任务容量=字符量(c)*字符权重(α)+时间量(t)*时间权重(β);
25、时间量(t)=程序历史平均执行时间/时间单位γs;
26、其中应用程序初次部署时,因没有历史记录,时间量设置为1γs,即一个时间单位,时间单位的单位量s表示秒。
27、进一步的,所述任务调度器接收到任务对象后,以任务规模为指标,对任务队列内的所有任务对象进行调度分配,将任务对象分配至对应的编译队列中,编译队列包括编译主队列和编译子队列,具体包括:
28、将任务队列进行定序,任务队列根据任务容量降序排列,评估最耗时的任务对象在前;
29、将编译子队列根据任务总容量升序排列,任务负载最小的队列在前;
30、任务调度器将任务队列和编译队列置为调度状态,处于调度状态的任务队列和编译队列不再执行处置操作以及接收新的指令;
31、任务调度器对任务对象进行调度,将评估耗时多的任务对象递次分配至负载相对低的编译子队列;
32、任务对象调度分配完成后,将构建任务队列和编译队列置为可用状态,任务队列可接收指令监听器发布的任务对象,编译队列可接收暂存于编译队列仲裁的任务处置指令,将编译子队列队尾的执行任务进行完成清除、失败清除、超时丢弃处置。
33、进一步的,任务调度器对任务对象进行调度,每个编译子队列的队尾设置唯一的执行位,存放执行中的任务对象,队首至队尾倒数第二的位置,根据入列的时间降序排列,存放待执行的任务对象;
34、当编译子队列装入任务对象后,该编译子队列的任务容量大于或等于平均任务容量后,当前编译子队列不可用,不再参与任务对象的分配;当所有编译子队列的容量都大于或等于平均任务容量后,分配过程结束;若任务队列中仍有任务对象还未分配,则暂存任务对象,待下一次任务对象分配时和后续的任务对象共同参与调度分配;其中编译子队列的平均任务容量为:
35、编译子队列平均任务容量=((任务队列中的待分配任务容量和)+(编译队列中的已分配任务的容量和))/编译子队列数。
36、进一步的,调度完成后,编译环境接收所述任务执行指令,对任务对象进行编译和构建,并发送任务执行结果,具体包括,
37、编译子队列判断队尾执行位,若队尾执行位为空,则将倒二位置的待执行任务对象装入执行位;
38、若队尾执行位存在任务对象且未执行,则向编译环境发出执行指令,同时将任务状态置为执行中;
39、编译环境接收任务执行指令后,根据任务中的程序编号,执行对应应用程序的构建流水线;
40、流水线执行完成后,将成功或失败的执行结果发送至编译队列仲裁。
41、进一步的,所述编译队列仲裁接收编译环境中应用程序构建结果,同时监控编译队列的状态,若编译队列为调度状态,则暂存任务执行结果;若编译队列为可用状态,则将任本文档来自技高网...
【技术保护点】
1.一种应用程序构建方法,其特征在于,包括,
2.根据权利要求1所述的应用程序构建方法,其特征在于,所述低代码开发平台包括元数据服务单元和程序文件生成器;其中,
3.根据权利要求1所述的应用程序构建方法,其特征在于,所述程序构建调度服务模块接收所述应用程序构建指令并组建任务对象,对所述任务对象进行调度分配并发送任务执行指令包括:
4.根据权利要求3所述的应用程序构建方法,其特征在于,所述构建指令监听器接收到所述应用程序构建指令后,构建任务对象并调用所述元数据解析器、容量分析器评估待构建的应用程序容量,并将任务对象发送到所述任务构建队列,具体包括:
5.根据权利要求4所述的应用程序构建方法,其特征在于,所述元数据解析器调用低代码平台的元数据服务单元,根据程序编号查询对应的元数据,解析元数据内容,计算应用程序当前版本的容量,计算公式为:
6.根据权利要求3所述的应用程序构建方法,其特征在于,所述任务调度器接收到任务对象后,以任务规模为指标,对任务队列内的所有任务对象进行调度分配,将任务对象分配至对应的编译队列中,编译队列包括
7.根据权利要求6所述的应用程序构建方法,其特征在于,任务调度器对任务对象进行调度,每个编译子队列的队尾设置唯一的执行位,存放执行中的任务对象,队首至队尾倒数第二的位置,根据入列的时间降序排列,存放待执行的任务对象;
8.根据权利要求7所述的应用程序构建方法,其特征在于,调度完成后,编译环境接收所述任务执行指令,对任务对象进行编译和构建,并发送任务执行结果,具体包括,
9.根据权利要求1所述的应用程序构建方法,其特征在于,所述编译队列仲裁接收编译环境中应用程序构建结果,同时监控编译队列的状态,若编译队列为调度状态,则暂存任务执行结果;若编译队列为可用状态,则将任务执行的结果反馈至编译队列。
10.一种应用程序构建系统,其特征在于,包括,
...【技术特征摘要】
1.一种应用程序构建方法,其特征在于,包括,
2.根据权利要求1所述的应用程序构建方法,其特征在于,所述低代码开发平台包括元数据服务单元和程序文件生成器;其中,
3.根据权利要求1所述的应用程序构建方法,其特征在于,所述程序构建调度服务模块接收所述应用程序构建指令并组建任务对象,对所述任务对象进行调度分配并发送任务执行指令包括:
4.根据权利要求3所述的应用程序构建方法,其特征在于,所述构建指令监听器接收到所述应用程序构建指令后,构建任务对象并调用所述元数据解析器、容量分析器评估待构建的应用程序容量,并将任务对象发送到所述任务构建队列,具体包括:
5.根据权利要求4所述的应用程序构建方法,其特征在于,所述元数据解析器调用低代码平台的元数据服务单元,根据程序编号查询对应的元数据,解析元数据内容,计算应用程序当前版本的容量,计算公式为:
6.根据权利要求3所述的应用程序构建方法,其特征在于,所述...
【专利技术属性】
技术研发人员:叶立飞,张壹芬,朱玉银,吴彬彬,江勇,
申请(专利权)人:中控技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。