CN114546424A - 应用发布方法、装置、设备 - Google Patents

应用发布方法、装置、设备 Download PDF

Info

Publication number
CN114546424A
CN114546424A CN202210089585.3A CN202210089585A CN114546424A CN 114546424 A CN114546424 A CN 114546424A CN 202210089585 A CN202210089585 A CN 202210089585A CN 114546424 A CN114546424 A CN 114546424A
Authority
CN
China
Prior art keywords
instance
application
resource
environment
dependency relationship
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210089585.3A
Other languages
English (en)
Inventor
李洋
杨磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN202210089585.3A priority Critical patent/CN114546424A/zh
Publication of CN114546424A publication Critical patent/CN114546424A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例公开了一种应用发布方法、装置、设备,其中,所述方法包括:基于所述应用的界面交互元素和应用程序接口的绑定关系确定所述应用的实例;确定发布所述应用的环境信息,基于所述应用的初始化清单确定用于发布所述应用的运行编排文件,其中,所述初始化清单至少包括所述实例的第一配置文件;启动所述运行编排文件中实例对应的程序包,以实现所述应用的发布。

Description

应用发布方法、装置、设备
技术领域
本申请实施例涉及电子技术领域,涉及但不限于一种应用发布方法、装置、设备。
背景技术
现有技术中用户通过拖拽、绑定API等方式生成的多个应用,每个应用都有多个实例,其中部分实例可能需要依赖其他组件,多个实例相互依赖,同时运行并建立链接才能向外提供服务。在这种情况下,应用发布至不同的运行环境的情况下,需要为各种环境类型建设相关应用部署方案,相关技术需要完全依赖人工根据不同环境部署应用运行实例,部署复杂且运维成本高。
发明内容
有鉴于此,本申请实施例提供一种应用发布方法、装置、设备及存储介质。
本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供一种应用发布方法,所述方法包括:基于所述应用的界面交互元素和应用程序接口的绑定关系确定所述应用的实例;确定发布所述应用的环境信息,基于所述应用的初始化清单确定用于发布所述应用的运行编排文件,其中,所述初始化清单至少包括所述实例的第一配置文件;启动所述运行编排文件中实例对应的程序包,以实现所述应用的发布。
第二方面,本申请实施例提供一种应用发布装置,所述装置包括:第一确定模块,用于基于所述应用的界面交互元素和应用程序接口的绑定关系确定所述应用的实例;第二确定模块,用于确定发布所述应用的环境信息,基于所述应用的初始化清单确定用于发布所述应用的运行编排文件,其中,所述初始化清单至少包括所述实例的第一配置文件;启动模块,用于启动所述运行编排文件中实例对应的程序包,以实现所述应用的发布。
第三方面,本申请实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法。
第四方面,本申请实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现上述方法。
本申请实施例中,首先基于所述应用的界面交互元素和应用程序接口的绑定关系确定所述应用的实例;然后确定发布所述应用的环境信息,基于所述应用的初始化清单确定用于发布所述应用的运行编排文件;最后启动所述运行编排文件中实例对应的程序包,以实现所述应用的发布。这样,可以实现自动基于不同的环境启动应用的实例,实现应用的发布,部署过程简单、运维成本低。
附图说明
图1为本申请实施例提供的一种应用发布方法的实现流程示意图;
图2为本申请实施例提供的一种获取第一资源配比的方法的实现流程示意图;
图3为本申请实施例提供的一种应用发布方法的实现流程示意图;
图4为本申请实施例提供的一种应用发布装置的组成结构示意图;
图5为本申请实施例提供的电子设备的一种硬件实体示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对申请实施例的具体技术方案做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
Windows,是一个具有图形用户界面的系统软件。
Linux,是一个多用户、多任务、支持多线程和多中央处理器的操作系统。能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
虚拟机(Virtual Machine,VM)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。
Docker,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。
Kubernetes,简称K8s,是一个开源的,用于管理云平台中多个主机上的容器化的应用,使得部署容器化的应用简单并且高效,提供了应用部署,规划,更新,维护的一种机制。
本申请实施例提供一种应用发布方法,如图1所示,该方法包括:
步骤S110、基于所述应用的界面交互元素和应用程序接口的绑定关系确定所述应用的实例;
这里,可以利用软件编程生成应用,也可以利用低代码平台设计应用。其中,低代码是一种可视化的应用程序开发方法,而低代码平台是一种无需编码或使用少量代码便可快速搭建应用程序的开发平台。低代码平台使得不懂编程的用户能够使用可视化工具开发自己的应用程序,免去代码编写工作。
界面元素(interface element)是指可满足交互需求的软件或系统界面所包含的满足用户交互要求的一系列元素,包括窗口、对话框、菜单、滚动条和图像等。
应用程序接口(Application Programming Interface,API),是一些预先定义的接口,或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。
在实施过程中,每个应用由对应的至少一个实例支撑,其中,实例可以指类实例化出来的例子,也称为对象。
可以基于应用的界面交互元素和应用程序接口的绑定关系确定所述应用的实例,举例来说,可以基于应用的图形和图形对应的接口确定用户界面(User Interface,UI),其中UI是系统和用户之间进行交互和信息交换的媒介,实现信息的内部形式与人类可以接受形式之间的转换。
步骤S120、确定发布所述应用的环境信息,基于所述应用的初始化清单确定用于发布所述应用的运行编排文件,其中,所述初始化清单至少包括所述实例的第一配置文件;
这里,环境信息包括环境类型和环境版本,发布应用的环境包括多种运行环境,例如Windows、Linux、VM、Docker和Kubernetes等。
由于在不同的环境类型和环境版本中,用于启动实例对应的程序包的执行命令不同,所以需要基于环境类型和环境版本确定用于发布应用的运行编排文件。其中,运行编排文件是基于应用的初始化清单转化的,该初始化清单至少包括实例的第一配置文件。这里,配置文件(configuration file)是一种计算机文件,可以为一些计算机程序配置参数和初始设置,不同对象对应不同配置的文件。
步骤S130、启动所述运行编排文件中实例对应的程序包,以实现所述应用的发布。
本申请实施例中,首先基于所述应用的界面交互元素和应用程序接口的绑定关系确定所述应用的实例;然后确定发布所述应用的环境信息,基于所述应用的初始化清单确定用于发布所述应用的运行编排文件;最后启动所述运行编排文件中实例对应的程序包,以实现所述应用的发布。这样,可以实现自动基于不同的环境启动应用的实例,实现应用的发布,部署过程简单、运维成本低。
在一些实施例中,在发布所述应用需要至少两个实例的情况下,所述初始化清单还包括所述至少两个实例的依赖关系;基于上述实施例,在步骤S120之前,所述方法还包括:
步骤111、追踪所述应用的调用链路,得到所述至少两个实例的依赖关系。
这里,依赖关系亦称“逻辑关系”,一个实例的启动需要在基于另一个实例启动成功,那么这两个实例存在依赖关系。
在一些实施例中,发布所述应用需要至少两个实例,可以通过追踪应用的调用链路,得到至少两个实例的依赖关系。举例来说,三个实例分别为:UI、网关和数据服务,通过追踪应用的调用链路可以确定UI、网关和数据服务之间有关联关系需要顺序执行,则可以得到这三个实例的依赖关系为网关依赖于UI、数据库依赖于网关。
本申请实施例中,在发布应用需要至少两个实例的情况下,可以追踪应用的调用链路,有效得到至少两个实例的依赖关系。这样,在发布应用的情况下,可以基于该依赖关系确定启动实例的顺序。
在一些实施例中,在所述实例与数据库存在关联关系的情况下,所述初始化清单还包括与所述实例关联的第一数据库脚本;基于上述实施例,在步骤S120之前,所述方法还包括:
步骤112、基于与所述实例关联的数据库,获取与所述实例关联的第一数据库脚本。
数据库脚本,即用于创建数据库对象的语句的集合。在实例与数据库存在关联关系的情况下,可以基于基于与实例关联的数据库,获取与该实例关联的第一数据库脚本。举例来说,在实例为数据服务的情况下,可以基于与该数据服务管理的数据库,获取第一数据库脚本。
本申请实施例中,在实例与数据库存在关联关系的情况下,可以基于与该实例关联的数据库,有效获取与该实例关联的第一数据库脚本。这样,在发布应用的情况下,可以利用该第一数据库脚本启动并执行对应的实例。
在一些实施例中,所述初始化清单还包括所述实例对应的第一资源配比;基于上述实施例,本申请实施例提供一种获取第一资源配比的方法,如图2所示,所述方法包括:
步骤S210、获取所述实例的初始资源;
这里,初始资源即一个程序运行的最小资源。举例来说,实例A,初始运行对中央处理器(Central Processing Unit,CPU)的需求为2,即,操作系统的进程中分配给CPU的初始资源为2。
步骤S220、在预设时间段内,基于所述实例的资源使用信息确定所述实例对应的资源增幅和资源阈值,其中,所述实例的资源使用信息是调用所述应用程序接口对应的测试用例和/或仿真数据集,对所述应用程序接口进行基准压力测试实时获取的;
在实施过程中,首先统计当前应用界面交互元素绑定的API,然后通过调用API对应的测试用例和/或仿真数据集,对该API进行基准压力测试,可以得到该实例的资源使用信息,再基于该资源使用信息可以确定该实例的资源增幅和资源阈值,举例来说,可以确定该实例的经过压力测试,CPU增幅为1,CP U阈值为4。
步骤S230、基于所述初始资源、所述资源增幅和所述资源阈值确定所述实例对应的第一资源配比。
举例来说,在确定CPU初始为2,CPU增幅为1,CPU阈值为4的情况下,可以确定推荐该实例的CPU为3。
本申请实施例中,首先获取所述实例的初始资源;然后在预设时间段内,基于所述实例的资源使用信息确定所述实例对应的资源增幅和资源阈值;最后基于所述初始资源、所述资源增幅和所述资源阈值确定所述实例对应的第一资源配比。这样,可以针对不同的应用推荐不同的资源配比;降低应用发布者对资源分配的差异性;合理利用运行时的资源环境,提高资源利用率。
在一些实施例中,上述步骤S230“基于所述初始资源、所述资源增幅和所述资源阈值确定所述实例对应的第一资源配比”包括以下步骤:
步骤231、获取实例对应的预设资源配比;
这里,预设资源配置即用户根据实际需要设置的资源配比。
步骤232、基于所述初始资源、所述资源增幅、所述资源阈值和所述预设资源配比确定所述实例对应的第一资源配比。
本申请实施例中,在确定第一资源配比的情况下,综合考虑了用户的需求,得到的第一资源配比更符合用户的需求。
在一些实施例中,所述环境信息包括所述环境的系统类型和所述环境的系统版本;所述依赖关系包括向上依赖关系和向下依赖关系,所述向上依赖关系为所述实例与前一个实例的依赖关系,所述向下依赖关系为所述实例与后一个实例的依赖关系;
上述步骤S130“启动所述运行编排文件中实例对应的程序包,以实现所述应用的发布”包括以下步骤:
步骤S131、初始化所述实例的第二配置文件,其中,所述第二配置文件是所述第一配置文件基于以下至少之一得到的:所述环境的系统类型、所述环境的系统版本和所述实例的前一个实例的运行信息,其中,所述前一个实施例是基于所述向上依赖关系确定的;
在一些实施例中,实现应用的发布需要一个实例支撑的情况下,可以基于第一配置文件、环境的系统类型和环境的版本确定第二配置文件。
在一些实施例中,实现应用的发布需要至少两个实例支撑,在初始化第二个实施例的情况下,可以基于第一配置文件、环境的系统类型、环境的版本和该实例的前一个实例的运行信息确定第二配置文件。
在实施过程中,需要首先初始化第二配置文件。
步骤132、基于所述环境中的端口占用情况,分配目标端口至所述实例;
在实施过程中,通过检测运行时环境端口占用情况,为应用实例分配可用端口(目标端口),实现基于实际情况将端口动态分配至实例,降低人工分配的复杂度,解决了人工分配可能导致的不合理问题。
步骤133、基于所述目标端口启动所述实例对应的程序包;
在实施过程中,初始化实例的数据模型并启动应用运行实例对应的程序包。这里,数据模型可以是基于依赖关系创建的数据表。
步骤134、在确定所述实例存在所述向下依赖关系的情况下,基于所述向下依赖关系,依次重复执行以上步骤启动所述应用对应的全部实例,以完成所述应用的发布。
本申请实施例中,首先初始化所述实例的第二配置文件;然后基于所述环境中的端口占用情况,分配目标端口至所述实例;最后基于所述目标端口启动所述实例对应的程序包;在确定所述实例存在所述向下依赖关系的情况下,基于所述向下依赖关系,依次重复执行以上步骤启动所述应用对应的全部实例,以完成所述应用的发布。这样,可以实现基于不同的运行环境,动态分配端口,并基于依赖关系依次启动实例,实现应用的发布。
在一些实施例中,所述运行编排文件还包括与所述实例关联的第二数据库脚本和/或所述实例对应的第二资源配比,其中,所述第二数据库脚本是所述第一数据库脚本基于所述环境的系统类型和所述环境的系统版本转化得到的,所述第二资源配比是所述第一资源配比基于所述环境的系统类型和所述环境的系统版本转化得到的;
上述步骤133“基于所述目标端口启动所述实例对应的程序包”可以通过以下过程实现:
基于所述目标端口、所述第二数据库脚本和/或所述第二资源配比启动所述实例对应的程序包。
在一些实施例中,在实例关联的数据库的情况下,需要基于环境的系统类型和所述环境的系统版本将第一数据库脚本转化为第二数据库脚本。然后结合第二数据脚本启动实例对应的程序包。
在一些实施例中,可以基于环境的系统类型和所述环境的系统版本将第一资源配比转化为第二资源配比,然后结合第二资源配比启动实例对应的程序包。
本申请实施例中,可以基于目标端口、第二数据库脚本和/第二资源配比启动所述实例对应的程序包。这样,可以实现满足于于数据库关联的实例的启动,也可以实现为实例动态分配合理的资源。
在一些实施例中,上述步骤133“基于所述目标端口启动所述实例对应的程序包”包括以下步骤:
步骤A、在基于实例健康检查确定所述实例对应的程序包启动异常的情况下,基于所述目标端口重新启动所述实例;
步骤B、在基于所述实例健康检查确定所述实例对应的程序包启动正常的情况下,基于所述向下依赖关系,将所述实例的运行信息同步至后一实例的第二配置文件。
在确定所述至少两个实例对应的软件包均启动正常的情况下,对所述应用做应用健康检查,得到应用健康检查结果;在确定所述应用健康检查结果表征所述应用健康的情况下,完成所述应用的发布;在确定所述应用健康检查结果表征所述应用不健康的情况下,重新发布所述应用。这样,待部署任务结束时,对整个应用做健康检查,若有异常则重新部署,若应用正常则向用户提供服务。
本申请实施例中,在启动每一个实例对应的程序包的情况下,对实例做健康检查,检查通过再部署下一个实例对应的程序包,以确保每一个实例的启动都是健康安全的。
现有技术应用发布包括以下三种方式:
方式一:根据各种运行环境,人工同步应用运行实例安装包、修改应用运行实例配置文件、初始化应用运行实例数据、建立应用运行实例依赖关系,进而启动应用运行实例。
方式二:针对各种运行环境,开发应用部署脚本,通过不同的部署脚本编排发布应用运行实例至不同的运行环境。
方式三:通过持续集成和持续交付(Continuous Integration ContinuousDelivery,CICD)工具,安装相关插件或开发相关脚本,配置不同的配置策略,发布应用至不同的运行环境。
对应存在以下问题:
方式一:完全依赖人工根据不同环境部署应用运行实例,部署复杂且运维成本高。
方式二:需要根据不同运动环境开发相应的部署脚本,运行环境复杂多样,脚本适用性不强,且开发成本高。
方式三:依赖CICD工具,且需要配置不同环境部署策略等,配置复杂,灵活性较差。
在低代码平台中通过拖拽界面交互元素、绑定API等生成的应用,发布到运行环境中时,由于不同应用按照需求的不同,界面交互元素和绑定的API在类型、数量等维度各不相同,同时绑定的不同API在运行时对应的后台服务对运行资源的占用各不相同,在这种情况下,不同的应用对运行环境的资源需求各不相同。
针对以上问题,现有技术分配资源的方法包括以下二种方式:
方式一:在发布应用时,人工判断并分配应用所需运行资源;
方式二:在发布应用时,针对所有应用预设相对较大的运行资源。
对应存在以下问题:
方式一:由于低代码平台可绑定的API类型、数量均较多,人工判断并分配应用运行资源,存在着较大的差异;
方式二:针对所有应用预设较大的运行资源,会造成严重的资源浪费。
图3为本申请实施例提供的一种应用发布的方法,如图3所示,包括以下步骤:
步骤S310、低代码平台通过拖拽、绑定API等方法生成应用;
这里,在低代码平台中,用户发布通过拖拽、绑定API等方式生成的应用。
步骤S320、根据界面交互元素与API绑定关系确立应用运行实例;
在实施过程中,可以根据界面交互元素与API绑定关系确立用于支撑应用的至少一个应用运行实例,举例来说,UI、网关、数据服务等应用运行实例。
步骤S330、通过设计时应用API调用链路,确立至少两个应用运行实例的依赖关系;
步骤S340、获取合理资源配比;
在实施过程中,获取合理资源配比可以包括以下步骤S341至步骤S345:
步骤S341、统计绑定的API,并将API归类于当前应用各个后台服务实例(应用运行实例);
在实施过程中,在低代码平台中发布不同应用的情况下,通过拖拽界面交互元素,统计当前应用界面交互元素绑定的API,并将API归类于当前应用各个后台服务实例。
步骤S342、基于后台服务实例维度,通过调用API测试用例对API做压力测试,得到压力测试结果;
在实施过程中,按照实例进行划分,通过调用API测试用例或仿真数据集,对API做基准压力测试,得到压力测试结果。
步骤S343、在确定压力测试结果表征后台服务实例运行稳定的情况下,实时监控应用各个后台服务实例的资源使用情况;
步骤S344、基于实时监控各个后台服务实例的资源使用情况,确定应用在预设时间段内各个后台服务实例的资源使用阈值等;
在预设时间段内,计算并统计当前应用所有API对应后台服务实例的资源增幅和资源阈值。
步骤S345、根据各个后台服务实例的资源使用阈值等,结合实际环境类型和用户期望性能计算服务实例合理资源配比。
可以根据各个后台服务实例的初始资源、资源增幅、资源阈值,并结合实际环境类型和用户期望性能计算服务实例合理资源配比,汇总并推荐应用各个服务实例资源配比。
执行以上步骤S341至步骤S345,首先统计当前应用界面元素绑定的API;然后通过调用API测试用例或仿真数据集,对API做基准压力测试,同时监控API后台服务实例运行资源;计算并统计当前应用所有API对应后台服务实例的初始资源、资源增幅和资源阈值;根据各个服务实例初始资源、资源增幅和资源阈值,并结合实际环境类型计算服务实例合理资源配比。可以通过汇总信息,推荐应用各个服务实例资源配比。这样,可以针对不同的应用计算并推荐不同的服务实例资源配比;降低应用发布者对资源分配的差异性;合理利用运行时的资源环境,提高资源利用率。
步骤S350、将应用运行实例打成标准的程序包;
步骤S360、抽取应用运行实例相关配置文件;
步骤S370、抽取应用运行实例关联数据库脚本文件;
步骤S380、根据应用运行实例依赖关系、程序包、配置文件、数据库脚本文件和合理资源配比等,建立应用初始化清单;
步骤S390、在低代码应用运行环境发布应用;
在实施过程中,可以根据应用运行实例依赖关系、程序包、配置文件、数据库脚本等,建立应用初始化模板。推送或导入以上应用文件及初始化模板至目标运行环境,检测目标运行环境信息(系统类型、系统版本、Docker、Kubernetes等),并根据运行环境信息将初始化模板转换为可执行应用运行实例编排文件(运行实例启动顺序、配置文件加载、数据初始化等),按编排文件顺序初始化部署应用运行实例,包括以下步骤S391至步骤S399:
步骤S391、检测当前运行环境信息;
步骤S392、将应用初始化清单根据当前运行是环境信息,转化为编排文件;
步骤S393、按编排文件顺序初始化部署应用运行实例;
步骤S394、获取当前运行环境参数,初始化应用运行实例的配置文件;
在实施过程中,应用运行实例的配置文件包括环境变量。
步骤S395、检测服务器端口占用情况并分配可用端口给应用运行实例;
步骤S396、初始化数据模型并启动应用运行实例;
步骤S397、对应用运行实例进行健康检查;
在确定应用运行实例健康的情况下,执行步骤S398;在确定应用运行实例不健康的情况下,返回执行步骤S391。
以此类推,执行步骤S391至步骤S397依次启动所有应用运行实例,即通过以上步骤S391至步骤S397部署应用运行实例。
步骤S398、将应用运行实例的运行信息同步至下一依赖实例配置文件中;
在实施过程中,应用运行实例的运行信息包括IP、端口(port)等。
步骤S399、进行应用健康检查。
待部署任务结束时,对整个应用做健康检查,若有异常则重新部署,若应用正常则向用户提供服务。
本申请实施例中,在应用发布的情况下,根据界面交互元素与API绑定关系确立应用运行实例;通过设计时应用API调用链路追踪,确立应用运行实例依赖关系;根据应用运行实例依赖关系、程序包、配置文件、数据库脚本等,建立应用初始化模板;根据运行环境信息将初始化模板转换为可执行应用运行实例编排文件(运行实例启动顺序、配置文件加载、数据初始化等);按编排文件顺序初始化部署应用运行实例;动态分配应用运行实例端口;自动健康检查应用并有重试策略。这样,自动识别并抽取发布时应用运行实例安装包及依赖关系,降低复杂度;动态编排应用运行实例部署策略,自动化程度较高;多运行环境动态编排部署,适用性及灵活性较高;自动健康检查应用并有重试策略。
基于前述的实施例,本申请实施例提供一种应用发布装置,该装置包括所包括的各模块,各模块包括各子模块,各子模块包括各单元,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等。
图4为本申请实施例提供的应用发布装置的组成结构示意图,如图5所示,所述装置400包括:
第一确定模块410,用于基于所述应用的界面交互元素和应用程序接口的绑定关系确定所述应用的实例;
第二确定模块420,用于确定发布所述应用的环境信息,基于所述应用的初始化清单确定用于发布所述应用的运行编排文件,其中,所述初始化清单至少包括所述实例的第一配置文件;
启动模块430,用于启动所述运行编排文件中实例对应的程序包,以实现所述应用的发布。
在一些实施例中,在发布所述应用需要至少两个实例的情况下,所述初始化清单还包括所述至少两个实例的依赖关系;所述装置还包括:追踪模块,用于追踪所述应用的调用链路,得到所述至少两个实例的依赖关系。
在一些实施例中,在所述实例与数据库存在关联关系的情况下,所述初始化清单还包括与所述实例关联的第一数据库脚本;所述装置还包括:第一获取模块,用于基于与所述实例关联的数据库,获取与所述实例关联的第一数据库脚本。
在一些实施例中,所述初始化清单还包括所述实例对应的第一资源配比;所述装置还包括第二获取模块、第三确定模块和第四确定模块,其中,所述第三获取模块,用于获取所述实例的初始资源;第三确定模块,用于在预设时间段内,基于所述实例的资源使用信息确定所述实例对应的资源增幅和资源阈值,其中,所述实例的资源使用信息是调用所述应用程序接口对应的测试用例和/或仿真数据集,对所述应用程序接口进行基准压力测试实时获取的;第四确定模块,用于基于所述初始资源、所述资源增幅和所述资源阈值确定所述实例对应的第一资源配比。
在一些实施例中,所述第四确定模块包括获取子模块和确定子模块,其中,所述获取子模块,用于获取实例对应的预设资源配比;所述确定子模块,用于基于所述初始资源、所述资源增幅、所述资源阈值和所述预设资源配比确定所述实例对应的第一资源配比。
在一些实施例中,所述环境信息包括所述环境的系统类型和所述环境的系统版本;所述依赖关系包括向上依赖关系和向下依赖关系,所述向上依赖关系为所述实例与前一个实例的依赖关系,所述向下依赖关系为所述实例与后一个实例的依赖关系;所述启动模块430包括初始化子模块、分配子模块、启动子模块和重复启动子模块,其中,所述初始化子模块,用于初始化所述实例的第二配置文件,其中,所述第二配置文件是所述第一配置文件基于以下至少之一得到的:所述环境的系统类型、所述环境的系统版本和所述实例的前一个实例的运行信息,其中,所述前一个实施例是基于所述向上依赖关系确定的;所述分配子模块,用于基于所述环境中的端口占用情况,分配目标端口至所述实例;所述启动子模块,用于基于所述目标端口启动所述实例对应的程序包;所述重复启动子模块,用于在确定所述实例存在所述向下依赖关系的情况下,基于所述向下依赖关系,依次重复执行以上步骤启动所述应用对应的全部实例,以完成所述应用的发布。
在一些实施例中,所述运行编排文件还包括与所述实例关联的第二数据库脚本和/或所述实例对应的第二资源配比,其中,所述第二数据库脚本是所述第一数据库脚本基于所述环境的系统类型和所述环境的系统版本转化得到的,所述第二资源配比是所述第一资源配比基于所述环境的系统类型和所述环境的系统版本转化得到的;所述启动子模块还用于基于所述目标端口、所述第二数据库脚本和/或所述第二资源配比启动所述实例对应的程序包。
在一些实施例中,所述启动子模块包括重新启动单元和同步单元,其中,所述重新启动单元,用于在基于实例健康检查确定所述实例对应的程序包启动异常的情况下,基于所述目标端口重新启动所述实例;所述同步单元,用于在基于所述实例健康检查确定所述实例对应的程序包启动正常的情况下,基于所述向下依赖关系,将所述实例的运行信息同步至后一实例的第二配置文件。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板电脑、笔记本电脑、台式计算机等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,本申请实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的应用发布方法中的步骤。
对应地,本申请实施例提供一种电子设备,图5为本申请实施例提供的电子设备的一种硬件实体示意图,如图5所示,该设备500的硬件实体包括:包括存储器501和处理器502,所述存储器501存储有可在处理器502上运行的计算机程序,所述处理器502执行所述程序时实现上述实施例中提供的应用发布方法中的步骤。
存储器501配置为存储由处理器502可执行的指令和应用,还可以缓存待处理器502以及电子设备500中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板电脑、笔记本电脑、台式计算机等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种应用发布方法,所述方法包括:
基于所述应用的界面交互元素和应用程序接口的绑定关系确定所述应用的实例;
确定发布所述应用的环境信息,基于所述应用的初始化清单确定用于发布所述应用的运行编排文件,其中,所述初始化清单至少包括所述实例的第一配置文件;
启动所述运行编排文件中实例对应的程序包,以实现所述应用的发布。
2.如权利要求1所述的方法,在发布所述应用需要至少两个实例的情况下,所述初始化清单还包括所述至少两个实例的依赖关系;所述方法还包括:
追踪所述应用的调用链路,得到所述至少两个实例的依赖关系。
3.如权利要求1所述的方法,在所述实例与数据库存在关联关系的情况下,所述初始化清单还包括与所述实例关联的第一数据库脚本;所述方法还包括:
基于与所述实例关联的数据库,获取与所述实例关联的第一数据库脚本。
4.如权利要求1所述的方法,所述初始化清单还包括所述实例对应的第一资源配比;所述方法还包括:
获取所述实例的初始资源;
在预设时间段内,基于所述实例的资源使用信息确定所述实例对应的资源增幅和资源阈值,其中,所述实例的资源使用信息是调用所述应用程序接口对应的测试用例和/或仿真数据集,对所述应用程序接口进行基准压力测试实时获取的;
基于所述初始资源、所述资源增幅和所述资源阈值确定所述实例对应的第一资源配比。
5.如权利要求4所述的方法,所述基于所述初始资源、所述资源增幅和所述资源阈值确定所述实例对应的第一资源配比,包括:
获取实例对应的预设资源配比;
基于所述初始资源、所述资源增幅、所述资源阈值和所述预设资源配比确定所述实例对应的第一资源配比。
6.如权利要求2所述的方法,所述环境信息包括所述环境的系统类型和所述环境的系统版本;所述依赖关系包括向上依赖关系和向下依赖关系,所述向上依赖关系为所述实例与前一个实例的依赖关系,所述向下依赖关系为所述实例与后一个实例的依赖关系;
所述启动所述运行编排文件中实例对应的程序包,以实现所述应用的发布,包括:
初始化所述实例的第二配置文件,其中,所述第二配置文件是所述第一配置文件基于以下至少之一得到的:所述环境的系统类型、所述环境的系统版本和所述实例的前一个实例的运行信息,其中,所述前一个实施例是基于所述向上依赖关系确定的;
基于所述环境中的端口占用情况,分配目标端口至所述实例;
基于所述目标端口启动所述实例对应的程序包;
在确定所述实例存在所述向下依赖关系的情况下,基于所述向下依赖关系,依次重复执行以上步骤启动所述应用对应的全部实例,以完成所述应用的发布。
7.如权利要求6所述的方法,所述运行编排文件还包括与所述实例关联的第二数据库脚本和/或所述实例对应的第二资源配比,其中,所述第二数据库脚本是所述第一数据库脚本基于所述环境的系统类型和所述环境的系统版本转化得到的,所述第二资源配比是所述第一资源配比基于所述环境的系统类型和所述环境的系统版本转化得到的;
所述基于所述目标端口启动所述实例对应的程序包,包括:
基于所述目标端口、所述第二数据库脚本和/或所述第二资源配比启动所述实例对应的程序包。
8.如权利要求6或7所述的方法,所述基于所述目标端口启动所述实例对应的程序包,包括:
在基于实例健康检查确定所述实例对应的程序包启动异常的情况下,基于所述目标端口重新启动所述实例;
在基于所述实例健康检查确定所述实例对应的程序包启动正常的情况下,基于所述向下依赖关系,将所述实例的运行信息同步至后一实例的第二配置文件。
9.一种应用发布装置,所述装置包括:
第一确定模块,用于基于所述应用的界面交互元素和应用程序接口的绑定关系确定所述应用的实例;
第二确定模块,用于确定发布所述应用的环境信息,基于所述应用的初始化清单确定用于发布所述应用的运行编排文件,其中,所述初始化清单至少包括所述实例的第一配置文件;
启动模块,用于启动所述运行编排文件中实例对应的程序包,以实现所述应用的发布。
10.一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1至8任一项所述方法中的步骤。
CN202210089585.3A 2022-01-25 2022-01-25 应用发布方法、装置、设备 Pending CN114546424A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210089585.3A CN114546424A (zh) 2022-01-25 2022-01-25 应用发布方法、装置、设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210089585.3A CN114546424A (zh) 2022-01-25 2022-01-25 应用发布方法、装置、设备

