CN108595221B - PaaS平台的插件加载方法、装置、服务器及存储介质 - Google Patents
PaaS平台的插件加载方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN108595221B CN108595221B CN201810383896.4A CN201810383896A CN108595221B CN 108595221 B CN108595221 B CN 108595221B CN 201810383896 A CN201810383896 A CN 201810383896A CN 108595221 B CN108595221 B CN 108595221B
- Authority
- CN
- China
- Prior art keywords
- plug
- manager
- target
- loading
- installation package
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种PaaS平台的插件加载方法、装置、服务器及存储介质,属于PaaS平台领域。所述方法包括:接收客户端发送的插件加载请求,插件加载请求用于申请在插件管理器中加载目标插件;根据插件加载请求下载目标插件的安装包;通过编译器对安装包进行编译,得到目标插件,编译器是插件管理器中的编译器;将目标插件加载到插件管理器。由于本实施例中客户端对于目标插件的加载是通过插件管理器来执行的,使得插件管理器能够集成开发人员对于插件的加载需求,令开发人员不必再针对不同的插件启动不同的管理程序进行加载和控制,减小了服务器用于加载PaaS平台中的插件的开销,提高了客户端加载PaaS平台中的插件的效率。
Description
技术领域
本申请实施例涉及PaaS平台技术领域,特别涉及一种PaaS平台的插件加载方法、装置、服务器及存储介质。
背景技术
平台即服务(Platform-as-a-Service,PaaS)是一种将服务器平台或开发环境作为服务提供给应用开发商的服务模式。
PssS平台提供了应用开发到上线过程中所涉及的一系列基础服务支持,降低了应用开发的难度。相关技术中,客户端在使用PssS平台中的插件时,需要启动控制该插件的控制程序或者控制进程,通过该控制程序或控制进程管理或使用该插件。
然而,当客户端需要控制多个插件时,客户端需要启动大量控制程序或者控制进程,增加了服务器的开销,并导致管理PaaS平台中的插件的效率低下。
发明内容
本申请实施例提供了一种PaaS平台的插件加载方法、装置、服务器及存储介质,可以用于解决当客户端需要控制多个插件时,客户端需要启动大量控制程序或者控制进程,增加服务器的开销并导致管理PaaS平台中的插件的效率低下的问题。所述技术方案如下:
第一方面,提供了一种PaaS平台的插件加载方法,所述方法用于PaaS平台中的应用服务器中的插件管理器,所述方法包括:
接收客户端发送的插件加载请求,所述插件加载请求用于申请在所述插件管理器中加载目标插件;
根据所述插件加载请求下载所述目标插件的安装包;
通过编译器对所述安装包进行编译,得到所述目标插件,所述编译器是所述插件管理器中的编译器;
将所述目标插件加载到所述插件管理器。
第二方面,提供了一种PaaS平台的应用部署装置,所述方法用于PaaS平台中的应用服务器中的插件管理器,所述装置包括:
请求接收模块,被配置为接收客户端发送的插件加载请求,所述插件加载请求用于申请在所述插件管理器中加载目标插件;
插件下载模块,被配置为根据所述插件加载请求下载所述目标插件的安装包;
插件编译模块,被配置为通过编译器对所述安装包进行编译,得到所述目标插件,所述编译器是所述插件管理器中的编译器;
插件加载模块,被配置为将所述目标插件加载到所述插件管理器。
第三方面,提供了一种服务器,所述服务器包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如第一方面所述的插件加载方法。
第四方面,提供了一种计算机可读存储介质,所述存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如第一方面所述的插件加载方法。
本申请实施例中,PaaS平台的应用服务器中的插件管理器,能够接收客户端发送的插件加载请求,根据该插件加载请求下载目标插件的安装包,并通过编译器对该安装包进行编译,并将得到的目标插件加载到插件管理器中。由于本实施例中客户端对于目标插件的加载是通过插件管理器来执行的,使得插件管理器能够集成开发人员对于插件的加载需求,令开发人员不必再针对不同的插件启动不同的管理程序进行加载和控制,减小了服务器用于加载PaaS平台中的插件的开销,提高了客户端加载PaaS平台中的插件的效率。
附图说明
图1是本申请一个实施例提供的PaaS平台的架构图;
图2是PaaS平台中应用部署过程的实施示意图;
图3是应用服务器中Agent的结构示意图;
图4是本申请一个示例性实施例示出的插件加载方法的流程图;
图5是本申请另一个示例性实施例示出的插件加载方法的流程图;
图6是本申请一个实施例提供的PaaS平台的插件加载装置的结构框图;
图7是本申请一个实施例提供的服务器的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
为了方便理解,下面对本申请实施例中涉及的名词进行介绍。
插件管理器(Plugin Manager):指运行在PaaS平台中的应用服务器中的一个控制软件,该控制软件运行在云端的服务器中,可以通过有线网络通信或者无线网络通信响应来自开发人员的终端中客户端的请求,以实现客户端加载、控制、使用或卸载等管理插件的方式。可选地,在一种可能的实现方式中,客户端通过访问管理服务器,管理服务器调用应用服务器中提供的应用程序编程接口注册器(API Register),来访问插件管理器,向插件管理器发送插件加载请求等请求信息。在一种可能的场景中,客户端向管理服务器发送请求信息,管理服务器向应用服务器转发该请求信息,应用服务器可以通过调用该APIRegister将请求信息传送到插件管理器中。可选地,在一种可能的实现方式中,插件管理器还可以称为控制台或核心控制台等,本实施例对此不做限定。
客户端:安装在开发人员的终端中的软件,具有访问并使用PaaS平台的服务的功能。在本申请实施例中,开发人员使用客户端访问PaaS平台中的管理服务器,通过管理服务器控制应用服务器中的插件管理器。举例而言,运营商提供的PaaS平台是通过开发人员使用客户端来访问并获取PaaS平台服务的。在一种可能的实现方式中,提供PaaS平台的运营商通过向开发人员提供账号和密钥的方式令被授权的开发人员登录PaaS平台。
可选地,在一种可能的实现方式中,一个插件管理器可以只向一个客户端提供服务。当一个插件管理器只向一个开发人员端提供服务时,应用服务器可以在检测到对应的客户端登录上线时,启动插件管理器;在检测到对应的客户端退出登录时,关闭插件管理器,以节约应用服务器的开销。在另一种可能的实现方式中,一个插件管理器还可以向至少两个客户端提供服务。当应用服务器检测到该插件管理器对应的一个客户端登录时,启动该插件管理器。当应用服务器检测到该插件管理器对应的全部客户端退出登录时,关闭该插件管理器。
目标插件:是PaaS平台提供给开发人员使用的软件,该插件可以存储在存储服务器中。客户端可以通过向插件管理发送该目标插件的标识来加载该插件。其中该目标插件的标识可以包括目标插件的名称、报名、端口号、IP地址、代码或者其它唯一标识该目标插件的信息,本实施例对此不作限定。可选地,该目标插件可以是独立的中间件,该中间件可以部署在PaaS平台中。可选地,该目标插件还可以是用于为指定中间件提供指定功能的功能插件。可选地,目标插件可以有不同的版本。例如,插件A可以有“插件A1.0”、“插件A2.0”和“插件A3.0”等等版本。
安装包:指用于将目标插件加载到插件管理器中的安装包,该安装包可以存储在存储服务器中。不同版本的目标插件含有不同的安装包。在一种可能的方式中,当存储服务器中获得插件A最新版本的安装包时,存储服务器可以删除插件A已有的版本的按转包,以节省存储服务器的存储空间。在另一种可能的方式中,当存储服务器中获得插件A最新版本的安装包时,存储服务器也可以同时保留插件A各个版本的安装包,以便开发人员能够使用各个版本的插件。
编译器:指所述插件管理器中的编译程序,能够将目标插件的安装包编译成为插件管理器能够运行的目标插件。其中,编译器可以包括预编译器和核心编译器。可选地,预编译器用于检测安装包是否损坏。在一些可能的实现方式中,预编译器又称为预加载器,本申请实施例对此不做限制。可选地,核心编译器用于将安装包编译成为插件管理器能够运行的目标插件。
目标插件的相关数据:用于支持目标插件向客户端提供指定的插件功能。可选地,包括客户端数据、环境数据、目录数据、安装数据和运行数据中至少一种。在一种可能的实现方式中,客户端数据用于指示客户端具有使用目标插件的权限,环境数据用于提供目标插件在插件管理器中的运行环境,目录数据用于指示安装目标插件和/或存储目标插件的运行数据的文件路径,安装数据是通过安装包将目标插件安装在插件管理器中时产生的数据。目录数据还可以包括安装目标插件和/或存储目标插件的运行数据的文件路径(文件目录)。插件管理器能够确定目标插件安装的文件目录,以及,存储目标插件的运行数据的文件路径。
请参考图1,其示出了本申请一个实施例提供的PaaS平台的架构图。该PaaS平台包括若干个机房10,各个机房10设置在不同地理区域,且每个机房10中包含应用服务器11、管理服务器12、注册服务器13和存储服务器14。
在一种可能的配置方式中,每个机房中设置有两台管理服务器12、三台注册服务器13以及三台存储服务器14。本申请实施例并不对机房中各种服务器的配置数量进行限定。
应用服务器11是运行有应用进程的服务器。其中,不同的应用进程用于提供不同的服务,且应用进程直接运行在应用服务器11的操作系统上,或,应用进程运行在应用服务器11内部的容器中,以便进行资源(包括硬件资源和网络资源)和访问权限隔离,减少应用进程间的相互影响。
为了实现对应用进程的管理,本申请实施例中,应用服务器11中设置有代理(Agent),该Agent即用于对运行的各个应用进程进行管理。可选的,该Agent为应用服务器11中的独立进程,用于控制应用进程的启动和停止,并对应用进程健康检查,从而保证应用进程所提供服务的可用性。本申请各个实施例提供的应用部署方法即由应用服务器(Agent)执行。
管理服务器12用于管理机房中各台服务器。可选的,管理服务器12负责应用部署、系统管理、消息队列管理、数据库管理、告警服务、搜索管理、分布式系统可靠协调管理等等。
在一种可能的实施方式中,消息队列管理包括RabbitMQ管理,数据库管理包括Redis和MongoDB管理,搜索管理包括ElasticSearch管理,分布式系统可靠协调管理包括Zookeeper管理。
为了保证管理的一致性,如图1所示,不同机房中的管理服务器12之间进行双向同步,并保持完全对等。比如,当机房A中管理服务器12的管理配置信息发生变更时,机房A中的管理服务器12即与机房B中的管理服务器12进行一次同步,以便机房B中的管理服务器12更新自身的管理配置信息。
注册服务器13是用于为应用进程注册服务端口的服务器,后续终端即通过该服务端口访问相应的应用进程,从而获取应用提供的相应服务。可选的,注册服务器13为全局命名(Global Naming Services,GNS)服务器,且注册的服务端口为传输控制协议(Transmission Control Protocol,TCP)端口。
为了保证同一应用进程在不同机房中命名注册的一致性,如图1所示,不同机房中的注册服务器13之间进行双向同步,并保持完全对等。比如,当机房A的注册服务器13为新增应用进程注册了服务端口后,该注册服务器13即与机房B中的注册服务器13进行一次同步,确保新增应用进程在机房B中的注册服务器13完成注册,并注册相同的服务端口。
存储服务器14是用于进行数据存储的服务器,可选的,该存储服务器14是分布式环境下高可用的键值(key-value)存储服务器,比如,存储服务器14为ETCD服务器或MySQL服务器。可选的,存储服务器14与注册服务器13相连,用于存储并维护应用进程与服务端口之间的对应关系;可选的,存储服务器14与管理服务器12相连,用于存储并维护不同应用进程对应的应用信息。
在一种可能的应用场景下,如图2所示,当需要部署新的应用进程时,管理员登陆管理服务器12后,通过管理服务器12向应用服务器11下发应用部署指令,管理服务器12根据该指令部署应用进程,并通过注册服务器13为应用进程注册服务端口。完成应用进程部署后,管理服务器12中的Agent启动应用进程,并在完成启动后,对应用进程进行健康检查,从而确保应用进程的可用性。并且,管理服务器12和注册服务器13通过数据更新的方式,分别将新增应用进程的应用信息及其服务端口更新至存储服务器14中,并与其它机房中的管理服务器12以及注册服务器13进行双向同步。
可选的,管理服务器12下发应用部署指令中包含应用规格、部署信息、环境变量、应用配置等信息。其中,应用规格包括中央处理(Central Procession Unit,CPU)规格、内存规格、存储容量规格以及网络上下行带宽规格中的至少一种;部署信息包括分配应用服务器标识、配置实例数量、文件目录、日志目录、部署脚本和回滚脚本中的至少一种;环境变量包括Java堆内存参数、垃圾回收(Garbage Collection,GC)参数、域名系统(Domain NameSystem,DNS)服务器信息、DNS生存周期(Time-To-Live,TTL)中的至少一种;应用配置包括应用进程标识、配置版本号等等。
可选的,应用服务器11中的Agent采用插件管理模式,利用插件实现对应用进程的管理,该Agent中包含若干实现不同功能的插件以及统一的插件管理模块,并支持插件的动态安装和卸载。
如图3所示,Agent中包括消息队列插件、数据库插件、应用部署插件、日志查看插件和健康检查插件。在实现插件动态安装时,插件通过管理服务器12调用应用程序编程接口(Application Programming Interface,API)进行插件注册,完成注册后,Agent的插件管理模块通过下载、编译、加载、校验等一系列操作,完成插件安装。当接收到管理服务器12下发的指令时,Agent中的插件管理模块即将指令分发至相应的插件来执行。比如,当接收到应用部署指令时,插件管理单元即将指令分发至应用部署插件,由应用部署插件完成应用部署;在应用完成部署并启动后,插件管理模块通过健康检查插件对应用进程进行健康检查,保证应用进程的可用性。
为了保证Agent的可靠性,避免因Agent宕机导致无法服务的问题,可选的,Agent在应用服务器11启动后,启动自检程序,从而通过自检程序定期检查Agent是否启动,并在检测到未启动的情况下实现重启,避免宕机。
可选的,如图3所示,Agent中还包括升级管理模块,用于根据管理服务器12下发的升级指令,完成Agent自升级。为了保证升级安全性,Agent接收到升级指令后,对拉取到的升级包进行合法性检测,并在检测到升级包合法时,对当前Agent程序进行备份后进行升级。若自检程序检测到升级失败,则使用备份对Agent进行恢复重启。
出于安全性考虑,管理服务器12向应用服务器11发送的指令使用私钥加密,应用服务器11接收到指令后,使用相应的公钥对指令进行解密,并在解密成功后执行指令并返回执行结果。可选的,针对不同类型的指令,管理服务器12加密时使用的私钥不同,相应的,应用服务器11进行解密时使用的公钥不同。其中,对于Agent操作指令,管理服务器12使用第一私钥对其进行加密,应用服务器11使用第一公钥对其进行解密,第一私钥和第一公钥分别存储在管理服务器12和应用服务器11本地;对于Agent升级指令,管理服务器12使用第二私钥对其进行加密,应用服务器11使用第二公钥对其进行解密,由于Agent操作指令会影响到Agent运行,因此,第二私钥由管理员保管,且不存储在管理服务器12中,而第二公钥则存储在应用服务器11本地。
需要说明的是,每个机房还可以包含其它必要组件,比如用于实现服务发现、请求分流以及负载均衡的接入网关,本申请实施例并不对此构成限定。
请参考图4,其是本申请一个示例性实施例示出的插件加载方法的流程图。本实施例以该方法应用于图1所示的应用服务器11中的插件管理器来举例说明。该方法包括:
步骤410,接收客户端发送的插件加载请求,插件加载请求用于申请在插件管理器中加载目标插件。
在申请实施例中,应用服务器中的插件管理器接收经由管理服务器转发的插件加载请求,该插件加载请求用于申请在插件管理器中加载目标插件。其中,该插件加载请求可以是开发人员的客户端发送的请求。通常而言,插件管理器在执行步骤410时是处于启动状态的。
在一种可能的实现方式中,若管理服务器检测到插件加载请求无法成功送达至插件管理器时,管理服务器可以先启动插件管理器。在插件管理器启动后,再向该装置发送插件加载请求。
步骤420,根据插件加载请求下载目标插件的安装包。
在本申请实施例中,插件管理器根据插件加载请求下载目标插件的安装包。可选地,该目标插件的安装包可以存储在存储服务器中。在一种可能的实现方式中,插件管理器可以从插件加载请求中读取目标插件标识,根据目标插件的标识下载该目标插件。
步骤430,通过编译器对安装包进行编译,得到目标插件,该编译器是插件管理器中的编译器。
在本申请实施例中,插件管理器通过编译器对安装包进行编译。在一种可能的方式中,编译器可以仅包括核心编译器,该编译器可以直接将安装包编译成为能够被插件管理器运行的目标插件。在另一种可能的实现方式中,编译器可以包括预编译器和核心编译器两部分。插件管理器首先通过预编译器对安装包中进行编译,当安装包能够通过预编译时,说明安装包没有损坏。随后插件管理器通过核心编译器对安装包中编译,使得安装包编译成为能够被插件管理器运行的目标插件。
步骤440,将目标插件加载到插件管理器。
在本申请实施例中,插件管理器将加载完成编译的目标插件。在一种可能的实现方式中,安装包被编译器编译完成后,会产生一个完成信息。插件管理器可以识别到该完成信息,从而确定目标插件已编译完成,进而将该目标插件加载到插件管理器中,确认该目标插件已经能够被客户端调用。
需要说明的是,目标插件被加载到插件管理器后,目标插件即可被客户端调用,进而提供该目标插件的功能。在一种可能的实现方式中,客户端发送的插件加载请求可以包括在插件使用请求中。当客户端直接向管理服务器发送插件使用请求时,管理服务器可以检测或者通知应用服务器中的插件管理器检测,插件管理器中是否已经完成加载该目标插件。当插件管理器中已经完成加载该目标插件时,插件管理器将对目标插件进行初始化,依据目标插件的相关数据对目标插件进行初始化。其中,相关数据可以包括客户端数据、环境数据、目录数据、安装数据和运行数据中至少一种。
在初始化中,插件管理器可以配置目标插件的授权访问用户名单,也可以配置目标插件的运行环境。可选地,运行环境可以包括Java语言运行环境或PHP语言运行环境中,运行环境还可以包括其他编程语言运行环境,本实施例对此不做限制。
可选地,在初始化中,插件管理器还可以配置目录数据。在一种可能实现的方式中,插件管理器将配置安装目标插件的目录,以及存储目标插件运行时产生的数据存储的目录。
本申请实施例中,PaaS平台的应用服务器中的插件管理器,能够接收客户端发送的插件加载请求,根据该插件加载请求下载目标插件的安装包,并通过编译器对该安装包进行编译,并将得到的目标插件加载到插件管理器中。由于本实施例中客户端对于目标插件的加载是通过插件管理器来执行的,使得插件管理器能够集成开发人员对于插件的加载需求,令开发人员不必再针对不同的插件启动不同的管理程序进行加载和控制,减小了服务器用于加载PaaS平台中的插件的开销,提高了客户端加载PaaS平台中的插件的效率。
请参考图5,其是本申请另一个示例性实施例示出的插件加载方法的流程图。本实施例以该方法应用于图1所示的应用服务器11中的插件管理器来举例说明。该方法包括:
步骤501,接收客户端发送的插件加载请求,插件加载请求用于申请在插件管理器中加载目标插件。
在本申请实施例中,步骤501与步骤410的执行过程类似,此处不再赘述。
步骤502,检测插件管理器中是否存在目标插件。
在本申请实施例中,插件管理器可以检测自身中是否存在目标插件。
步骤503,当插件管理器中不存在目标插件时,根据插件加载请求下载目标插件的安装包。
在本申请实施例中,当插件管理器中不存在目标插件时,插件管理器可以能够根据插件加载请求下载目标插件的安装包。其中,根据插件加载请求下载目标插件的安装包的执行过程可以参见步骤420,此处不再赘述。
步骤504,根据预设校验算法对目标插件的安装包进行校验,预设校验算法是插件管理器中预先设定的校验算法。
在本申请实施例中,插件管理器可以根据预设校验算法对目标插件的安装包进行校验。其中,预设校验算法是插件管理器中预先设定的校验算法。
可选地,在一种可能的实现方式中,预先设定的校验算法可以包括md5算法或CRC校验算法等能够检验安装包的算法,本申请实施例对此不做限制。
步骤505,当目标插件的安装包中经过预设校验算法后得到的第一校验值和安装包中携带的第二校验值匹配时,确认安装包通过校验。
在本申请实施例中,插件管理器将使用预设校验算法对安装包的数据进行运算,运算后获得第一校验值。插件管理器将该第一校验值和安装包中携带的第二校验值进行比较,当第一校验值和第二校验值匹配时,插件管理器确认安装包通过校验。可选地,第一校验值和第二校验值匹配可以具体包括相等,或者,符合预设关系等。
步骤506,通过编译器对安装包进行编译,得到目标插件,编译器是插件管理器中的编译器。
在本申请实施例中,步骤506与步骤430的执行过程类似,此处不再赘述。
步骤507,将目标插件加载到插件管理器。
在本申请实施例中,步骤507与步骤440的执行过程类似,此处不再赘述。
可选地,在一种可能的实现方式中,目标插件在加载完成后,还能够从插件管理器中卸载该目标插件。该卸载流程可以包括步骤508、步骤509和步骤510。
步骤508,接收客户端发送的插件卸载请求。
在本申请实施例中,上述插件卸载请求用于申请从插件管理器中卸载目标插件。
步骤509,根据插件卸载请求确定目标插件的相关数据。
在本申请实施例中,上述相关数据用于支持目标插件向客户端提供指定的插件功能。
步骤510,从插件管理器中删除相关数据。
可选地,当相关数据包括环境数据时,插件管理器可以根据环境数据确定已安装在插件管理器中的目标运行环境;检测目标运行环境在插件管理器中是否向除目标插件之外的其它插件提供服务;当目标运行环境在插件管理器中没有向除目标插件之外的其它插件提供服务时,删除环境数据。
可选地,在另一种可能的实现方式中,目标插件在加载完成后,还能够在插件管理器中重新加载该目标插件。该重新加载流程可以包括步骤511、步骤512、步骤513、步骤514和步骤515。
步骤511,接收客户端发送的插件重新加载请求。
在本申请实施例中,上述重新加载请求用于申请从插件管理器中重新加载目标插件。
步骤512,将目标插件从插件管理器中卸载。
步骤513,根据重新加载请求重新下载目标插件的安装包。
步骤514,通过编译器对重新下载的安装包进行编译,得到重新下载的目标插件。
步骤515,将对重新下载的安装包进行编译获得的目标插件加载到插件管理器。
在本申请实施例的一种可能的实现方式中,为了对目标插件的进行功能上的升级,或者,目标插件损坏,需要重新加载目标插件。此时,插件管理器可以接收客户端发送的插件重新加载请求,并根据该请求先将目标插件卸载,再重新下载该目标插件的安装包(或者新版本的目标插件的安装包),之后编译该安装包并将编译后的目标插件加载到插件管理器中。
例如,以目标插件是插件A,1.0版本为例,说明本实施例提供的重新加载目标插件的实现方式。
在一种可能的实现方式中,插件A的1.0版本在插件管理器中损坏无法正常运行。此时,客户端中可以弹出提示消息,告知开发人员目标插件出现了问题。当开发人员在客户端中发出重新加载请求后,插件管理器根据该重新加载请求,先将目标插件从插件管理器中卸载。再从存储服务器中再次下载插件A的1.0版本的安装包,并通过编译器编译该安装包,得到目标插件,最后将目标插件重新加载到插件管理器中,以实现对目标插件的修复,较大程度上降低了开发人员手动启动针对插件A的管理进程或管理应用,单独修复该插件,提高了目标插件的修复效率,降低了PaaS平台中目标插件的维护成本。
在另一种可能的实现方式中,插件A的1.0版本较为老旧。客户端中可以弹出通知用户选择更新目标插件的提示消息。当开发人员确定更新目标插件,客户端也向插件管理器发出重新加载请求。随后,插件管理器根据该重新加载请求,先将1.0版本的目标插件从插件管理器中卸载。再从存储服务器中下载插件A的2.0版本的安装包,并通过编译器编译该安装包,得到2.0版本的目标插件,最后将2.0版本的目标插件加载到插件管理器中,以实现对低版本的目标插件的更新,较大程度上降低了开发人员手动启动针对插件A的管理进程或管理应用,单独更新低版本的目标插件,提高了目标插件的更新效率,降低了PaaS平台中目标插件的维护成本。
本申请实施例,提供了一种插件加载方法,通过接收客户端发送的插件加载请求,插件加载请求用于申请在插件管理器中加载目标插件,检测插件管理器中是否存在目标插件,当插件管理器中不存在目标插件时,根据插件加载请求下载目标插件的安装包,根据预设校验算法对目标插件的安装包进行校验,预设校验算法是插件管理器中预先设定的校验算法,当目标插件的安装包中经过预设校验算法后得到的第一校验值和安装包中携带的第二校验值匹配时,确认安装包通过校验,通过编译器对安装包进行编译,得到目标插件,编译器是插件管理器中的编译器,将目标插件加载到插件管理器。由于本实施例中客户端对于目标插件的加载是通过插件管理器来执行的,使得插件管理器能够集成开发人员对于插件的加载需求,令服务器不必再针对不同的插件启动不同的管理程序进行加载和控制,减小了服务器用于加载PaaS平台中的插件的开销,提高了客户端加载PaaS平台中的插件的效率。
请参考图6,其是本申请一个实施例提供的PaaS平台的插件加载装置的结构框图。该PaaS平台的插件加载装置可以通过软件、硬件或者两者的结合实现成为图1中应用服务器11的全部或一部分。该装置包括:
请求接收模块610,被配置为接收客户端发送的插件加载请求,所述插件加载请求用于申请在所述插件管理器中加载目标插件;
插件下载模块620,被配置为根据所述插件加载请求下载所述目标插件的安装包;
插件编译模块630,被配置为通过编译器对所述安装包进行编译,得到所述目标插件,所述编译器是所述插件管理器中的编译器;
插件加载模块640,被配置为将所述目标插件加载到所述插件管理器。
在一个可选的实施例中,所述装置还包括:
校验模块,用于在所述插件下载模块620根据所述插件加载请求下载所述目标插件的安装包之后,根据预设校验算法对所述目标插件的安装包进行校验,所述预设校验算法是所述插件管理器中预先设定的校验算法;
校验确认模块,用于当所述目标插件的安装包中经过预设校验算法后得到的第一校验值和所述安装包中携带的第二校验值匹配时,确认所述安装包通过校验;
所述插件编译模块630,用于在所述校验确认模块确认所述安装包通过校验之后,执行所述通过编译器对所述安装包进行编译的步骤。
在一个可选的实施例中,所述装置还包括:
插件检测模块,用于在所述请求接收模块610接收客户端发送的插件加载请求之后,检测所述插件管理器中是否存在所述目标插件;
所述插件下载模块620,用于在所述插件检测模块检测出所述插件管理器中不存在所述目标插件时,执行所述根据所述插件加载请求下载所述目标插件的安装包的步骤。
在一个可选的实施例中,所述装置还包括:
重加载请求接收模块,用于在所述插件加载模块640将所述目标插件加载到所述插件管理器之后,接收所述客户端发送的插件重新加载请求,所述重新加载请求用于申请从所述插件管理器中重新加载所述目标插件;
卸载模块,用于将所述目标插件从所述插件管理器中卸载;
所述插件下载模块620,用于在所述卸载模块将所述目标插件从所述插件管理器中卸载后,重新下载所述目标插件的安装包;
所述插件编译模块630,用于通过编译器对重新下载的所述安装包进行编译,得到所述目标插件;
所述插件加载模块640,用于将对重新下载的所述安装包进行编译得到的所述目标插件加载到所述插件管理器。
在一个可选的实施例中,所述装置还包括:
卸载请求接收模块,用于在所述插件加载模块640将所述目标插件加载到所述插件管理器之后,接收所述客户端发送的插件卸载请求,所述插件卸载请求用于申请从所述插件管理器中卸载所述目标插件;
数据确定模块,用于根据所述插件卸载请求确定所述目标插件的相关数据,所述相关数据用于支持所述目标插件向所述客户端提供指定的插件功能;
数据删除模块,用于从所述插件管理器中删除所述相关数据。
在一个可选的实施例中,所述相关数据包括客户端数据、环境数据、目录数据、安装数据和运行数据中至少一种;
其中,所述客户端数据用于指示所述客户端具有使用所述目标插件的权限,所述环境数据用于提供所述目标插件在所述插件管理器中的运行环境,所述目录数据用于指示安装所述目标插件和/或存储所述目标插件的运行数据的文件路径,所述安装数据是通过所述安装包将所述目标插件安装在所述插件管理器中时产生的数据。
在一个可选的实施例中,所述装置还包括:
环境确定模块,用于当所述相关数据包括环境数据时,根据所述环境数据确定已安装在所述插件管理器中的目标运行环境;
服务检测模块,用于检测所述目标运行环境在所述插件管理器中是否向除所述目标插件之外的插件提供服务;
所述数据删除模块,用于当所述目标运行环境在所述插件管理器中没有向除所述目标插件之外的插件提供服务时,删除所述环境数据。
请参考图7,其是本申请一个实施例提供的服务器的结构示意图。该服务器用于实施上述实施例提供的应用部署方法。具体来讲:
所述服务器700包括中央处理单元(CPU)701、包括随机存取存储器(RAM)702和只读存储器(ROM)703的系统存储器704,以及连接系统存储器704和中央处理单元701的系统总线705。所述服务器700还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)706,和用于存储操作系统713、应用程序714和其他程序模块715的大容量存储设备707。
所述基本输入/输出系统706包括有用于显示信息的显示器708和用于用户输入信息的诸如鼠标、键盘之类的输入设备709。其中所述显示器708和输入设备709都通过连接到系统总线705的输入输出控制器710连接到中央处理单元701。所述基本输入/输出系统706还可以包括输入输出控制器710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器710还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备707通过连接到系统总线705的大容量存储控制器(未示出)连接到中央处理单元701。所述大容量存储设备707及其相关联的计算机可读介质为服务器700提供非易失性存储。也就是说,所述大容量存储设备707可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器704和大容量存储设备707可以统称为存储器。
根据本发明的各种实施例,所述服务器700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器700可以通过连接在所述系统总线705上的网络接口单元711连接到网络712,或者说,也可以使用网络接口单元711来连接到其他类型的网络或远程计算机系统。
所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集经配置以由一个或者一个以上处理器执行,以实现上述实施例中各个步骤的功能。
本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的PaaS平台的插件加载方法。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的PaaS平台的插件加载方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种平台即服务PaaS平台的插件加载方法,其特征在于,所述方法用于PaaS平台中的应用服务器中的插件管理器,所述方法包括:
接收客户端发送的插件加载请求,所述插件加载请求用于申请在所述插件管理器中加载目标插件;
根据所述插件加载请求下载所述目标插件的安装包;
通过编译器对所述安装包进行编译,得到所述目标插件,所述编译器是所述插件管理器中的编译器,且所述安装包依次经过所述编译器中预编译器和核心编译器的编译,所述预编译器用于检测所述安装包是否损坏,所述核心编译器用于将所述安装包编译成为所述插件管理器能够运行的目标插件;
将所述目标插件加载到所述插件管理器;
接收所述客户端发送的插件卸载请求,所述插件卸载请求用于申请从所述插件管理器中卸载所述目标插件;
根据所述插件卸载请求确定所述目标插件的相关数据,所述相关数据用于支持所述目标插件向所述客户端提供指定的插件功能;
从所述插件管理器中删除所述相关数据。
2.根据权利要求1所述的方法,其特征在于,在根据所述插件加载请求下载所述目标插件的安装包之后,所述方法还包括:
根据预设校验算法对所述目标插件的安装包进行校验,所述预设校验算法是所述插件管理器中预先设定的校验算法;
当所述目标插件的安装包中经过预设校验算法后得到的第一校验值和所述安装包中携带的第二校验值匹配时,确认所述安装包通过校验;
执行所述通过编译器对所述安装包进行编译的步骤。
3.根据权利要求1所述的方法,其特征在于,在所述接收客户端发送的插件加载请求之后,所述方法还包括:
检测所述插件管理器中是否存在所述目标插件;
当所述插件管理器中不存在所述目标插件时,执行所述根据所述插件加载请求下载所述目标插件的安装包的步骤。
4.根据权利要求1所述的方法,其特征在于,在所述将所述目标插件加载到所述插件管理器之后,所述方法还包括:
接收所述客户端发送的插件重新加载请求,所述重新加载请求用于申请从所述插件管理器中重新加载所述目标插件;
将所述目标插件从所述插件管理器中卸载;
根据所述重新加载请求重新下载所述目标插件的安装包;
通过编译器对重新下载的安装包进行编译,得到重新下载的目标插件;
将对重新下载的所述安装包进行编译获得的目标插件加载到所述插件管理器。
5.根据权利要求1所述的方法,其特征在于,所述相关数据包括客户端数据、环境数据、目录数据、安装数据和运行数据中至少一种;
其中,所述客户端数据用于指示所述客户端具有使用所述目标插件的权限,所述环境数据用于提供所述目标插件在所述插件管理器中的运行环境,所述目录数据用于指示安装所述目标插件和/或存储所述目标插件的运行数据的文件路径,所述安装数据是通过所述安装包将所述目标插件安装在所述插件管理器中时产生的数据。
6.根据权利要求5所述的方法,其特征在于,当所述相关数据包括环境数据时,所述方法还包括:
根据所述环境数据确定已安装在所述插件管理器中的目标运行环境;
检测所述目标运行环境在所述插件管理器中是否向除所述目标插件之外的插件提供服务;
当所述目标运行环境在所述插件管理器中没有向除所述目标插件之外的插件提供服务时,删除所述环境数据。
7.一种PaaS平台的插件加载装置,其特征在于,所述装置 用于PaaS平台中的应用服务器中的插件管理器,所述装置包括:
请求接收模块,被配置为接收客户端发送的插件加载请求,所述插件加载请求用于申请在所述插件管理器中加载目标插件;
插件下载模块,被配置为根据所述插件加载请求下载所述目标插件的安装包;
插件编译模块,被配置为通过编译器对所述安装包进行编译,得到所述目标插件,所述编译器是所述插件管理器中的编译器,且所述安装包依次经过所述编译器中预编译器和核心编译器的编译,所述预编译器用于检测所述安装包是否损坏,所述核心编译器用于将所述安装包编译成为所述插件管理器能够运行的目标插件;
插件加载模块,被配置为将所述目标插件加载到所述插件管理器;
卸载请求接收模块,用于接收所述客户端发送的插件卸载请求,所述插件卸载请求用于申请从所述插件管理器中卸载所述目标插件;
数据确定模块,用于根据所述插件卸载请求确定所述目标插件的相关数据,所述相关数据用于支持所述目标插件向所述客户端提供指定的插件功能;
数据删除模块,用于从所述插件管理器中删除所述相关数据。
8.一种服务器,其特征在于,所述服务器包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如权利要求1至6任一所述的插件加载方法。
9.一种计算机可读存储介质,其特征在于,所述存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如权利要求1至6任一所述的插件加载方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810383896.4A CN108595221B (zh) | 2018-04-26 | 2018-04-26 | PaaS平台的插件加载方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810383896.4A CN108595221B (zh) | 2018-04-26 | 2018-04-26 | PaaS平台的插件加载方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108595221A CN108595221A (zh) | 2018-09-28 |
CN108595221B true CN108595221B (zh) | 2021-04-06 |
Family
ID=63609518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810383896.4A Expired - Fee Related CN108595221B (zh) | 2018-04-26 | 2018-04-26 | PaaS平台的插件加载方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108595221B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109597623A (zh) * | 2018-12-05 | 2019-04-09 | 上海中商网络股份有限公司 | 一种插件管理方法、装置、设备及存储介质 |
CN109725952B (zh) * | 2019-01-07 | 2021-09-24 | 深圳市网心科技有限公司 | 一种应用程序插件化的方法、系统以及相关装置 |
CN109739868B (zh) * | 2019-01-08 | 2023-05-12 | 深圳市网心科技有限公司 | 一种数据处理方法及其相关设备 |
CN110209416A (zh) * | 2019-05-31 | 2019-09-06 | 彩讯科技股份有限公司 | 应用软件更新方法、装置、终端及存储介质 |
CN110262821A (zh) * | 2019-06-14 | 2019-09-20 | 深圳前海微众银行股份有限公司 | 一种软件模块的管理方法、装置及服务器 |
CN110275923B (zh) * | 2019-06-20 | 2021-10-08 | 美林数据技术股份有限公司 | 插件化图形的管理方法及设备 |
CN110704041A (zh) * | 2019-10-10 | 2020-01-17 | 达飞云贷科技(北京)有限公司 | 软件开发方法及装置 |
CN112988257B (zh) * | 2019-12-12 | 2024-09-13 | 盒马(中国)有限公司 | 实体店的应用安装控制方法、装置、设备及系统 |
CN111124420B (zh) * | 2019-12-19 | 2023-06-20 | 北京百度网讯科技有限公司 | 编译方法、装置、电子设备及可读存储介质 |
CN111552524B (zh) * | 2020-05-06 | 2023-10-13 | Oppo(重庆)智能科技有限公司 | 一种插件加载方法、装置及计算机可读存储介质 |
CN111651147B (zh) * | 2020-05-31 | 2023-06-30 | 四川亨通网智科技有限公司 | 一种系统快速搭建组件的方法 |
CN112068862A (zh) * | 2020-08-27 | 2020-12-11 | 新华智云科技有限公司 | Elasticsearch插件的动态更新方法与插件更新系统 |
CN112835639B (zh) * | 2021-01-29 | 2024-02-27 | 百度在线网络技术(北京)有限公司 | 一种Hook实现方法、装置、设备、介质及产品 |
CN113190286B (zh) * | 2021-04-27 | 2022-02-15 | 深圳市华磊迅拓科技有限公司 | 动态远程加载功能插件的mes系统、加载方法、终端及介质 |
US11922163B2 (en) | 2021-09-24 | 2024-03-05 | Sap Se | Cloud version management for legacy on-premise application |
US11841731B2 (en) * | 2021-09-24 | 2023-12-12 | Sap Se | Cloud plugin for legacy on-premise application |
US12026496B2 (en) | 2021-09-24 | 2024-07-02 | Sap Se | Cloud upgrade for legacy on-premise application |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103685564A (zh) * | 2013-12-30 | 2014-03-26 | 上海邮电设计咨询研究院有限公司 | 引入插件化应用能力层的行业应用在线运营云平台架构 |
CN103927163A (zh) * | 2014-03-06 | 2014-07-16 | 中国人民解放军装甲兵工程学院 | 插件框架处理装置及插件系统 |
CN104991760A (zh) * | 2014-12-23 | 2015-10-21 | 广州亦云信息技术有限公司 | 基于分布式模块化技术的PaaS平台服务管理系统和实现方法 |
CN105183458A (zh) * | 2015-08-14 | 2015-12-23 | 深圳联友科技有限公司 | 一种软件平台开发方法及装置 |
-
2018
- 2018-04-26 CN CN201810383896.4A patent/CN108595221B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103685564A (zh) * | 2013-12-30 | 2014-03-26 | 上海邮电设计咨询研究院有限公司 | 引入插件化应用能力层的行业应用在线运营云平台架构 |
CN103927163A (zh) * | 2014-03-06 | 2014-07-16 | 中国人民解放军装甲兵工程学院 | 插件框架处理装置及插件系统 |
CN104991760A (zh) * | 2014-12-23 | 2015-10-21 | 广州亦云信息技术有限公司 | 基于分布式模块化技术的PaaS平台服务管理系统和实现方法 |
CN105183458A (zh) * | 2015-08-14 | 2015-12-23 | 深圳联友科技有限公司 | 一种软件平台开发方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108595221A (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108595221B (zh) | PaaS平台的插件加载方法、装置、服务器及存储介质 | |
CN108551487B (zh) | PaaS平台的应用部署方法、装置、服务器及存储介质 | |
US20210349706A1 (en) | Release lifecycle management system for multi-node application | |
CN108595333B (zh) | PaaS平台中应用进程的健康检查方法及装置 | |
US8640119B2 (en) | Determining compatibility of a software package update using a version identifier | |
US9471300B2 (en) | Wireless firmware upgrades to an alarm security panel | |
CN108769124B (zh) | PaaS平台的应用部署方法、装置、服务器及存储介质 | |
US9075690B2 (en) | Automatically and securely configuring and updating virtual machines | |
US10437582B2 (en) | Method and system for a client to server deployment via an online distribution platform | |
US8997083B2 (en) | Managing a network of computer systems using a version identifier generated based on software packages installed on the computing systems | |
US20110131564A1 (en) | Systems and methods for generating a version identifier for a computing system based on software packages installed on the computing system | |
US9244758B2 (en) | Systems and methods for repairing system files with remotely determined repair strategy | |
KR20130027158A (ko) | 임베디드 시스템에서 최적화된 가상화 모듈을 관리하는 장치 및 방법 | |
WO2019056187A1 (zh) | 应用部署方法、装置及系统 | |
CN104077160A (zh) | 一种升级安卓软件的方法、设备和系统 | |
CN111045854A (zh) | 用于管理服务容器的方法、设备和计算机程序产品 | |
CN112905230B (zh) | 应用程序的管理方法、装置、终端设备和存储介质 | |
CN111273924A (zh) | 软件更新方法及装置 | |
CN108566432B (zh) | PaaS平台的应用部署方法、装置、服务器及存储介质 | |
CA3163684A1 (en) | Package-based remote firmware update | |
US20110131566A1 (en) | Systems and methods for managing a network of computer system using a version identifier generated based on software packages installed on the computing systems | |
CN115361119A (zh) | 车载设备软件的批量升级方法及装置 | |
CN112948008B (zh) | 一种基于Ironic管理物理裸机的方法 | |
CN112256283A (zh) | 用于Android设备的应用版本管控方法及装置 | |
US11995450B2 (en) | Cloud-based provisioning of UEFI-enabled systems |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210406 |