本说明书实施例提供了一种在应用开发框架中加载应用程序实例的方法和装置,所述方法包括:获取多个应用程序实例各自的配置元素;将所述多个应用程序实例分为预定数目的组;并发生成预定数目的配置文件,其中,所述预定数目的配置文件与所述预定数目的组一一对应,每个配置文件中包括与其对应的一组中的各个应用程序实例各自的配置元素;以及分别基于所述预定数目的配置文件,并发进行应用程序实例的加载。
Method and Device for Loading Application Instances in Application Development Framework
【技术实现步骤摘要】
在应用开发框架中加载应用程序实例的方法和装置
本说明书实施例涉及应用开发框架
,更具体地,涉及一种在应用开发框架中加载应用程序实例的方法和装置。
技术介绍
在现有应用开发框架中,例如会在启动时加载各个应用程序实例。以Spring框架为例,在框架启动时,会从数据库中读取脚本文本,对脚本进行语法检查并实时编译成可用的类,并自动烧录进spring运行环境。在烧录的过程中,会为每一个应用程序实例(bean)生成一个完整的xml配置文件,再由spring统一加载。由于现有框架的系统功能对于这些脚本是强依赖,在启动时无法跳过或者异步加载。在现有技术中,在上述语法检查和编译过程中使用了单线程,Spring框架在加载应用程序实例的过程中,会将与各个应用程序对应的各个xml配置文件合并进行,并且使用单线程进行加载,从而造成启动耗时非常大,多达15分钟。因此,需要一种更有效的在应用开发框架中加载应用程序实例的方案。
技术实现思路
本说明书实施例旨在提供一种更有效的在应用开发框架中加载应用程序实例的方案,以解决现有技术中的不足。为实现上述目的,本说明书一个方面提供一种在应用开发框架中加载应用程序实例的方法,包括:获取多个应用程序实例各自的配置元素;将所述多个应用程序实例分为预定数目的组;并发生成预定数目的配置文件,其中,所述预定数目的配置文件与所述预定数目的组一一对应,每个配置文件中包括与其对应的一组中的各个应用程序实例各自的配置元素;以及分别基于所述预定数目的配置文件,并发进行应用程序实例的加载。在一个实施例中,各个应用程序实例具有互不相同的名称,其中,将所述多个应用程序实例分为预定数目的组包括,计算各个应用程序实例的名称的哈希值;对于每个应用程序实例,基于其名称的哈希值中至少一个预定位的取值,将该应用程序实例分配至预定数目的组中的一组。在一个实施例中,所述应用开发框架为Spring框架。在一个实施例中,所述配置文件为xml文件。在一个实施例中,获取多个应用程序实例各自的配置元素包括,通过读取数据库中预存的多个脚本,获取多个应用程序实例各自的配置元素。在一个实施例中,通过读取数据库中预存的多个脚本,获取多个应用程序实例各自的配置元素包括,通过读取数据库中预存的多个脚本,并对所述多个脚本并发地进行语法检查和编译,获取多个应用程序实例各自的配置元素。在一个实施例中,所述方法在所述应用开发框架启动时执行,或者在所述多个脚本中的至少一个脚本更新之后执行。本说明书另一方面提供一种在应用开发框架中加载应用程序实例的装置,包括:获取单元,配置为,获取多个应用程序实例各自的配置元素;分组单元,配置为,将所述多个应用程序实例分为预定数目的组;生成单元,配置为,并发生成预定数目的配置文件,其中,所述预定数目的配置文件与所述预定数目的组一一对应,每个配置文件中包括与其对应的一组中的各个应用程序实例各自的配置元素;以及加载单元,配置为,分别基于所述预定数目的配置文件,并发进行应用程序实例的加载。在一个实施例中,各个应用程序实例具有互不相同的名称,其中,所述分组单元包括,计算子单元,配置为,计算各个应用程序实例的名称的哈希值;分配子单元,配置为,对于每个应用程序实例,基于其名称的哈希值中至少一个预定位的取值,将该应用程序实例分配至预定数目的组中的一组。在一个实施例中,所述获取单元还配置为,通过读取数据库中预存的多个脚本,获取多个应用程序实例各自的配置元素。在一个实施例中,所述获取单元还配置为,通过读取数据库中预存的多个脚本,对该多个脚本进行分组,并对所述多组脚本并发地进行语法检查和编译,获取多个应用程序实例各自的配置元素。本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。本说明书另一方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。通过根据本说明书实施例的在框架启动时加载应用程序实例的方案,通过使用多线程对多个应用程序实例进行并行加载,大幅降低了加载时间,大大缩短了启动时间,并且在遇到脚本更新时,可以同样通过多线程快速地更新脚本,并且实现故障隔离、老脚本备份,从而提高了安全性,减少了线上故障的可能性。附图说明通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:图1示出根据本说明书实施例中的应用开发框架中包括的核心容器100;图2示出根据本说明书实施例的一种在应用开发框架中加载应用程序实例的方法;图3示意示出了图2所示过程;图4示出根据本说明书实施例的一种在应用开发框架中加载应用程序实例的装置400。具体实施方式下面将结合附图描述本说明书实施例。图1示出根据本说明书实施例中的应用开发框架中包括的核心容器100。所述应用开发框架例如为Spring框架,Spring框架是一种开源框架,框架的主要优势之一为其分层结构,分层结构允许用户选择使用哪个组件。核心容器100为控制反转(IOC)容器,其中以工厂模式(BeanFactory)生产并管理多个应用程序实例(Bean)。如图1中所示,核心容器100中包括四个组件:应用程序实例组件11、核心组件12、上下文组件13和SpEL组件14。其中,应用程序实例组件11解决例如如下问题:应用程序实例的定义、应用程序实例的创建、对应用程序实例的解析。核心组件12定义了资源的访问方式。核心组件12和应用程序实例组件11提供了整个框架最基础的部分,包括了控制反转依赖注入。上下文组件13建立在核心组件和应用程序实例组件11提供的基础之上,给Spring框架提供了一个运行时的环境,用以保存各个对象(即,应用程序实例)的状态。SpEL组件14提供了一种强大的用于在运行时操作对象的表达式语言。本说明书实施例的在框架中加载应用程序实例的方案,即由该核心容器100执行的方案,具体是,该核心容器100在读取了多个(例如N个)应用程序实例的配置元素之后,在应用程序实例组件11中例如基于哈希算法将各个应用程序实例的配置元素分配到预定数目(例如M)个xml文件中,从而基于该M个xml文件,在上下文组件13中注册到并发哈希映射表(ConcurrentHashMap)中。可以理解,在上述描述中,虽然以Spring框架为例进行了说明,然而,本说明书实施例中不限于Spring框架,而可以为任何底层支持并发加载应用程序实例的应用开发框架。下文中将同样以Spring框架为例进行说明。下面具体描述上述加载方案。图2示出根据本说明书实施例的一种在应用开发框架中加载应用程序实例的方法,包括:步骤S202,获取多个应用程序实例各自的配置元素;步骤S204,将所述多个应用程序实例分为预定数目的组;步骤S206,并发生成预定数目的配置文件,其中,所述预定数目的配置文件与所述预定数目的组一一对应,每个配置文件中包括与其对应的一组中的各个应用程序实例各自的配置元素;以及步骤S208,分别基于所述预定数目的配置文件,并发进行应用程序实例的加载。应用开发框架通常在启动时进行应用程序实例的加载,因此,该方法可在框架启动时执行。在框架通过脚本获取各个应用程序实例的配置元素的情况中,当脚本更本文档来自技高网...
【技术保护点】
1.一种在应用开发框架中加载应用程序实例的方法,包括:获取多个应用程序实例各自的配置元素;将所述多个应用程序实例分为预定数目的组;并发生成预定数目的配置文件,其中,所述预定数目的配置文件与所述预定数目的组一一对应,每个配置文件中包括与其对应的一组中的各个应用程序实例各自的配置元素;以及分别基于所述预定数目的配置文件,并发进行应用程序实例的加载。
【技术特征摘要】
1.一种在应用开发框架中加载应用程序实例的方法,包括:获取多个应用程序实例各自的配置元素;将所述多个应用程序实例分为预定数目的组;并发生成预定数目的配置文件,其中,所述预定数目的配置文件与所述预定数目的组一一对应,每个配置文件中包括与其对应的一组中的各个应用程序实例各自的配置元素;以及分别基于所述预定数目的配置文件,并发进行应用程序实例的加载。2.根据权利要求1所述的方法,其中,各个应用程序实例具有互不相同的名称,其中,将所述多个应用程序实例分为预定数目的组包括,计算各个应用程序实例的名称的哈希值;对于每个应用程序实例,基于其名称的哈希值中至少一个预定位的取值,将该应用程序实例分配至预定数目的组中的一组。3.根据权利要求1所述的方法,其中,所述应用开发框架为Spring框架。4.根据权利要求3所述的方法,其中,所述配置文件为xml文件。5.根据权利要求1所述的方法,其中,获取多个应用程序实例各自的配置元素包括,通过读取数据库中预存的多个脚本,获取多个应用程序实例各自的配置元素。6.根据权利要求5所述的方法,其中,通过读取数据库中预存的多个脚本,获取多个应用程序实例各自的配置元素包括,通过读取数据库中预存的多个脚本,对该多个脚本进行分组,并对所述多组脚本并发地进行语法检查和编译,获取多个应用程序实例各自的配置元素。7.根据权利要求5所述的方法,其中,所述方法在所述应用开发框架启动时执行,或者在所述多个脚本中的至少一个脚本更新之后执行。8.一种在应用开发框架启动时加载应用程序实例的装置,包括:获取单元,配置为,获取多个应用程序实例各自的配置元素;分组单元,配置为,将所述多个应用程序实例分为预定数...
【专利技术属性】
技术研发人员:唐波,杨潇,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛,KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。