Publications (1)

Publication Number Publication Date
CN114546424A true CN114546424A (zh) 2022-05-27

Family

ID=81673759

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210089585.3A Pending CN114546424A (zh) 2022-01-25 2022-01-25 应用发布方法、装置、设备

Country Status (1)

Country Link
CN (1) CN114546424A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116820417A (zh) * 2023-08-28 2023-09-29 湖南于一科技有限公司 一种软件功能控制方法、装置、存储介质及电子装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116820417A (zh) * 2023-08-28 2023-09-29 湖南于一科技有限公司 一种软件功能控制方法、装置、存储介质及电子装置
CN116820417B (zh) * 2023-08-28 2023-11-14 湖南于一科技有限公司 一种软件功能控制方法、装置、存储介质及电子装置

Similar Documents

Publication Publication Date Title
US20230325237A1 (en) Methods and apparatus to automate deployments of software defined data centers
US10970057B2 (en) Methods and apparatus to generate a customized application blueprint
US10860339B2 (en) Autonomous creation of new microservices and modification of existing microservices
US9268592B2 (en) Methods and apparatus to generate a customized application blueprint
US8510728B2 (en) Dynamic determination of application server runtime classloading
WO2015055074A1 (zh) 动态加载和调用程序的方法及装置
US10594800B2 (en) Platform runtime abstraction
CN110389903B (zh) 测试环境部署方法和装置、电子设备和可读存储介质
CN111176818B (zh) 分布式预测的方法、装置、系统、电子设备及存储介质
WO2022222537A1 (zh) Ai应用部署方法及相关平台、集群、介质、程序产品
CN108809683B (zh) 部署云应用系统的方法及装置
CN113885849B (zh) 基于工业互联网平台的应用开发方法、装置及终端设备
CN111258913A (zh) 算法自动测试方法、装置、计算机系统及可读存储介质
CN110597564A (zh) 一种安装包构建和业务组件加载方法、装置、终端设备
CN109347716B (zh) 消费者vnf的实例化方法及装置
US20130074068A1 (en) Method, System, and Computer Program for Implementing a Customizable Virtual Appliance
US20200310828A1 (en) Method, function manager and arrangement for handling function calls
CN114546424A (zh) 应用发布方法、装置、设备
CN112579049A (zh) 基于云平台的定制软件产品化管理方法及装置
CN114006815B (zh) 云平台节点的自动化部署方法、装置、节点及存储介质
CN108228266B (zh) 一种Android插件框架下不同插件间启动Fragment组件的方法和装置
CN115794384A (zh) 代码编译任务分配方法、装置、设备及存储介质
CN115237441A (zh) 一种基于云平台的升级测试方法、装置及介质
CN110096377B (zh) 一种定制化软件发布的实现方法
CN113031964A (zh) 一种大数据应用的管理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination