CN110597568B - 一种插件部署方法、系统及终端 - Google Patents
一种插件部署方法、系统及终端 Download PDFInfo
- Publication number
- CN110597568B CN110597568B CN201910817215.5A CN201910817215A CN110597568B CN 110597568 B CN110597568 B CN 110597568B CN 201910817215 A CN201910817215 A CN 201910817215A CN 110597568 B CN110597568 B CN 110597568B
- Authority
- CN
- China
- Prior art keywords
- plug
- file
- directory
- container
- information
- 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.)
- Active
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请适用于通信技术领域,提供了一种插件部署方法、系统及终端,通过获取终端的插件信息,根据所述插件信息包含的标识名称生成所述插件的插件目录,所述插件目录包括容器插件目录;如果所述插件信息包含有脚本文件且包含有标示文件,则将所述插件部署在所述容器插件目录中;如果所述插件信息不包含有脚本文件,但包含有标示文件,则将所述插件部署在容器根目录中,根据脚本文件和标示文件灵活地对插件进行部署,提高了插件部署的灵活性,并通过在容器中部署相应的插件,从而避免插件对终端的主机内容进行更改,提高了系统的稳定性。
Description
技术领域
本申请属于通信技术领域,尤其涉及一种插件部署方法、系统及终端。
背景技术
随着物联网不断发展,终端的软件功能迭代越来越频繁,越来越容易出现差异化。而对于这种差异化而言,在后续维护过程中插件可以作为一种不可或缺的高效维护手段,既能避免因对设备的重新烧录,而带来的一系列高风险问题,又能在不同层面上对设备进行高度可控制的软件定义活动。尤其是在大范围维护工作中节省大量的维护成本和降低了系统因升级而带来的各种风险。
然而,现有的插件部署方法中,由于软件定义的具体内容存在局限性以及不可靠性,将有可能导致所部署的插件不能正常使用,或者无法满足插件内容运行环境的独立性,并且有可能因为频繁地对根文件系统的磁盘进行写操作,而导致磁盘损坏,系统异常。
发明内容
本申请实施例提供了一种插件部署方法及系统,可以解决现有插件部署中存在的插件存在的灵活性低且稳定性差的问题。
第一方面,本申请实施例提供了一种插件部署方法,包括:
在第一方面的一种可能的实现方式中,获取终端的插件信息,所述插件信息包含有插件的标识名称;
根据所述标识名称生成所述插件的插件目录,所述插件目录包括容器插件目录;
如果所述插件信息包含有脚本文件且包含有标示文件,则将所述插件部署在所述容器插件目录中;
如果所述插件信息不包含有脚本文件,但包含有标示文件,则将所述插件部署在容器根目录中。
在第一方面的一种可能的实现方式中,如果所述插件信息包含有脚本文件,但不包含有标示文件,则将所述插件部署在所述主机插件目录中;
如果所述插件信息不包含有脚本文件且不包含有标示文件,则将所述插件部署在主机根目录中。
应理解,所述脚本文件用于确认插件是部署在插件目录中还是部署在根目录中;所述标示文件用于确认插件是部署在容器中还是部署在主机中。
示例性的,所述方法还包括:
根据所述插件信息生成所述插件的文件列表清单,并将所述文件列表清单存储至插件备份目录中;
在检测到根目录文件中的插件的删除指令时,根据所述文件列表清单进行清理恢复。
在第一方面的一种可能的实现方式中,以资源配置系统作为插件环境的初始化接口,以主机文件系统为基础,创建一个隔离的容器文件系统;
将系统基础运行环境以挂载形式关联到所述容器文件系统中。
示例性的,在容器启动且运行状态正常后,如果检测到插件的加载指令,则获取所述插件的标识名称;
根据所述标识名称获取预设置的排他性调度机制,确定调度所述插件的优先策略;
根据所述优先策略确定从容器中还是主机中启动对应的插件。
第二方面,本申请实施例提供了一种插件部署系统,包括:
插件信息单元,用于获取终端的插件信息,所述插件信息包含有插件的标识名称;
插件目录生成单元,用于根据所述标识名称生成所述插件的插件目录,所述插件目录包括容器插件目录;
第一插件部署单元,用于如果所述插件信息包含有脚本文件且包含有标示文件,则将所述插件部署在所述容器插件目录中;
第二插件部署单元,用于如果所述插件信息不包含有脚本文件,但包含有标示文件,则将所述插件部署在容器根目录中。
第三方面,本申请实施例提供了一种终端,包括:
插件信息单元,用于获取终端的插件信息,所述插件信息包含有插件的标识名称;
插件目录生成单元,用于根据所述标识名称生成所述插件的插件目录,所述插件目录包括容器插件目录;
第一插件部署单元,用于如果所述插件信息包含有脚本文件且包含有标示文件,则将所述插件部署在所述容器插件目录中;
第二插件部署单元,用于如果所述插件信息不包含有脚本文件,但包含有标示文件,则将所述插件部署在容器根目录中
第四方面,本申请实施例提供了一种计算机可读存储介质,包括:
插件信息单元,用于获取终端的插件信息,所述插件信息包含有插件的标识名称;
插件目录生成单元,用于根据所述标识名称生成所述插件的插件目录,所述插件目录包括容器插件目录;
第一插件部署单元,用于如果所述插件信息包含有脚本文件且包含有标示文件,则将所述插件部署在所述容器插件目录中;
第二插件部署单元,用于如果所述插件信息不包含有脚本文件,但包含有标示文件,则将所述插件部署在容器根目录中。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端上运行时,使得终端执行上述第一方面中任一项所述的插件部署方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
本申请实施例与现有技术相比存在的有益效果是:通过获取终端的插件信息,根据所述插件信息包含的标识名称生成所述插件的插件目录,所述插件目录包括容器插件目录;如果所述插件信息包含有脚本文件且包含有标示文件,则将所述插件部署在所述容器插件目录中;如果所述插件信息不包含有脚本文件,但包含有标示文件,则将所述插件部署在容器根目录中,根据脚本文件和标示文件灵活地对插件进行部署,提高了插件部署的灵活性,并通过在容器中部署相应的插件,从而避免插件对终端的主机内容进行更改,提高了系统的稳定性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种插件部署方法的实现流程图;
图2是本申请实施例提供的一种创建容器文件系统的方法的具体实现流程图;
图3是本申请实施例提供的一种文件系统结构A模型的示意图;
图4是本申请实施例提供的一种文件系统结构B模型的示意图;
图5是本申请实施例提供的一种调度插件的方法的具体实现流程图;
图6是本申请实施例提供的一种删除插件的方法的具体实现流程图;
图7是本申请实施例提供的一种插件部署系统的示意图;
图8是本申请实施例提供的一种终端的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、系统、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
请参考图1,图1示出了本申请实施例提供的一种插件部署方法的实现流程,详述如下:
在步骤S101中,获取终端的插件信息,所述插件信息包含有插件的标识名称。
在本申请实施例中,插件信息为插件部署系统主动或被动获取的一个或多个插件的插件包信息,比如用户通过界面手动操作选择所要安装的插件,比如云平台下发的插件。
需要说明的是,每个插件对应有一个插件信息,插件信息中除了包含有插件的标识名称外,还包含有业务资源,该业务资源可以是配置文件、库、可执行程序等等。除此之外,插件信息中根据插件的实际情况还可能包含有脚本文件和标示文件这两个控制文件。
其中,标识名称作为插件的唯一标识,根据该标识名称可以生成对应插件的唯一插件目录。
脚本文件用于确认插件信息对应的插件是部署在插件目录中还是部署在根目录中。该脚本文件为sh格式,具备进程调度,配置加载,配置修改等等功能,而这个脚本文件使用的命令在系统中由相关sh API提供支持
标示文件用于确认插件信息对应的插件是部署在容器中还是部署在主机中。本申请实施例提供的标示文件为以特定名称命名的空文件。
需要说明的是,本申请中所采用的容器技术为Linux container,是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而本申请对于具体使用何种容器技术并不做具体限制。
具体的,为了提供用于部署插件的容器,在步骤S101之前,还包括如图2所示的一种创建容器文件系统的方法的具体实现步骤,详述如下:
在步骤S201中,以资源配置系统作为插件环境的初始化接口,以主机文件系统为基础,创建一个隔离的容器文件系统。
在本申请实施例中,资源配置系统主要目的是以主机文件系统为基础创建一个隔离的容器文件系统,该容器文件系统在网络和硬件上追求与主机文件系统环境一致,为本申请提供用于部署插件的容器。。
需要说明的是,本申请中将主机文件系统的一个硬盘空间etc_lxc作为容器启动配置分区,该容器启动配置分区属于写分区,该容器启动配置分区用于隔离主机文件系统etc配置分区,使得容器与主机系统的启动过程互相保持一定的独立性,有利于容器内部插件的个性化部署。
还需要说明的是,本申请所创建的容器文件系统与主机文件系统共享所有硬件资源比如硬盘独立分区/home中的所有资源,即容器文件系统共享主机文件系统的所有硬件资源,容器文件系统具有控制设备网络单元的能力。
还需要说明的是,为了减少资源占用,本申请所提供的插件下载目录/data为共享模式,主机文件系统以及容器文件系统同时共享该目录。
还需要说明的是,主机文件系统和容器文件系统中有各自独立运行的文件,互不干扰。
在步骤S202中,将所述主机文件系统的基础运行环境以预设方式关联到所述容器文件系统中。
在本申请实施例中,预设方式包括挂载方式和拷贝方式,在挂载方式中,将主机文件系统的底层文件比如usr、bin、sbin、lib等以及容器启动配置分区etc_lxc以挂载方式关联到容器文件系统中,以较小磁盘空间占用并保证能够满足现实的最大化需求;在拷贝方式中,主机文件系统的底层文件以拷贝方式关联到容器文件系统中,即将主机文件系统的底层文件比如usr、bin、sbin、lib等拷贝到容器文件系统中,而将容器启动配置分区etc_lxc以挂载方式关联到容器文件系统中,这样将使得容器文件系统与主机文件系统的运行环境完全隔离。
作为示例而非限定,将主机文件系统的基础运行环境以挂载方式关联到容器文件系统中后,得到如图3所示的文件系统结构A模型;将主机文件系统的基础运行环境以拷贝方式关联到容器文件系统中后,得到如图4所示的文件系统结构B模型。在文件系统结构A模型中,出于资源空间的考虑,以较小磁盘空间占用并保证能够满足现实的最大化需求,其挂载方式可以设置写权限或只读权限,如果赋予写权限,则容器文件系统或主机文件系统的内容改变时,两端同时生效。如果赋予只读权限,则主机文件系统内容的改动会同步到容器文件系统中,实现对系统基础环境的同步。
需要说明的是,在文件系统结构A模型中,其文件系统结构存在一定的缺陷,如果插件内容需要部署容器根目录时,会存在一定的约束。如果容器文件系统以只读方式挂载,则该插件内容无法部署容器根目录,即无法在容器中部署根目录。而如果容器文件系统以写方式挂载,则会影响主机文件系统,存在着局限性。
为解决A模型中存在的缺陷,以容器文件系统中的优先文件系统根目录的方式作为替代方案,对可执行路径和库路径做一个优选,修改环境变量比进行弥补。
在文件系统结构B模型中,其需要占用较大的磁盘空间,但能实现容器运行环境完全隔离,为保证能够满足现实的最大化需求,B模型容器文件系统格式采用overlay文件系统,该文件系统由两部分构成:底层文件系统和上层文件系统,其中,底层文件系统从主机目录(usr,bin,sbin,lib)直接拷贝过来,上层文件系统则使用优先文件系统根目录,根据overlay文件系统特性,将底层文件系统和上层文件系统进行叠加,最终合成一个文件系统,这种文件系统的底层是只读模式,而修改部分会体现在上层,这种特性使得容器可以继承主机文件系统的基本运行环境,同时还可以保护容器基本文件系统的稳定,兼顾容器文件系统的差异化,避免对主机文件系统不造成影响。
需要说明的是,在文件系统结构B模型中,如有新的插件内容变更,会在优先目录上进行体现,并不会影响主机系统的原始内容,也不需要修改环境变量进行弥补,也即B模型是对A模型的进一步优化。
还需要说明的是,文件系统结构A模型中的优先文件系统根目录与文件系统结构B模型中的优先文件系统根目录存在本质的区别,在文件系统结构A模型中的优先文件系统根目录仅仅是一个可执行程序和库文件的优选目录;在文件系统结构B模型中的优先文件系统根目录是overlay文件系统的上层目录,可以对所有类型的文件进行优选。
在步骤S203中,在所述容器文件系统的磁盘空间中设置一用于提供容器根文件系统优先查找路径的优先文件系统根目录。
在一种可能的实施方式中,在系统中可能存在与插件的标识名称相同,并且路径也相同的调度资源,但实质两者的内容是存在着差异的,如果直接将插件内容直接覆盖该调度资源,将会导致系统中所有需要用到该调度资源的程序出现不可预测的后果,为了避免这一情况的出现,在创建容器系统文件时,设定一预先设置的排他性调度机制,确定调度插件所使用的优先策略。如果有重复的标识名称,按照插件优先,容器优先的基准原则进行排他调度,即优先调度插件目录中的插件,在不为插件目录中的插件后,优先调度容器中的插件。
可选的,请参考图5,图5示出了本发明实施例提供的一种调度插件的方法的具体实现流程,详述如下:
在步骤S501中,在容器启动且运行状态正常后,如果检测到插件的加载指令,则获取所述插件的标识名称。
在步骤S502中,根据所述标识名称获取预设置的排他性调度机制,确定调度所述插件的优先策略。
在本申请实施例中,不同标识名称的插件,其排他性调度机制可能不同,对应的优先策略也不相同,在获取到标识名称后,需要确定该插件对应的优先策略调度。
在步骤S503中,根据所述优先策略确定从容器中还是主机中启动对应的插件。
在步骤S102中,根据所述标识名称生成所述插件的插件目录,所述插件目录包括容器插件目录。
在本申请实施例中,由于标识名称为插件的唯一标识,可以根据该标识名称生成该插件的插件目录,比如插件目录为:home/plugin/xxx,其中的xxx即为标识名称。该插件目录作为容器和主机的共享目录,可以减少资源占用,以及提高插件的部署效率。
可以理解的是,具有不同标识名称的插件,所生成的插件目录并不相同,即对应一个标识名称的插件生成一个插件目录,这就保证了插件的内容运行环境的独立性,某一具体标识名称的插件的定义仅供该插件使用,因而即使。
具体的,根据插件目录所部署的位置是为容器还是主机,该插件目录被分为容器插件目录和主机插件目录。
其中,容器插件目录为设置在容器中的插件目录,主机插件目录为设置在主机中的插件目录。
作为示例而非限定,当插件信息中存在脚本文件时,说明该插件信息的插件应该部署在插件目录中,具体是部署在容器插件目录中还是部署在主机插件目录中,则需要确定该插件信息对应的插件是部署在容器中还是部署在主机中,如果该插件信息的插件是部署在容器中,则说明该插件信息的插件是部署在容器插件目录中,否则,则是部署在主机插件目录中。
在步骤S103中,如果所述插件信息包含有脚本文件且包含有标示文件,则将所述插件部署在所述容器插件目录中。
在本申请实施例中,脚本文件除了用于确认插件是部署在插件目录中还是部署在根目录中,还参与插件的业务调度初始化。除此之外,还被用于定义插件的使用形式,其内部定义了配置文件路径,程序执行内容以及关联库查找路径等,这种使用形式可以将插件部署系统的控制下发到插件内部进行自适配,从而保证插件功能具备完整的自控能力,保障插件内容的隔离要求。
需要说明的是,安装在插件目录中的插件为独立的且没有资源冲突的插件,可以随时进行删除,不管是按照在容器插件目录中还是安装在主机插件目录中,如果该插件出现异常或者想要删除该插件时,可以直接将部署在容器插件目录或主机插件目录中的插件删除,对主机系统并不会造成异常影响,保证了系统的稳定性和可靠性。
应理解,将插件部署到插件目录中,将不再需要频繁长时间地对根文件系统进行写操作,避免了因部署过多插件到根文件系统而导致的系统臃肿问题,同时因避免操作根文件系统的磁盘,降低了磁盘损坏而导致的系统异常,增强了系统的可靠性,并降低了系统的局限性。
在步骤S104中,如果所述插件信息不包含有脚本文件,但包含有标示文件,则将所述插件部署在容器根目录中。
在本申请实施例中,当插件信息仅包含有标示文件时,将插件部署在容器根目录中,可以使得容器文件系统得到差异化更新,同时仅对容器文件系统内部有效,不会引起主机文件系统变化,保障了容器的隔离。
可选的,在步骤S102之后,还包括:
在步骤S105中,如果所述插件信息包含有脚本文件,但不包含有标示文件,则将所述插件部署在所述主机插件目录中。
在本申请实施例中,当插件信息仅包含有脚本文件时,将插件部署在主机插件目录中,该插件将作为独立的运行单元,部署在根据其标识名称生成的插件目录下,有利于插件的整体移除管理,同时隔离了该插件对于主机文件系统的影响,保证主机文件系统的稳定性。
在步骤S105中,如果所述插件信息不包含有脚本文件且不包含有标示文件,则将所述插件部署在主机根目录中。
在本申请实施例中,当插件信息既不包含有脚本文件,也不包含有标示文件时,将插件部署在主机根目录中,这是因为部署该插件的目的是为更新主机文件系统的运行环境,作为一个全局的插件功能而言,该插件影响到整个主机文件系统,因而必须将该插件部署在主机根目录上,使得主机文件系统各项功能都可以使用该插件内容。
可选的,请参考图6,图6示出了本申请实施例提供的一种删除插件的方法的具体实现步骤,详述如下:
在步骤S601中,根据所述插件信息生成所述插件的文件列表清单,并将所述文件列表清单存储至插件备份目录中。
在本发明实施例中,插件备份目录/home/back_plugin用于系统插件备份使用,还原系统功能。
在部署所述插件信息对应的插件过程中,同时根据该插件信息生成该插件的文件清单列表,以便于在用户不需要此插件时,可以根据该文件列表清单进行还原操作,比如将该文件列表清单中的所有文件进行删除。
在步骤S602中,在检测到根目录文件中的插件的删除指令时,根据所述文件列表清单进行清理恢复。
在本申请实施例中,通过获取终端的插件信息,根据所述插件信息包含的标识名称生成所述插件的插件目录,所述插件目录包括容器插件目录;如果所述插件信息包含有脚本文件且包含有标示文件,则将所述插件部署在所述容器插件目录中;如果所述插件信息不包含有脚本文件,但包含有标示文件,则将所述插件部署在容器根目录中,根据脚本文件和标示文件灵活地对插件进行部署,提高了插件部署的灵活性,并通过在容器中部署相应的插件,从而避免插件对终端的主机内容进行更改,提高了系统的稳定性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑控制,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的一种插件部署方法,图7示出了本申请实施例提供的一种插件部署系统的示意图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图7,该系统包括:
插件信息单元71,用于获取终端的插件信息,所述插件信息包含有插件的标识名称;
插件目录生成单元72,用于根据所述标识名称生成所述插件的插件目录,所述插件目录包括容器插件目录;
第一插件部署单元73,用于如果所述插件信息包含有脚本文件且包含有标示文件,则将所述插件部署在所述容器插件目录中;
第二插件部署单元74,用于如果所述插件信息不包含有脚本文件,但包含有标示文件,则将所述插件部署在容器根目录中。
可选的,该系统还包括:
第三插件部署单元75,用于如果所述插件信息包含有脚本文件,但不包含有标示文件,则将所述插件部署在所述主机插件目录中;
第四插件部署单元76,用于如果所述插件信息不包含有脚本文件且不包含有标示文件,则将所述插件部署在主机根目录中。
可选的,该系统还包括:
文件列表清单生成单元,用于根据所述插件信息生成所述插件的文件列表清单,并将所述文件列表清单存储至插件备份目录中;
插件删除单元,用于在检测到根目录文件中的插件的删除指令时,根据所述文件列表清单进行清理恢复。
可选的,该系统还包括:
容器文件系统创建单元,用于以资源配置系统作为插件环境的初始化接口,以主机文件系统为基础,创建一个隔离的容器文件系统;
系统关联单元,用于将系统基础运行环境以挂载形式关联到所述容器文件系统中。
可选的,该系统还包括:
标识名称获取单元,用于在容器启动且运行状态正常后,如果检测到插件的加载指令,则获取所述插件的标识名称;
优先策略确定单元,用于根据所述标识名称获取预设置的排他性调度机制,确定调度所述插件的优先策略;
插件启动确定单元,用于根据所述优先策略确定从容器中还是主机中启动对应的插件。
在本发明实施例中,通过获取终端的插件信息,根据所述插件信息包含的标识名称生成所述插件的插件目录,所述插件目录包括容器插件目录;如果所述插件信息包含有脚本文件且包含有标示文件,则将所述插件部署在所述容器插件目录中;如果所述插件信息不包含有脚本文件,但包含有标示文件,则将所述插件部署在容器根目录中,根据脚本文件和标示文件灵活地对插件进行部署,提高了插件部署的灵活性,并通过在容器中部署相应的插件,从而避免插件对终端的主机内容进行更改,提高了系统的稳定性。
图8是本申请一实施例提供的一种终端的示意图。如图8所示,该实施例的终端8包括:处理器17、存储器81以及存储在所述存储器81中并可在所述处理器17上运行的计算机程序82。所述处理器17执行所述计算机程序82时实现上述各个插件部署方法实施例中的步骤,例如图1所示的步骤101至105。或者,所述处理器17执行所述计算机程序82时实现上述各系统实施例中各单元的功能,例如图7所示模块71至75的功能。
示例性的,所述计算机程序82可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器81中,并由所述处理器17执行,以完成本申请。所述一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序82在所述终端8中的执行过程。例如,所述计算机程序82可以被分割成插件信息单元71、图插件目录生成单元72、第一插件部署单元73、第二插件部署单元74,各单元具体功能如下:
插件信息单元71,用于获取终端的插件信息,所述插件信息包含有插件的标识名称;
插件目录生成单元72,用于根据所述标识名称生成所述插件的插件目录,所述插件目录包括容器插件目录;
第一插件部署单元73,用于如果所述插件信息包含有脚本文件且包含有标示文件,则将所述插件部署在所述容器插件目录中;
第二插件部署单元74,用于如果所述插件信息不包含有脚本文件,但包含有标示文件,则将所述插件部署在容器根目录中。
可选的,所述计算机程序82还可以被分割成第三插件部署单元75、第四插件部署单元76,各单元具体功能如下:
第三插件部署单元75,用于如果所述插件信息包含有脚本文件,但不包含有标示文件,则将所述插件部署在所述主机插件目录中;
第四插件部署单元76,用于如果所述插件信息不包含有脚本文件且不包含有标示文件,则将所述插件部署在主机根目录中。
可选的,所述计算机程序82还可以被分割成文件列表清单生成单元、插件删除单元,各单元具体功能如下:
文件列表清单生成单元,用于根据所述插件信息生成所述插件的文件列表清单,并将所述文件列表清单存储至插件备份目录中;
插件删除单元,用于在检测到根目录文件中的插件的删除指令时,根据所述文件列表清单进行清理恢复。
可选的,所述计算机程序82还可以被分割成容器文件系统创建单元、系统关联单元,各单元具体功能如下:
容器文件系统创建单元,用于以资源配置系统作为插件环境的初始化接口,以主机文件系统为基础,创建一个隔离的容器文件系统;
系统关联单元,用于将系统基础运行环境以挂载形式关联到所述容器文件系统中。
可选的,所述计算机程序82还可以被分割成标识名称获取单元、优先策略确定单元、插件启动确定单元,各单元具体功能如下:
标识名称获取单元,用于在容器启动且运行状态正常后,如果检测到插件的加载指令,则获取所述插件的标识名称;
优先策略确定单元,用于根据所述标识名称获取预设置的排他性调度机制,确定调度所述插件的优先策略;
插件启动确定单元,用于根据所述优先策略确定从容器中还是主机中启动对应的插件。
所述终端8可以是手机、平板电脑、可穿戴设备、车载设备、增强现实(augmentedreality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digitalassistant,PDA)等终端上,本申请实施例对终端的具体类型不作任何限制。所述终端8可包括,但不仅限于,处理器17、存储器81。本领域技术人员可以理解,图8仅仅是终端8的示例,并不构成对终端8的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端还可以包括输入输出设备、网络接入设备、总线等。
所称处理器17可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器81可以是所述终端8的内部存储单元,例如终端8的硬盘或内存。所述存储器81也可以是所述终端8的外部存储设备,例如所述终端8上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器81还可以既包括所述终端8的内部存储单元也包括外部存储设备。所述存储器81用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述存储器81还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述系统的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的系统/终端和方法,可以通过其它的方式实现。例如,以上所描述的系统/终端实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,系统或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或系统、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (9)
1.一种插件部署方法,其特征在于,包括:
获取终端的插件信息,所述插件信息包含有插件的标识名称;
根据所述标识名称生成所述插件的插件目录,所述插件目录包括容器插件目录;
如果所述插件信息包含有脚本文件且包含有标示文件,则将所述插件部署在所述容器插件目录中;
如果所述插件信息不包含有脚本文件,但包含有标示文件,则将所述插件部署在容器根目录中;
在所述获取终端的插件信息的步骤之前,还包括:
以资源配置系统作为插件环境的初始化接口,以主机文件系统为基础,创建一个隔离的容器文件系统;
将所述主机文件系统的基础运行环境以预设方式关联到所述容器文件系统中。
2.如权利要求1所述的插件部署方法,其特征在于,所述插件目录还包括主机插件目录,在所述根据所述标识名称生成插件目录的步骤之后,还包括:
如果所述插件信息包含有脚本文件,但不包含有标示文件,则将所述插件部署在所述主机插件目录中;
如果所述插件信息不包含有脚本文件且不包含有标示文件,则将所述插件部署在主机根目录中。
3.如权利要求1所述的插件部署方法,其特征在于,所述脚本文件用于确认插件是部署在插件目录中还是部署在根目录中;所述标示文件用于确认插件是部署在容器中还是部署在主机中。
4.如权利要求1所述的插件部署方法,其特征在于,在所述根据所述标识名称生成所述插件的插件目录的步骤时,还包括:
根据所述插件信息生成所述插件的文件列表清单,并将所述文件列表清单存储至插件备份目录中;
在检测到根目录文件中的插件的删除指令时,根据所述文件列表清单进行清理恢复。
5.如权利要求1所述的插件部署方法,其特征在于,还包括:
在容器启动且运行状态正常后,如果检测到插件的加载指令,则获取所述插件的标识名称;
根据所述标识名称获取预设置的排他性调度机制,确定调度所述插件的优先策略;
根据所述优先策略确定从容器中还是主机中启动对应的插件。
6.一种插件部署系统,其特征在于,包括:
插件信息单元,用于获取终端的插件信息,所述插件信息包含有插件的标识名称;
插件目录生成单元,用于根据所述标识名称生成所述插件的插件目录,所述插件目录包括容器插件目录;
第一插件部署单元,用于如果所述插件信息包含有脚本文件且包含有标示文件,则将所述插件部署在所述容器插件目录中;
第二插件部署单元,用于如果所述插件信息不包含有脚本文件,但包含有标示文件,则将所述插件部署在容器根目录中;
所述系统还包括:
容器文件系统创建单元,用于以资源配置系统作为插件环境的初始化接口,以主机文件系统为基础,创建一个隔离的容器文件系统;
系统关联单元,用于将系统基础运行环境以挂载形式关联到所述容器文件系统中。
7.如权利要求6所述的插件部署系统,其特征在于,所述插件目录还包括主机插件目录,所述插件部署系统还包括:
第三插件部署单元,用于如果所述插件信息包含有脚本文件,但不包含有标示文件,则将所述插件部署在所述主机插件目录中;
第四插件部署单元,用于如果所述插件信息不包含有脚本文件且不包含有标示文件,则将所述插件部署在主机根目录中。
8.一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述插件部署方法的步骤。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述插件部署方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910817215.5A CN110597568B (zh) | 2019-08-30 | 2019-08-30 | 一种插件部署方法、系统及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910817215.5A CN110597568B (zh) | 2019-08-30 | 2019-08-30 | 一种插件部署方法、系统及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110597568A CN110597568A (zh) | 2019-12-20 |
CN110597568B true CN110597568B (zh) | 2020-11-10 |
Family
ID=68857044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910817215.5A Active CN110597568B (zh) | 2019-08-30 | 2019-08-30 | 一种插件部署方法、系统及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110597568B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112839239B (zh) * | 2020-12-30 | 2023-03-21 | 广州虎牙科技有限公司 | 一种音视频加工的方法、装置及服务器 |
CN112799740B (zh) * | 2021-02-08 | 2022-07-26 | 联想(北京)有限公司 | 一种控制方法、装置及电子设备 |
CN114047978A (zh) * | 2021-11-23 | 2022-02-15 | 国投信开水环境投资有限公司 | 一种自动控制系统插件的控制方法、装置及计算机设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266542A (zh) * | 2008-02-01 | 2008-09-17 | 中国建设银行股份有限公司 | 一种在容器中装载组件的方法及装置 |
CN101551753A (zh) * | 2009-04-08 | 2009-10-07 | 腾讯科技(北京)有限公司 | 控制加载插件的装置及方法 |
CN105022650A (zh) * | 2015-07-27 | 2015-11-04 | 立德高科(昆山)数码科技有限责任公司 | App应用程序通过自带的卸载命令进行卸载的方法 |
CN105897946A (zh) * | 2016-04-08 | 2016-08-24 | 北京搜狐新媒体信息技术有限公司 | 一种访问地址的获取方法及系统 |
CN106055330A (zh) * | 2016-05-31 | 2016-10-26 | 深圳卡尔拓客科技有限公司 | 一种应用程序的管理方法及系统 |
CN106886468A (zh) * | 2017-01-16 | 2017-06-23 | 福建星网视易信息系统有限公司 | 一种硬盘文件恢复方法及系统 |
CN106970822A (zh) * | 2017-02-20 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 一种容器创建方法及装置 |
CN107317716A (zh) * | 2017-07-25 | 2017-11-03 | 北京市天元网络技术股份有限公司 | 一种终端管理系统及其应用方法 |
CN107633059A (zh) * | 2017-09-20 | 2018-01-26 | 郑州云海信息技术有限公司 | 一种用于分布式文件系统的数据处理方法和系统 |
CN110032400A (zh) * | 2018-01-09 | 2019-07-19 | 武汉斗鱼网络科技有限公司 | 一种加载插件的方法及电子终端 |
CN110120940A (zh) * | 2019-04-12 | 2019-08-13 | 华中科技大学 | 一种面向Docker容器的文件系统资源隔离方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090077556A1 (en) * | 2007-09-19 | 2009-03-19 | Martin Kay Nohr | Image media modifier |
US9594900B2 (en) * | 2008-12-09 | 2017-03-14 | Microsoft Technology Licensing, Llc | Isolating applications hosted by plug-in code |
US11126740B2 (en) * | 2016-11-04 | 2021-09-21 | Microsoft Technology Licensing, Llc | Storage isolation for containers |
CN108958722A (zh) * | 2018-07-12 | 2018-12-07 | 杭州玳数科技有限公司 | 一种插件式实时数据处理系统及方法 |
-
2019
- 2019-08-30 CN CN201910817215.5A patent/CN110597568B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266542A (zh) * | 2008-02-01 | 2008-09-17 | 中国建设银行股份有限公司 | 一种在容器中装载组件的方法及装置 |
CN101551753A (zh) * | 2009-04-08 | 2009-10-07 | 腾讯科技(北京)有限公司 | 控制加载插件的装置及方法 |
CN105022650A (zh) * | 2015-07-27 | 2015-11-04 | 立德高科(昆山)数码科技有限责任公司 | App应用程序通过自带的卸载命令进行卸载的方法 |
CN105897946A (zh) * | 2016-04-08 | 2016-08-24 | 北京搜狐新媒体信息技术有限公司 | 一种访问地址的获取方法及系统 |
CN106055330A (zh) * | 2016-05-31 | 2016-10-26 | 深圳卡尔拓客科技有限公司 | 一种应用程序的管理方法及系统 |
CN106886468A (zh) * | 2017-01-16 | 2017-06-23 | 福建星网视易信息系统有限公司 | 一种硬盘文件恢复方法及系统 |
CN106970822A (zh) * | 2017-02-20 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 一种容器创建方法及装置 |
CN107317716A (zh) * | 2017-07-25 | 2017-11-03 | 北京市天元网络技术股份有限公司 | 一种终端管理系统及其应用方法 |
CN107633059A (zh) * | 2017-09-20 | 2018-01-26 | 郑州云海信息技术有限公司 | 一种用于分布式文件系统的数据处理方法和系统 |
CN110032400A (zh) * | 2018-01-09 | 2019-07-19 | 武汉斗鱼网络科技有限公司 | 一种加载插件的方法及电子终端 |
CN110120940A (zh) * | 2019-04-12 | 2019-08-13 | 华中科技大学 | 一种面向Docker容器的文件系统资源隔离方法 |
Non-Patent Citations (1)
Title |
---|
"Software Provisioning Inside a Secure Environment as Docker Containers Using Stroll File-System";Abdulrahman Azab等;《2016 16th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid)》;20160721;第674-683页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110597568A (zh) | 2019-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111492347B (zh) | 用于更新容器的系统和方法 | |
US10853047B2 (en) | Method for virtualizing software applications | |
US9747000B2 (en) | Launching applications on an electronic device | |
CN110597568B (zh) | 一种插件部署方法、系统及终端 | |
CN105867947B (zh) | 预置应用程序升级后的数据处理方法及装置 | |
CN102193817B (zh) | 简化物理和虚拟部署的管理 | |
CN102360298B (zh) | 一种终端设备的软件升级方法 | |
CN102591675B (zh) | 使用共享存储块管理多软件镜像的方法和系统 | |
US9258357B2 (en) | Method for accessing plural cloud storages, electronic apparatus and non-transitory computer readable medium | |
CN104866391B (zh) | 一种基于增量信息系统的终端信息备份方法和装置 | |
US20230393840A1 (en) | File update method and apparatus, device and storage medium | |
US8176482B1 (en) | Methods and systems for inserting software applications into images | |
CN109298873B (zh) | 一种系统升级方法及装置 | |
CN103186387A (zh) | 电子装置与其操作系统更新方法 | |
WO2021143845A1 (zh) | 扩展系统分区的方法、装置、存储介质和计算机设备 | |
CN110908734A (zh) | 基于插件化的应用组合方法、装置、终端设备及存储介质 | |
CN111190687A (zh) | 一种容器镜像的构建方法、装置、设备及存储介质 | |
US9086938B2 (en) | Information processing apparatus, control method thereof, and storage medium | |
CN112015448A (zh) | 一种基于空中下载技术的系统升级方法及装置 | |
CN110209420A (zh) | 一种更新引导加载程序的方法及装置 | |
US10127029B1 (en) | Operating system installation using logical volumes | |
CN103514004A (zh) | Windows系统下的系统环境管理方法及装置 | |
CN113867768A (zh) | 操作系统处理方法、装置、电子设备及存储介质 | |
KR20120069400A (ko) | 모바일 플랫폼에서의 어플리케이션 보관 방법 | |
US11176089B2 (en) | Systems and methods for implementing dynamic file 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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Liu Shaobo Inventor before: Zhang Cheng |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |