CN112000353A - 应用运行方法、装置及存储介质 - Google Patents

应用运行方法、装置及存储介质 Download PDF

Info

Publication number
CN112000353A
CN112000353A CN202010833654.8A CN202010833654A CN112000353A CN 112000353 A CN112000353 A CN 112000353A CN 202010833654 A CN202010833654 A CN 202010833654A CN 112000353 A CN112000353 A CN 112000353A
Authority
CN
China
Prior art keywords
application
sub
running
starting
main
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.)
Withdrawn
Application number
CN202010833654.8A
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.)
Beijing Sankuai Online Technology Co Ltd
Original Assignee
Beijing Sankuai Online Technology Co 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 Beijing Sankuai Online Technology Co Ltd filed Critical Beijing Sankuai Online Technology Co Ltd
Priority to CN202010833654.8A priority Critical patent/CN112000353A/zh
Publication of CN112000353A publication Critical patent/CN112000353A/zh
Withdrawn 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/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种应用运行方法、装置、设备及存储介质,属于软件开发技术领域。所述方法包括:在主应用启动之后,通过运行主应用调用集成在主应用中的合并运行功能;通过合并运行功能,获取子应用配置信息,子应用配置信息包括需要启动的至少一个子应用的应用标识以及该至少一个子应用的启动策略;通过合并运行功能,按照该启动策略,启动该至少一个子应用,且各个子应用在启动后运行在各个子应用对应的运行沙箱中。如此,可以实现多个应用的合并运行,当这多个应用为微服务应用时,可以采用较低的改造成本合并运行这多个微服务应用,而无需将这多个微服务应用重新开发成单体应用,进而节省了开发成本和服务器资源。

Description

应用运行方法、装置及存储介质
技术领域
本申请涉及软件开发技术领域,特别涉及一种应用运行方法、装置及存储介质。
背景技术
目前,应用一般包括单体应用和微服务应用。其中,单体应用是指传统的、将多种业务功能模块集成在单个应用程序的应用。另外,在单体应用的基础上又发展起来一种微服务架构,微服务架构的设计原则是将复杂的单体应用按照业务功能、流程、组织架构等维度拆分为职责单一、独立运行的多个微服务应用(又称服务),且这多个微服务应用之间可以通过网络调用进行协调交互。但是,由于不同微服务应用需要运行在不同的服务器上,因此微服务架构将会消耗较多的服务器资源。
相关技术中,为了节省服务器资源,在微服务应用拆分粒度过细、无效微服务应用无法及时下线、或者因组织架构变更导致存在过多功能类似的微服务应用的情况下,可以对特定的多个微服务应用进行重新开发,以将这多个微服务应用通过重新开发合并成单体应用。但是,对微服务应用进行重新开发的过程较为复杂,且需要投入大量研发成本,成本较高。
发明内容
本申请实施例提供了一种应用运行方法、装置、设备及存储介质,可以用于解决相关技术中存在的对微服务应用进行合并的成本较高的问题。所述技术方案如下:
一方面,提供了一种应用运行方法,所述方法包括:
在主应用启动之后,通过运行所述主应用调用合并运行功能,所述合并运行功能集成在所述主应用中,所述主应用为任一单体应用或微服务应用;
通过所述合并运行功能,获取子应用配置信息,所述子应用配置信息包括需要启动的至少一个子应用的应用标识以及所述至少一个子应用的启动策略,所述至少一个子应用为所述主应用之外的其他单体应用或微服务应用;
通过所述合并运行功能,按照所述启动策略,启动所述至少一个子应用,且各个子应用在启动后运行在各个子应用对应的运行沙箱中。
可选地,述按照所述启动策略,启动所述至少一个子应用,包括:
若按照所述启动策略,确定当前需要启动所述至少一个子应用中的第一子应用,则为所述第一子应用创建对应的第一运行沙箱,所述第一子应用为所述至少一个子应用中的任一个;
在所述第一运行沙箱中启动所述第一子应用,以使所述第一子应用运行在所述第一运行沙箱中。
可选地,所述在所述第一运行沙箱中启动所述第一子应用,包括:
解析所述第一子应用的描述文件,所述描述文件集成在所述第一子应用中,所述描述文件包括所述第一子应用的启动入口类的路径,所述启动入口类包括应用启动方法,所述应用启动方法用于启动所述第一子应用;
基于所述入口启动类的路径,调用所述启动入口类的应用启动方法;
在所述第一运行沙箱中,通过所述应用启动方法,启动所述第一子应用。
可选地,所述各个子应用对应的运行沙箱用于为所述各个子应用的运行提供类加载器和实例管理容器。
可选地,所述方法还包括:
对于所述至少一个子应用中的第一子应用,在所述第一子应用启动之后,创建所述第一子应用的启动事件,所述启动事件用于指示所述第一子应用启动成功,所述第一子应用为所述至少一个子应用中的任一个;
将所述启动事件上报给事件监听者,所述事件监听者为所述主应用或第三方组件。
可选地,所述启动事件包括所述第一子应用的应用标识、启动成功状态和启动时间中的至少一种。
可选地,所述方法还包括:
对于所述至少一个子应用中的第一子应用,在所述第一子应用启动之后,当需要对所述第一子应用进行更新时,关闭所述第一子应用,以及关闭运行所述第一子应用的第一运行沙箱,所述第一子应用为所述至少一个子应用中的任一个;
清除所述第一子应用的调用信息;
基于所述第一子应用的更新文件,对所述第一子应用的原始应用文件进行更新。
可选地,所述关闭所述第一子应用之后,还包括:
创建所述第一子应用的关闭事件,所述关闭事件用于指示所述第一子应用关闭;
将所述关闭事件上报给事件监听者,所述事件监听者为所述主应用或第三方组件。
可选地,所述按照所述启动策略,启动所述至少一个子应用之后,还包括:
采集全局数据快照,所述全局数据快照包括主应用数据快照和子应用数据快照中的至少一种,所述主应用数据快照包括当前运行的所述主应用的应用标识和运行状态,所述子应用数据快照包括当前运行的子应用的应用标识和运行状态。
一方面,提供了一种应用运行装置,所述装置包括:
调用模块,用于在主应用启动之后,通过所述主应用调用合并运行功能,所述合并运行功能集成在所述主应用中,所述主应用为任一单体应用或微服务应用;
获取模块,用于通过所述合并运行功能,获取子应用配置信息,所述子应用配置信息包括需要启动的至少一个子应用的应用标识以及所述至少一个子应用的启动策略,所述至少一个子应用为所述主应用之外的其他单体应用或微服务应用;
启动模块,用于通过所述合并运行功能,按照所述启动策略,启动所述至少一个子应用,且各个子应用在启动后运行在各个子应用对应的运行沙箱中。
可选地,所述启动模块用于:
若按照所述启动策略,确定当前需要启动所述至少一个子应用中的第一子应用,则为所述第一子应用创建对应的第一运行沙箱,所述第一子应用为所述至少一个子应用中的任一个;
在所述第一运行沙箱中启动所述第一子应用,以使所述第一子应用运行在所述第一运行沙箱中。
可选地,所述启动模块用于:
解析所述第一子应用的描述文件,所述描述文件集成在所述第一子应用中,所述描述文件包括所述第一子应用的启动入口类的路径,所述启动入口类包括应用启动方法,所述应用启动方法用于启动所述第一子应用;
基于所述入口启动类的路径,调用所述启动入口类的应用启动方法;
在所述第一运行沙箱中,通过所述应用启动方法,启动所述第一子应用。
可选地,所述各个子应用对应的运行沙箱用于为所述各个子应用的运行提供类加载器和实例管理容器。
可选地,所述装置还包括:
第一创建模块,用于对于所述至少一个子应用中的第一子应用,在所述第一子应用启动之后,创建所述第一子应用的启动事件,所述启动事件用于指示所述第一子应用启动成功,所述第一子应用为所述至少一个子应用中的任一个;
第一上报模块,用于将所述启动事件上报给事件监听者,所述事件监听者为所述主应用或第三方组件。
可选地,所述启动事件包括所述第一子应用的应用标识、启动成功状态和启动时间中的至少一种。
可选地,所述装置还包括:
关闭模块,用于对于所述至少一个子应用中的第一子应用,在所述第一子应用启动之后,当需要对所述第一子应用进行更新时,关闭所述第一子应用,以及关闭运行所述第一子应用的第一运行沙箱,所述第一子应用为所述至少一个子应用中的任一个;
清除模块,用于清除所述第一子应用的调用信息;
更新模块,用于基于所述第一子应用的更新文件,对所述第一子应用的原始应用文件进行更新。
可选地,所述装置还包括:
第二创建模块,用于创建所述第一子应用的关闭事件,所述关闭事件用于指示所述第一子应用关闭;
第二上报模块,用于将所述关闭事件上报给事件监听者,所述事件监听者为所述主应用或第三方组件。
可选地,所述装置还包括:
采集模块,用于采集全局数据快照,所述全局数据快照包括主应用数据快照和子应用数据快照中的至少一种,所述主应用数据快照包括当前运行的所述主应用的应用标识和运行状态,所述子应用数据快照包括当前运行的子应用的应用标识和运行状态。
一方面,提供了一种计算机设备,所述设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述任一种应用运行方法的步骤。
一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述任一种应用运行方法的步骤。
一方面,提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于实现上述任一种应用运行方法。
本申请实施例提供的技术方案带来的有益效果是:
本申请实施例中,主应用中集成有合并运行功能,因此在主应用启动之后,通过运行主应用即可调用合并运行功能,并通过合并运行功能,来获取子应用配置信息,按照子应用配置信息包括的需要启动的至少一个子应用的应用标识和启动策略,在运行沙箱中启动至少一个子应用。如此,即可实现多个应用的合并运行,当这多个应用为微服务应用时,可以采用较低的改造成本合并运行这多个微服务应用,而无需将这多个微服务应用重新开发成单体应用,进而节省了研发成本和服务器资源,提高了服务器的资源利用率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例涉及的一种实施环境的示意图;
图2是本申请实施例提供一种合并运行***的示意图;
图3是本申请实施例提供的一种应用运行方法的流程图;
图4是本申请实施例提供的另一种应用运行方法的流程图;
图5是本申请实施例提供的一种应用运行装置的结构框图;
图6是本申请实施例提供的一种计算机设备的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细地解释说明之前,先对本申请实施例的应用场景予以说明。
微服务是一种以业务为中心,在单体应用的基础上发展起来的软件架构风格。微服务的设计原则是将复杂的单体应用按照业务功能、流程、组织架构等维度拆分为职责单一、独立运行的微服务应用。除了可以避免单体应用故障扩散的问题外,微服务还具备开放性强、易于访问、开发周期短、高度可扩展等特性,正因如此,对于需要快速试错、体量小的业务,使用微服务有天生的优势。但是,在微服务实践过程中,经常出现如下问题,导致服务器资源利用率低,造成了服务成本的极大浪费。
1、服务拆分原则模糊、拆分粒度过细,导致需要较多的服务器资源。
2、业务试错失败,但是由于合约期等原因无法立刻下线服务,导致一些需要下线的服务也在消耗服务器资源。
3、组织结构变更产生服务交接,导致存在过多功能类似的服务,这些功能类似的服务需要去重,否则也会消耗过多的服务器资源。
为了节省服务器资源,在微服务应用拆分粒度过细、无效微服务应用无法及时下线、或者因组织架构变更导致存在过多功能类似的微服务应用的情况下,相关技术中,采用对特定的多个微服务应用进行重新开发,以将这多个微服务应用通过重新开发合并成单体应用的方式,来减少过多的微服务应用。但是,对微服务应用进行重新开发的过程较为复杂,且需要投入大量研发成本,成本较高。
本申请实施例中,针对相关技术中存在的上述问题,提出了一种可以采用较低的改造成本来对多个应用进行合并运行的方式,能够达到将多个应用合并成单体应用的效果,这种方式无需对微服务应用进行重新开发,节省了服务成本和服务器资源,提高了服务器的资源利用率。
接下来,对本申请实施例涉及的实施环境进行介绍。
本申请实施例提供的应用运行方法可以应用于计算机设备中,该计算机设备可以为手机、平板电脑、计算机或服务器等。
另外,本申请提供的应用运行方法应用范围广泛,尤其适用于迭代周期短、成本敏感的业务和企业。作为一个示例,可以作为SaaS(Software-as-a-Service,软件即服务)产品提供在云平台上。
图1是本申请实施例涉及的一种实施环境的示意图,如图1所示,该实施环境包括计算机设备10,计算机设备10中安装有主应用11,主应用11中集成有合并运行功能12,合并运行功能12用于获取子应用配置信息13,子应用配置信息包括需要启动的至少一个子应用的应用标识和启动策略。其中,主应用和子应用可以为微服务应用,也可以为单体应用。
在主应用11启动之后,主应用11可以在运行过程中调用合并运行功能12,通过合并运行功能12获取子应用配置信息13,然后按照子应用配置信息13中包括的至少一个子应用的启动策略,启动该至少一个子应用。而且,各个子应用在启动后运行在各个子应用对应的运行沙箱中。比如,在按照启动策略启动该至少一个子应用的过程中,对于需求启动的每个子应用,可以为该子应用创建对应的运行沙箱,并在对应的运行沙箱中启动该子应用。
图2是本申请实施例提供一种合并运行***20的示意图,该合并运行***20用于实现上述合并运行功能。如图2所示,该合并运行***20包括配置管理模块21、动态管控模块22、应用管理模块23、事件管理模块24、运行沙箱模块25和数据心跳模块26。
其中,配置管理模块21,负责管理合并运行的配置信息。在主应用启动后,主应用通过配置管理模块获取配置信息,并按配置信息声明的策略启动子应用。其中,配置信息可以包括需要启动的子应用的应用标识以及子应用的启动策略等信息。启动策略可以包括子应用的启动顺序等。
动态管控模块22,负责子应用的热部署。热部署是指在不重启主应用的情况下,更新子应用到指定的版本。
应用管理模块23,负责应用的运行期管理,包括主应用的运行期管理和子应用的运行期管理中的至少一种。主应用的运行期管理包括主应用的生命周期管理和运行期数据管理。子应用的运行期管理包括子应用的生命周期管理和运行期数据管理等。应用管理模块22能够实时获取应用运行期间的全局数据快照,全局数据快照包括主应用数据快照和子应用数据快照中的至少一种。主应用数据快照包括当前运行的主应用的应用标识和运行状态。子应用数据快照包括子应用的配置信息、当前运行的子应用的应用标识和运行状态等。
事件管理模块24,负责管理应用生命周期中的事件。其中,事件包含主应用生命周期中的事件和子应用生命周期的事件中的至少一种。子应用生命周期的事件包括子应用的启动事件和关闭事件等。
运行沙箱模块25,负责子应用的运行。运行沙箱用于为子应用提供运行环境,并保证各个子应用之间,以及子应用和主应用之间的运行环境相互独立,互不干扰。
数据心跳模块26,负责定期上报运行期的全局数据快照。其中,全局数据快照包含主应用数据快照和子应用数据快照中的至少一种。比如,将全局数据快照定期上报给主应用、第三方组件或管理设备。
接下来,对本申请实施例提供的应用运行方法进行详细说明。
图3是本申请实施例提供的一种应用运行方法的流程图,如图3所示,该方法包括如下步骤:
步骤101:在主应用启动之后,通过运行主应用调用合并运行功能,合并运行功能集成在主应用中。
其中,主应用为任一单体应用或微服务应用。
本申请实施例中,可以将待合并运行的应用划分为主应用和子应用,主应用为能够单独进行启动的应用,子应用为通过主应用来启动的应用。示例的,子应用可以共享主应用的进程,也即是,主应用和子应用可以共享同一进程。
其中,主应用和子应用可以为微服务应用,也可以为单体应用,本申请实施例对此不作限定。当主应用和子应用均为微服务应用时,可以通过将主应用和子应用合并运行,来将主应用和子应用合并为一个单体应用。
其中,单体应用是指传统的、将多种业务功能模块集成在单个应用程序的应用。在单体应用的基础上又发展起来一种微服务架构,微服务架构的设计原则是将复杂的单体应用按照业务功能、流程、组织架构等维度拆分为职责单一、独立运行的多个微服务应用(又称服务),且这多个微服务应用之间可以通过网络调用进行协调交互。
在启动主应用之前,需要预先设置待合并运行的主应用和子应用。示例的,可以将消耗服务器数量较多、流量较大的应用作为主应用,其它应用作为子应用。在设置主应用和子应用之后,为了使得两者能够合并运行,需要预先对主应用和子应用进行相应的改造。
作为一个示例,需要预先在主应用中集成合并运行功能,合并运行功能用于启动与主应用关联的子应用。示例的,主应用可以在启动过程中,调用合并运行功能的接口,通过该接口调用合并运行功能,通过该合并运行功能来启动子应用。示例的,合并运行功能可以通过软件包的形式提供给主应用。该软件包括可以为JAR(一种计算机文件格式)包等。
作为一个示例,需要预先设置为子应用设置子应用配置信息,子应用配置信息用于声明需要与主应用合并运行的子应用。比如,子应用配置信息包括需要启动的至少一个子应用的应用标识以及至少一个子应用的启动策略等配置信息。合并运行功能用于获取子应用配置信息,基于子应用配置信息来启动配置的子应用。其中,子应用的应用标识用于唯一标识子应用,可以为子应用的名称或ID等。启动策略可以包括启动顺序等。
进一步地,可以预先为子应用创建启动入口类,以便通过调用启动入口类来启动或关闭对应的子应用。启动入口类可以包括应用启动方法和应用关闭方法中的至少一种,应用启动方法用于启动对应的子应用,以供子应用启动时调用。应用关闭方法用于关闭对应的子应用,以供子应用关闭时调用。
另外,需要为子应用设置描述文件,该描述文件集成在子应用中,包括子应用的启动入口类的路径,也即是,可以在子应用的描述文件中声明子应用的启动入口类的路径,以便在需要开启或关闭子应用时,通过描述文件中的路径调用子应用的启动入口来。
另外,在确定主应用和子应用后,还需要设置主应用和子应用部署路径。比如,主应用的部署路径可以设置为设备的/opt/main_app文件夹,子应用的部署路径可以设置为设备的/opt/child_apps文件夹。在设置好主应用和子应用之后,需要根据预先设置的部署路径,将主应用和子应用发布至目标计算机设备,以将主应用部署到主应用的部署路径中,将子应用部署到子应用的部署路径中。比如,将主应用部署到目标计算机设备的/opt/main_app文件夹,将子应用部署到目标计算机设备的/opt/child_apps文件夹。
步骤102:通过合并运行功能,获取子应用配置信息,子应用配置信息包括需要启动的至少一个子应用的应用标识以及至少一个子应用的启动策略。
其中,至少一个子应用为待与主应用合并运行的子应用,可以为主应用之外的其他单体应用或微服务应用。至少一个子应用的启动策略可以包括至少一个应用的启动顺序等。当然,该子应用配置信息还可以包括其他配置信息,本申请实施例对此不做限定。
通过获取子应用配置信息,可以确定待与主应用合并运行的至少一个子应用的应用标识以及至少一个子应用的启动策略。在确定待与主应用合并运行的至少一个子应用的应用标识以及至少一个子应用的启动策略之后,可以加载需要启动的至少一个子应用,再按照启动策略启动已加载的该至少一个子应用。
步骤103:通过合并运行功能,按照该启动策略,启动至少一个子应用,且各个子应用在启动后运行在各个子应用对应的运行沙箱中。
也即是,可以在各个子应用对应的运行沙箱中,启动对应的子应用。各个子应用的运行沙箱用于为对应的子应用提供相对独立的运行环境,比如,可以为对应子应用的运行提供类加载器和实例管理容器等。
作为一个示例,可以按照该启动策略,为该至少一个子应用分别创建对应的运行沙箱,并在创建的运行沙箱中启动对应的子应用,以使子应用在启动后运行在对应的运行沙箱中。
比如,若按照启动策略,确定当前需要启动至少一个子应用中的第一子应用,则为第一子应用创建对应的第一运行沙箱,在第一运行沙箱中启动第一子应用,以使第一子应用运行在第一运行沙箱中。其中,第一子应用为至少一个子应用中的任一个。
作为一个示例,在第一运行沙箱中启动第一子应用的过程中,可以先解析第一子应用的描述文件,该描述文件包括第一子应用的启动入口类的路径,启动入口类包括应用启动方法,应用启动方法用于启动第一子应用;基于入口启动类的路径,调用启动入口类的应用启动方法;在第一运行沙箱中,通过该应用启动方法,启动第一子应用。
其中,该描述文件集成在第一子应用中,还可以包括应用关闭方法。
另外,本申请实施例中,还可以对应用生命周期中的事件进行监听,并将监听的事件上报给事件监听者。其中,事件监听者可以预先设,可以为主应用、第三方组件或其他管理设备,本申请实施例对此不作限定。监听的事件可以包括主应用生命周期中的事件和子应用生命周期的事件中的至少一种。子应用生命周期的事件包括子应用的启动事件和关闭事件等。
其中,子应用的启动事件可以包括当前启动的子应用的应用标识、启动成功状态和启动时间中的至少一种,当然还可以包括其他事件相关信息。子应用的关闭事件可以包括当前关闭的子应用的应用标识、关闭成功状态和关闭时间中的至少一种,当然还可以包括其他事件相关信息。
比如,在第一子应用启动之后,可以创建第一子应用的启动事件,并将该启动事件上报给事件监听者。该启动事件用于指示第一子应用启动成功。
再比如,在关闭第一子应用之后,可以创建第一子应用的关闭事件,将所述关闭事件上报给事件监听者。该关闭事件用于指示第一子应用关闭。
作为一个示例,可以通过上述图2中的事件管理模块24来管理应用生命周期中的事件,比如用于监听应用生命周期中产生的事件,并将监听的事件上报给事件监听者。
作为一个示例,为了对应用的运行状态进行监控,在还可以采集应用运行期间的全局数据快照,比如通过上述图2中的应用管理模块22来实时获取应用运行期间的全局数据快照。其中,该全局数据快照包括主应用数据快照和子应用数据快照中的至少一种,主应用数据快照包括当前运行的主应用的应用标识和运行状态,子应用数据快照包括当前运行的子应用的应用标识和运行状态。
在采集应用运行期间的全局数据快照后,还可以对采集的全局数据快照进行上报,比如将采集的全局数据快照上报给主应用、第三方组件或管理设备等。比如,可以通过上述图2中的数据心跳模块26,来定期上报运行期的全局数据快照,以便数据接收者基于全局数据快照及时获取应用的运行状态。
作为一个示例,本申请实施例提供的合并运行方案还可以支持子应用的热部署,即可以在不重启主应用的情况下,对子应用进行更新,以将子应用更新到指定版本。比如,可以通过上述图2中的动态管控模块22来负责子应用的热部署。如此,可以提高应用更新效率。
作为一个示例,热部署的流程可以包括:对于至少一个子应用中的第一子应用,在第一子应用启动之后,当需要对第一子应用进行更新时,先关闭第一子应用,以及关闭运行第一子应用的第一运行沙箱。然后,基于第一子应用的更新文件,对第一子应用的原始应用文件进行更新。
进一步地,在对第一子应用的原始应用文件进行更新之前,还可以先清除第一子应用的调用信息,比如清除第一子应用涉及的类和示例的引用等。
本申请实施例中,假设存在应用A、应用B和应用C,在合并运行前,每个应用需要运行在各自服务器上单独的进程中。为了降低服务成本,通过本申请实施例提供的合并运行方法,可以将应用A、应用B和应用C合并运行在同一服务器上,且三者共享同一进程。如此,可以节省服务器资源和服务成本。
比如,以图2提供的逻辑架构为例,请参考图4,在合并运行功能启动之前,可以先对数据心跳模块26进行初始化,然后启动数据心跳模块26。数据心跳模块26启动后可以定时获取并上报运行期的全局数据快照,通过全局数据快照可了解当前应用的运行状态。在主应用启动后,可以从配置管理模块21获取子应用配置信息,从子应用配置信息中解析出需要启动的子应用以及子应用的启动策略等信息。然后,按照解析结果加载需要启动的子应用,将加载成功的子应用注册到应用管理器中,之后按照启动策略启动已加载的子应用。比如,若子应用包括应用B和应用C,配置的启动策略为应用B第一顺位启动,应用C第二顺位启动,则为应用B创建运行沙箱,并在运行沙箱中启动应用B。应用B启动成功后,创建应用B的启动事件,并将应用B的启动事件提交给事件管理模块24。事件管理模块24接收到应用B的启动事件后,广播给所有事件监听者。至此,完成应用B的启动。接着,按照同样的逻辑启动应用C,直至所有子应用启动完毕。
本申请实施例中,主应用中集成有合并运行功能,因此在主应用启动之后,通过运行主应用即可调用合并运行功能,并通过合并运行功能,来获取子应用配置信息,按照子应用配置信息包括的需要启动的至少一个子应用的应用标识和启动策略,在运行沙箱中启动至少一个子应用。如此,即可实现多个应用的合并运行,当这多个应用为微服务应用时,可以采用较低的改造成本合并运行这多个微服务应用,而无需将这多个微服务应用重新开发成单体应用,进而节省了服务器资源,提高了服务器的资源利用率。
图5是本申请实施例提供的一种应用运行装置的结构框图,该装置可以集成在计算机设备中,如图5所示,该装置包括:
调用模块501,用于在主应用启动之后,通过运行所述主应用调用合并运行功能,所述合并运行功能集成在所述主应用中,所述主应用为任一单体应用或微服务应用;
获取模块502,用于通过所述合并运行功能,获取子应用配置信息,所述子应用配置信息包括需要启动的至少一个子应用的应用标识以及所述至少一个子应用的启动策略,所述至少一个子应用为所述主应用之外的其他单体应用或微服务应用;
启动模块503,用于通过所述合并运行功能,按照所述启动策略,启动所述至少一个子应用,且各个子应用在启动后运行在各个子应用对应的运行沙箱中。
可选地,所述启动模块503用于:
若按照所述启动策略,确定当前需要启动所述至少一个子应用中的第一子应用,则为所述第一子应用创建对应的第一运行沙箱,所述第一子应用为所述至少一个子应用中的任一个;
在所述第一运行沙箱中启动所述第一子应用,以使所述第一子应用运行在所述第一运行沙箱中。
可选地,所述启动模块503用于:
解析所述第一子应用的描述文件,所述描述文件集成在所述第一子应用中,所述描述文件包括所述第一子应用的启动入口类的路径,所述启动入口类包括应用启动方法,所述应用启动方法用于启动所述第一子应用;
基于所述入口启动类的路径,调用所述启动入口类的应用启动方法;
在所述第一运行沙箱中,通过所述应用启动方法,启动所述第一子应用。
可选地,所述各个子应用对应的运行沙箱用于为所述各个子应用的运行提供类加载器和实例管理容器。
可选地,所述装置还包括:
第一创建模块,用于对于所述至少一个子应用中的第一子应用,在所述第一子应用启动之后,创建所述第一子应用的启动事件,所述启动事件用于指示所述第一子应用启动成功,所述第一子应用为所述至少一个子应用中的任一个;
第一上报模块,用于将所述启动事件上报给事件监听者,所述事件监听者为所述主应用或第三方组件。
可选地,所述启动事件包括所述第一子应用的应用标识、启动成功状态和启动时间中的至少一种。
可选地,所述装置还包括:
关闭模块,用于对于所述至少一个子应用中的第一子应用,在所述第一子应用启动之后,当需要对所述第一子应用进行更新时,关闭所述第一子应用,以及关闭运行所述第一子应用的第一运行沙箱,所述第一子应用为所述至少一个子应用中的任一个;
清除模块,用于清除所述第一子应用的调用信息;
更新模块,用于基于所述第一子应用的更新文件,对所述第一子应用的原始应用文件进行更新。
可选地,所述装置还包括:
第二创建模块,用于创建所述第一子应用的关闭事件,所述关闭事件用于指示所述第一子应用关闭;
第二上报模块,用于将所述关闭事件上报给事件监听者,所述事件监听者为所述主应用或第三方组件。
可选地,所述装置还包括:
采集模块,用于采集全局数据快照,所述全局数据快照包括主应用数据快照和子应用数据快照中的至少一种,所述主应用数据快照包括当前运行的所述主应用的应用标识和运行状态,所述子应用数据快照包括当前运行的子应用的应用标识和运行状态。
本申请实施例中,主应用中集成有合并运行功能,因此在主应用启动之后,通过运行主应用即可调用合并运行功能,并通过合并运行功能,来获取子应用配置信息,按照子应用配置信息包括的需要启动的至少一个子应用的应用标识和启动策略,在运行沙箱中启动至少一个子应用。如此,即可实现多个应用的合并运行,当这多个应用为微服务应用时,可以采用较低的改造成本合并运行这多个微服务应用,而无需将这多个微服务应用重新开发成单体应用,进而节省了服务器资源,提高了服务器的资源利用率。
需要说明的是:上述实施例提供的应用运行装置在合并运行应用时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用运行装置与应用运行方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6是本申请实施例提供的一种计算机设备600的结构框图。该计算机设备600可以是手机、平板电脑、智能电视、多媒体播放设备、可穿戴设备、台式电脑、服务器等电子设备。该计算机设备600可用于实施上述实施例中提供的应用运行方法。
通常,计算机设备600包括有:处理器601和存储器602。
处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(FieldProgrammable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本申请中方法实施例提供的应用运行方法。
在一些实施例中,计算机设备600还可选包括有:***设备接口603和至少一个***设备。处理器601、存储器602和***设备接口603之间可以通过总线或信号线相连。各个***设备可以通过总线、信号线或电路板与***设备接口603相连。具体地,***设备可以包括:显示屏604、音频电路605、通信接口606和电源607中的至少一种。
本领域技术人员可以理解,图6中示出的结构并不构成对计算机设备600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性的实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述应用运行方法。
在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于实现上述应用运行方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (12)

1.一种应用运行方法,其特征在于,所述方法包括:
在主应用启动之后,通过运行所述主应用调用合并运行功能,所述合并运行功能集成在所述主应用中,所述主应用为任一单体应用或微服务应用;
通过所述合并运行功能,获取子应用配置信息,所述子应用配置信息包括需要启动的至少一个子应用的应用标识以及所述至少一个子应用的启动策略,所述至少一个子应用为所述主应用之外的其他单体应用或微服务应用;
通过所述合并运行功能,按照所述启动策略,启动所述至少一个子应用,且各个子应用在启动后运行在各个子应用对应的运行沙箱中。
2.如权利要求1所述的方法,其特征在于,所述按照所述启动策略,启动所述至少一个子应用,包括:
若按照所述启动策略,确定当前需要启动所述至少一个子应用中的第一子应用,则为所述第一子应用创建对应的第一运行沙箱,所述第一子应用为所述至少一个子应用中的任一个;
在所述第一运行沙箱中启动所述第一子应用,以使所述第一子应用运行在所述第一运行沙箱中。
3.如权利要求2所述的方法,其特征在于,所述在所述第一运行沙箱中启动所述第一子应用,包括:
解析所述第一子应用的描述文件,所述描述文件集成在所述第一子应用中,所述描述文件包括所述第一子应用的启动入口类的路径,所述启动入口类包括应用启动方法,所述应用启动方法用于启动所述第一子应用;
基于所述入口启动类的路径,调用所述启动入口类的应用启动方法;
在所述第一运行沙箱中,通过所述应用启动方法,启动所述第一子应用。
4.如权利要求1所述的方法,其特征在于,所述各个子应用对应的运行沙箱用于为所述各个子应用的运行提供类加载器和实例管理容器。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
对于所述至少一个子应用中的第一子应用,在所述第一子应用启动之后,创建所述第一子应用的启动事件,所述启动事件用于指示所述第一子应用启动成功,所述第一子应用为所述至少一个子应用中的任一个;
将所述启动事件上报给事件监听者,所述事件监听者为所述主应用或第三方组件。
6.如权利要求5所述的方法,其特征在于,所述启动事件包括所述第一子应用的应用标识、启动成功状态和启动时间中的至少一种。
7.如权利要求1-6任一所述的方法,其特征在于,所述方法还包括:
对于所述至少一个子应用中的第一子应用,在所述第一子应用启动之后,当需要对所述第一子应用进行更新时,关闭所述第一子应用,以及关闭运行所述第一子应用的第一运行沙箱,所述第一子应用为所述至少一个子应用中的任一个;
清除所述第一子应用的调用信息;
基于所述第一子应用的更新文件,对所述第一子应用的原始应用文件进行更新。
8.如权利要求7所述的方法,其特征在于,所述关闭所述第一子应用之后,还包括:
创建所述第一子应用的关闭事件,所述关闭事件用于指示所述第一子应用关闭;
将所述关闭事件上报给事件监听者,所述事件监听者为所述主应用或第三方组件。
9.如权利要求1-7任一所述的方法,其特征在于,所述按照所述启动策略,启动所述至少一个子应用之后,还包括:
采集全局数据快照,所述全局数据快照包括主应用数据快照和子应用数据快照中的至少一种,所述主应用数据快照包括当前运行的所述主应用的应用标识和运行状态,所述子应用数据快照包括当前运行的子应用的应用标识和运行状态。
10.一种应用运行装置,其特征在于,所述装置包括:
调用模块,用于在主应用启动之后,通过所述主应用调用合并运行功能,所述合并运行功能集成在所述主应用中,所述主应用为任一单体应用或微服务应用;
获取模块,用于通过所述合并运行功能,获取子应用配置信息,所述子应用配置信息包括需要启动的至少一个子应用的应用标识以及所述至少一个子应用的启动策略,所述至少一个子应用为所述主应用之外的其他单体应用或微服务应用;
启动模块,用于通过所述合并运行功能,按照所述启动策略,启动所述至少一个子应用,且各个子应用在启动后运行在各个子应用对应的运行沙箱中。
11.一种计算机设备,其特征在于,所述设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-9所述的任一项方法的步骤。
12.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现权利要求1-9所述的任一项方法的步骤。
CN202010833654.8A 2020-08-18 2020-08-18 应用运行方法、装置及存储介质 Withdrawn CN112000353A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010833654.8A CN112000353A (zh) 2020-08-18 2020-08-18 应用运行方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010833654.8A CN112000353A (zh) 2020-08-18 2020-08-18 应用运行方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN112000353A true CN112000353A (zh) 2020-11-27

Family

ID=73474130

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010833654.8A Withdrawn CN112000353A (zh) 2020-08-18 2020-08-18 应用运行方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN112000353A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112748962A (zh) * 2021-01-22 2021-05-04 北京五八信息技术有限公司 应用加载方法、装置、电子设备和计算机可读介质
CN113254237A (zh) * 2021-06-11 2021-08-13 海尔数字科技(青岛)有限公司 前端应用调用方法、设备、存储介质及程序产品
CN113419817A (zh) * 2021-06-22 2021-09-21 康键信息技术(深圳)有限公司 前端应用嵌套方法、装置、设备及存储介质
CN114416224A (zh) * 2022-03-25 2022-04-29 共道网络科技有限公司 一种在多微服务环境下调用微服务的方法及装置
CN117149468A (zh) * 2023-10-30 2023-12-01 建信金融科技有限责任公司 一种资源访问方法、装置、电子设备及计算机可读介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104035804A (zh) * 2014-06-26 2014-09-10 北京中电普华信息技术有限公司 一种应用集成方法及装置
CN106547578A (zh) * 2015-09-21 2017-03-29 阿里巴巴集团控股有限公司 终端应用app的加载方法及装置
CN107766050A (zh) * 2017-10-31 2018-03-06 新华三云计算技术有限公司 一种异构应用的部署方法以及装置
CN110532044A (zh) * 2019-08-26 2019-12-03 锐捷网络股份有限公司 一种大数据批处理方法、装置、电子设备及存储介质
CN110708368A (zh) * 2019-09-25 2020-01-17 北京计算机技术及应用研究所 一种基于路由分发的微前端***和方法
CN111124391A (zh) * 2019-12-18 2020-05-08 中科全维科技(苏州)有限公司 一种桌面端软件挂件视窗管理方法和***

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104035804A (zh) * 2014-06-26 2014-09-10 北京中电普华信息技术有限公司 一种应用集成方法及装置
CN106547578A (zh) * 2015-09-21 2017-03-29 阿里巴巴集团控股有限公司 终端应用app的加载方法及装置
US20180217853A1 (en) * 2015-09-21 2018-08-02 Alibaba Group Holding Limited Loading sub-applications for a terminal application
CN107766050A (zh) * 2017-10-31 2018-03-06 新华三云计算技术有限公司 一种异构应用的部署方法以及装置
CN110532044A (zh) * 2019-08-26 2019-12-03 锐捷网络股份有限公司 一种大数据批处理方法、装置、电子设备及存储介质
CN110708368A (zh) * 2019-09-25 2020-01-17 北京计算机技术及应用研究所 一种基于路由分发的微前端***和方法
CN111124391A (zh) * 2019-12-18 2020-05-08 中科全维科技(苏州)有限公司 一种桌面端软件挂件视窗管理方法和***

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112748962A (zh) * 2021-01-22 2021-05-04 北京五八信息技术有限公司 应用加载方法、装置、电子设备和计算机可读介质
CN112748962B (zh) * 2021-01-22 2023-10-20 北京五八信息技术有限公司 应用加载方法、装置、电子设备和计算机可读介质
CN113254237A (zh) * 2021-06-11 2021-08-13 海尔数字科技(青岛)有限公司 前端应用调用方法、设备、存储介质及程序产品
CN113419817A (zh) * 2021-06-22 2021-09-21 康键信息技术(深圳)有限公司 前端应用嵌套方法、装置、设备及存储介质
CN113419817B (zh) * 2021-06-22 2024-04-05 康键信息技术(深圳)有限公司 前端应用嵌套方法、装置、设备及存储介质
CN114416224A (zh) * 2022-03-25 2022-04-29 共道网络科技有限公司 一种在多微服务环境下调用微服务的方法及装置
CN117149468A (zh) * 2023-10-30 2023-12-01 建信金融科技有限责任公司 一种资源访问方法、装置、电子设备及计算机可读介质

Similar Documents

Publication Publication Date Title
CN112000353A (zh) 应用运行方法、装置及存储介质
US11853816B2 (en) Extending the Kubernetes API in-process
CN100511156C (zh) 强制性地终止输入/输出操作阻止的线程的设备和方法
US9483314B2 (en) Systems and methods for fault tolerant batch processing in a virtual environment
CN110750592B (zh) 数据同步的方法、装置和终端设备
CN109656742B (zh) 一种节点异常处理方法、装置及存储介质
CN105278996A (zh) 一种日志采集方法、装置及日志服务***
CN112527310A (zh) 多租户数据隔离方法、装置、计算机设备及存储介质
CA2904253C (en) Computer system using in-service software upgrade
CN107025135B (zh) Docker容器内应用进程管理方法、装置和介质
CN109445937B (zh) 一种组件化编程及无缝执行方法
CN111679888A (zh) 一种代理容器的部署方法及装置
CN112214388A (zh) 内存监控方法、装置、设备及计算机可读存储介质
CN113190282A (zh) 安卓运行环境构建的方法及装置
CN110659104B (zh) 一种业务监控方法及相关设备
CN113127050A (zh) 一种应用资源打包过程监控方法、装置、设备和介质
CN114064083A (zh) 通过在配置中心自定义模板部署云原生应用的方法及应用
WO2020248512A1 (zh) 一种构造终端应用行为的运行时模型的方法
CN112882921B (zh) 故障模拟方法和装置
CN109634636B (zh) 应用处理方法、装置、设备和介质
CN111324386A (zh) 分身应用程序的启动方法、装置、电子设备及存储介质
CN113296802B (zh) 虚拟机热升级方法、主机设备及存储介质
CN113127051B (zh) 一种应用资源打包过程监控方法、装置、设备和介质
CN116737251A (zh) 一种启动方法、装置、终端设备及介质
CN115016893A (zh) 一种基于Kubernetes的区块链部署方法和装置

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
WW01 Invention patent application withdrawn after publication

Application publication date: 20201127

WW01 Invention patent application withdrawn after publication