CN109976765B - 一种应用群部署方法、装置、设备和存储介质 - Google Patents

一种应用群部署方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN109976765B
CN109976765B CN201910289282.4A CN201910289282A CN109976765B CN 109976765 B CN109976765 B CN 109976765B CN 201910289282 A CN201910289282 A CN 201910289282A CN 109976765 B CN109976765 B CN 109976765B
Authority
CN
China
Prior art keywords
application program
application
deployed
starting
plug
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
Application number
CN201910289282.4A
Other languages
English (en)
Other versions
CN109976765A (zh
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.)
Sichuan Qidi Shuan blockchain Technology Development Co.,Ltd.
Original Assignee
Beijing Qidi Block Chain Technology Development 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 Qidi Block Chain Technology Development Co ltd filed Critical Beijing Qidi Block Chain Technology Development Co ltd
Priority to CN201910289282.4A priority Critical patent/CN109976765B/zh
Publication of CN109976765A publication Critical patent/CN109976765A/zh
Application granted granted Critical
Publication of CN109976765B publication Critical patent/CN109976765B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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
    • 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
    • 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/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Landscapes

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

Abstract

本发明实施例公开了一种应用群部署方法、装置、设备和存储介质。该方法可以包括:获取应用群中待部署的应用程序的启动参数;根据所述启动参数,确定所述应用程序的启动命令;根据所述待部署的应用程序的配置序号,在需要部署所述应用程序的各设备上运行所述应用程序对应的启动命令,以实现所述应用程序在所述各设备上的部署操作。本发明实施例的方案能够实现基于Docker开源应用容器引擎将多个相互依赖的应用程序部署在多个设备上,为在设备上部署应用群提供了一种新思路。

Description

一种应用群部署方法、装置、设备和存储介质
技术领域
本发明实施例涉及互联网技术领域,尤其涉及一种应用群部署方法、装置、设备和存储介质。
背景技术
开源的应用容器引擎(Docker)可以供开发者打包应用及依赖包到一个轻量级、可移植的容器中,然后发布到需要部署该应用的设备上,因为它具有应用发布标准化、部署和启动迅速、成本低、方便持续集成等优点,被广泛应用与应用程序部署领域。
随着应用程序的增多,各应用程序之间的依赖关系也变得越来越复杂,目前,进行应用群部署时,采用的方案通常是基于YAML语言在一个配置文件中描述多个应用程序之间的部署关系,进而基于Docker容器编排工具(Docker-compose)完成应用群在设备上的部署。
但是,Docker-compose作为容器编排工具,它可以一条命令启动多个应用程序,完成多个应用程序部署到一个设备上,但是无法满足多个设备部署多个相互依赖的应用程序的需求,例如,对于a、b、c三个相互依赖的应用程序构成的应用群,若需要将a应用程序部署在设备1、设备2和设备3上,将b应用程序部署在设备2和设备3上,将c应用程序部署在设备3和设备4上,现有的应用群部署方法是无法做到的。亟需改进。
发明内容
本发明实施例提供一种应用群部署方法、装置、设备和存储介质,能够实现基于Docker开源应用容器引擎将多个相互依赖的应用程序部署在多个设备上,为在设备上部署应用群提供了一种新思路。
第一方面,本发明实施例提供了一种应用群部署方法,该方法包括:
获取应用群中待部署的应用程序的启动参数;
根据所述启动参数,确定所述应用程序的启动命令;
根据所述待部署的应用程序的配置序号,在需要部署所述应用程序的各设备上运行所述应用程序对应的启动命令,以实现所述应用程序在所述各设备上的部署操作。
第二方面,本发明实施例还提供了一种应用群部署装置,该装置包括:
启动参数获取模块,用于获取应用群中待部署的应用程序的启动参数;
启动命令确定模块,根据所述启动参数,确定所述应用程序的启动命令;
应用程序部署模块,用于根据所述待部署的应用程序的配置序号,在需要部署所述应用程序的各设备上运行所述应用程序对应的启动命令,以实现所述应用程序在所述各设备上的部署操作。
第三方面,本发明实施例还提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所述的应用群部署方法。
第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本发明任意实施例所述的应用群部署方法。
本发明实施例的技术方案,通过获取应用群中的待部署的各应用程序的启动参数,确定各应用程序的启动命令,按照各应用程序的配置序号,依次对各应用程序,确定出需要部署该应用程序的所有设备,并在各设备上执行该程序的启动命令,以完成该应用程序在所有设备上的部署,进而完成应用群中待部署的各应用程序部署在对应的所有设备中。解决了部署应用群时,采用Docker-compose容器编排工具无法实现将多个相互依赖的应用程序部署在多个设备上的问题,为在设备上部署应用群提供了一种新思路。
附图说明
图1是本发明实施例一提供的一种应用群部署方法的流程图;
图2A是本发明实施例二提供的一种应用群部署方法的流程图;
图2B是本发明实施例二提供的一种应用群部署过程示意图;
图3是本发明实施例三提供的一种应用群部署装置的结构框图;
图4是本发明实施例四提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种应用群部署方法的流程图,本实施例可适用于基于Docker开源应用容器引擎将应用群中待部署的各应用程序部署到对应的多个设备上的情况,该方法可以由本发明实施例提供的应用群部署装置或设备来执行,该装置可以采用硬件和/或软件的方式实现。需要说明的是,本发明实施例以基于Docker开源应用容器引擎部署应用群为例进行介绍,但是不限于仅适用于Docker开源应用容器引擎,还可以采用其他应用容器引擎执行本实施例的方法,对此本发明实施例不进行限定。
如图1所示,具体包括如下步骤:
S101,获取应用群中待部署的应用程序的启动参数。
其中,应用群可以是指由一个或多个待部署到设备上的应用程序构成的应用程序的集合,若应用群中待部署的应用程序为多个时,多个应用之间可以不存在相互依赖的关系,也可以是存在相互依赖的关系;还可以是一部分存在相互依赖的关系,一部分不存在相互依赖的关系。应用程序的启动参数可以是指启动一个应用程序时,所必不可少的参数,例如,可以包括但不限于启动应用程序所需要的映射端口、启动的应用程序的名称。若该应用程序与待部署的其他应用程序存在相互依赖的关系,则此时应用程序启动参数还包括,该应用程序的外挂配置文件的路径。其中应用程序的外挂配置文件可以是指运行该应用程序是所必须使用的外挂形式的配置文件,该外挂配置文件中包括启动该应用程序时的脚本程序、该应用程序与其他应用程序之间的关联关系等。外挂配置文件的路径可以是指外挂配置文件在待部署的设备上的存储路径,其可以是预先设定好存储在数据库配置中或者是预设配置文件中。具体的,应用程序的外挂配置文件的获取的方法将在后续实施例进行详细介绍。
可选的,本申请中的应用群为基于Docker的应用群,获取的应用程序的启动参数也是基于Docker的应用参数,具体的,获取应用群中待部署的应用程序的启动参数的过程可以是,从数据库配置中或预设的配置文件中读取该应用程序对应的映射端口和应用程序的名称作为Docker启动参数;若该应用程序与待部署的其他应用程序存在相互依赖的关系,则还需要从数据库配置中或预设配置文件中获取该应用程序在待部署的设备上的存储路径,将存储路径与应用程序映射端口和应用名称一并作为Docker启动参数。
可选的,本实施例中在获取应用群中待部署的各应用程序的启动参数时,可以是根据各应用程序的配置序号,确定出部署各应用程序的先后顺序,然后按照先后顺序依次获取各应用程序的Docker启动参数;为了提高获取效率,也可以是并行执行至少两个应用程序Docker启动参数的获取。对此,本实施例不进行限定。
S102,根据启动参数,确定应用程序的启动命令。
其中,应用程序的启动命令可以是指在将应用程序部署到设备上的过程中,触发设备自动加载安装应用程序的命令,该启动命令执行完成后,即可完成应用程序在该设备上的部署操作,可选的,本实施例中的启动命令可以是应用程序的Docker启动命令。
可选的,本步骤中,根据启动参数,确定应用程序的启动命令时,可以是根据S101获取的各Docker启动参数,按照一定的语法规则编写成的Docker启动命令的程序代码,例如,可以是将各Docker启动参数对应的字符串进行拼接组合,相邻两个启动参数的字符串之间用空格符间隔开,从而得到该应用程序的Docker启动命令。
可选的,本实施例中根据启动参数,确定应用程序的启动命令时,可以是根据各应用程序的配置序号,确定出部署各应用程序的先后顺序,然后按照先后顺序依次确定应用程序的Docker启动命令;为了提高获取效率,也可以是并行执行至少两个应用程序Docker启动命令的确定。对此,本实施例不进行限定。
S103,根据待部署的应用程序的配置序号,在需要部署应用程序的各设备上运行该应用程序对应的启动命令,以实现该应用程序在各设备上的部署操作。
其中,待部署的应用程序的配置序号可以是指针对应用群中各应用程序部署时的先后顺序,为各应用程序预先设定的配置序号。由于本实施例的应用群中各应用程序之间可能存在相互依赖关系,由于依赖关系的存在,可能会导致应用程序在部署的过程中,对程序部署的先后顺序有要求,所以需要预先为各应用程序设置配置序号,在执行部署应用程序的操作时,按照设置的配置序号依次对应用群中的各应用程序进行部署操作。
可选的,在部署各应用程序时,可以是按照配置序号的大小,从小到大或从小到大的顺序依次进行对应应用程序的部署操作,具体的,可以是先根据待部署的各应用程序的配置序号,确定出部署各应用程序的部署顺序,然后按照确定出的部署顺序,依次对当前要部署的应用程序执行部署到对应的多个设备上的操作。具体的,针对每一个当前要部署的应用程序,可以先确定出需要部署当前应用程序的各设备(其中,该设备可以是一个,也可以是多个),然后针对每一个设备依次或并行执行当前应用程序的部署操作,可选的,在对各设备执行当前应用程序的部署时,若生成Docker启动命令的Docker启动参数中不存在外挂配置文件的路径,则此时可以是直接在该设备上运行Docker启动命令,进而完成该应用程序在设备上的安装部署操作。若生成Docker启动命令的Docker启动参数中存在外挂配置文件的路径,则此时可以是根据预先提取的该应用程序的外挂配置文件,在该设备中外挂配置文件路径下生成Docker外挂配置文件,然后再运行Docker启动命令,进而完成该应用程序在设备上的安装部署操作。
可选的,当按照Docker应用群中各应用程序的配置序号对每一个应用程序都执行完其对应设备上的部署操作后,整个部署在多设备的有相互依赖关系的Docker应用群就部署成功了。
本实施例的一种应用群部署方法,通过获取应用群中的待部署的各应用程序的启动参数,确定各应用程序的启动命令,按照各应用程序的配置序号,依次对各应用程序,确定出需要部署该应用程序的所有设备,并在各设备上执行该程序的启动命令,以完成该应用程序在所有设备上的部署,进而完成应用群中待部署的各应用程序部署在对应的所有设备中。解决了部署应用群时,采用Docker-compose容器编排工具无法实现将多个相互依赖的应用程序部署在多个设备上的问题,为在设备上部署应用群提供了一种新思路。
实施例二
图2A为本发明实施例二提供的一种应用群部署方法的流程图;图2B是本发明实施例二提供的一种应用群部署过程示意图;本实施例在上述实施例的基础上,进行了进一步的优化,具体给出了将Docker应用群中的具有相互依赖关系的待部署的应用程序部署到多个设备中的一种优选实例,参见图2A-2B,该方法具体包括:
S201,根据应用群中待部署的应用程序的配置序号,查找该应用程序与待部署的其他应用程序之间的依赖参数。
其中,依赖参数可以是用来表示当前应用程序与应用群中除当前应用程序以外的其他应用程序之间依赖关系的参数,例如,可以包括但不限于表示该依赖关系的文件的名称、内容以及当前应用程序的端口号等。
可选的,在设备上部署Docker应用群中的各应用程序前,系统或工作人员需要先根据待部署的各应用程序之间的依赖关系,为各应用程序设置配置序号,然后针对各应用程序的配置序号,在数据库配置中或预设配置文件中查找表示该应用程序与待部署的其他应用程序之间的依赖关系的文件的名称、内容以及该配置序号对应的应用程序的端口号等。例如,若Docker应用群中有三个待部署的应用程序,分别为应用程序A、应用程序B和应用程序C,其中,应用程序A的配置序号为2、应用程序B的配置序号为1、应用程序C的配置序号为3。分别根据每一个应用程序的配置序号,从数据库配置中或预设配置文件中查找该应用程与其他两个应用程序之间的依赖参数。
S202,根据外挂配置文件模板和依赖参数,提取待部署的应用程序的外挂配置文件。
其中,外挂配置文件模板可以是预先设定好的,用来提取外挂配置文件的模板,其可以是存储在数据库配置中,还可以存储在配置文件中,对此本步骤不进行限定。
可选的,由于本发明实施例是基于Docker开源应用容器引擎进行Docker应用群部署的,该部署方法需要将应用程序的配置文件外挂出来,以便于下次启动时直接调用该配置文件,因此,在本步骤中,可以根据Docker外挂配置文件模板和依赖参数,提取待部署的应用程序的Docker外挂配置文件。具体的,可以是运行生成Docker外挂配置文件的相关程序代码,且在运行该程序代码的过程中调用依赖参数和Docker外挂配置文件模板的相关内容,从而实现从数据库配置中或预设配置文件中提取出该应用程序的Docker外挂配置文件。
可选的,针对待部署的应用程序来说,每个应用程序与其他应用程序之间的依赖关系是根据实际情况而定的,所以,就会出现有的应用程序与其他应用程序没有依赖关系,此时该应用程序没有提取到外挂配置文件;有些应用程序与其他至少一个应用程序存在依赖关系,此时该应用程序就会提取到至少一个外挂配置文件。也就是说需要对待部署的所有应用程序都要进行Docker外挂配置文件的提取操作,但是并不是每一个应用程序都能提取到Docker外挂配置文件。
S203,判断该应用程序是否提取到外挂配置文件,若是,则执行S204,若否,则执行S205。
可选的,根据S202对各待部署应用程序的Docker外挂配置文件的提取结果,确定各应用程序是否提取到外挂配置文件,若提取到,则执行S204,获取具有Docker外挂配置文件的应用程序的Docker启动参数;若没有提取到,则执行S205,获取没有提取到Docker外挂配文件的应用程序的Docker启动参数。
例如,若Docker应用群中应用程序A和应用程序C都提取到了一个Docker外挂配置文件,而应用程序B没有提取到Docker外挂配置文件,则可以是对应用程序A和应用程序C执行S204的方法获取其Docker启动参数;对应用程序B执行S205的方法获取其Docker启动参数。
S204,若该应用程序提取到至少一个外挂配置文件,则获取该应用程序的启动映射端口、应用程序名称和至少一个外挂配置文件的路径作为该应用程序的启动参数。
示例性的,对于提取到Docker外挂配置文件的应用程序A,可以从数据库配置中或预设的配置文件中获取应用程序A对应的Docker启动映射端口01,应用程序名称A,以及该应用程序A的外挂配置文件在设备中的部署路径作为该应用程序A的Docker启动参数。相应的,采用同样的方式从数据库配置中或预设的配置文件中获取应用程序C对应的Docker启动映射端口03,应用程序名称C,以及该应用程序C的外挂配置文件在设备中的部署路径作为该应用程序C的Docker启动参数。
S205,若该应用程序没有提取到外挂配置文件,则获取该应用程序的启动映射端口和应用程序名称作为该应用程序的启动参数。
示例性的,对于没有提取到Docker外挂配置文件应用程序B,从数据库配置中或预设的配置文件中获取该应用程序B对应的Docker启动端口02和应用程序名称B作为该应用程序B的Docker启动参数。
S206根据启动参数,确定应用程序的启动命令。
示例性的,可以根据Docker应用群中每一个应用程序的Docker启动参数,来确定出该应用程序的Docker启动命令。例如,可以是对于通过S204获取的Docker启动参数,采用[启动映射端口][空格][应用程序名称][空格][外挂配置文件路径]的拼接形式以及固定的代码函数,生成有外挂配置文件的应用程序的Docker启动命令,例如,应用程序A和应用程序C可采用该方式生成各自对应的Docker启动命令。对于通过S205获取的Docker启动参数,采用[启动映射端口][空格][应用程序名称]的拼接形式以及固定的代码函数,生成无外挂配置文件的应用程序的Docker启动命令,例如,应用程序B采用该方式生成其对应的Docker启动命令。
S207,根据待部署的应用程序的配置序号,确定应用程序的部署顺序。
可选的,待部署的应用程序的配置序号决定了该应用程序部署在设备上时对应的部署顺序,由于Docker应用群中应用程序之间复杂的依赖关系,为了保证部署Docker应用群的准确性,需要按照配置序号确定出各应用程序的部署顺序,依次将各应用程序部署到对应的设备中。例如,应用程序A的配置序号为2、应用程序B的配置序号为1、应用程序C的配置序号为3,此时确定出的该Docker应用群中应用程序的部署顺序是,先部署应用程序B,再部署应用程序A,最后部署应用程序C。
S208,按照部署顺序,确定当前部署的应用程序是否提取到外挂配置文件,若是,则执行S209,若否,则执行S210。
可选的,按照S208中确定出的应用程序的部署顺序,依次判断应用程序在S202中是否提取到了外挂配置文件,若是,则采用S209的方法将该应用程序部署到对应的设备中;若否,则采用S210的方法将该应用程序部署到对应的设备中。例如,对于提取到了一个Docker外挂配置文件的应用程序A和应用程序C采用S209的方式部署到设备中;对于没有提取到Docker外挂配置文件的应用程序B采用S210的方式部署到设备中。
S209,若该应用程序提取到至少一个外挂配置文件,则在需要部署该应用程序的各设备中各外挂配置文件的路径下生成该路径对应的外挂配置文件,并运行该应用程序对应的启动指令。
可选的,在部署当前应用程序时,首先根据数据库配置或预设配置文件确定需要部署该应用程序的各设备,该设备可以是一个,也可以是多个。然后,对于每一个设备,可以根据S204中获取的该应用程序的各Docker外挂配置文件的路径,和S202中提取的各Docker外挂配置文件,运行预先设置好的程序代码,在该设备中各Docker外挂配置文件的路径下生成该路径对应的Docker外挂配置文件;最后再运行该应用程序对应的Docker启动命令。
例如,根据数据库配置或预设配置文件确定需要将应用程序A部署到设备1和设备2中,此时可以是对设备1和设备2并行或依次都执行如下操作:由于S202中已经提取到了应用程序A的Docker外挂配置文件,S204中也已经获取了该Docker外挂配置文件在设备中的存储路径,此时可以是控制设备1和设备2运行预先设置好的程序代码,在设备1和设备2的中该存储路径下生成该应用程序A的外挂配置文件,然后再继续运行该应用程序A的Docker启动命令,从而实现将应用程序A部署到设备1和设备2中。需要说明的是,若应用程序A有多个Docker外挂配置文件,则需要在设备1和设备2中每一个Docker外挂配置文件的路径下都生成该路径对应的外挂配置文件后,才可以继续运行应用程序A的Docker启动命令。
S210,若该应用程序没有提取到外挂配置文件,则在需要部署该应用程序的各设备上运行该应用程序对应的启动命令。
可选的,在部署当前应用程序时,也需要首先根据数据库配置或预设配置文件确定需要部署该应用程序的各设备。但是由于当前应用程序不存在Docker外挂配置文件,此时只需要在要部署该应用程序的各设备上运行该应用程序的Docker启动命令即可,例如,根据数据库配置或预设配置文件确定需要部署应用程序B的设备为设备2和设备3,此时可以依次或并行在设备2和设备3中通过预设代码运行应用程序B的Docker启动命令,即可以实现将应用程序B部署到设备2和设备3中。
需要说明的是,在本实施例中,S201-S202为提取Docker应用群中各应用程序的Docker外挂配置文件的过程,S203-S206为确定Docker应用群中各应用程序的Docker启动命令的过程,本发明实施例中可以是对于Docker应用群中的各应用程序并行执行上述两个操作过程,也可以是按照各应用程序的配置序号,按照顺序依次对每一个应用程序都依次执行上述两个过程的操作,对此本实施例不进行限定。
本发明实施例提供的应用群部署方法,通过查找应用群中的待部署的各应用程序与其他应用程序的依赖参数,提取应用程序的外挂配置文件;针对应用群中的各应用程序,对有外挂配置文件的应用程序和没有外挂配置文件的应用程序,采用不同的方式来确定应用程序的启动命令,进而采用不同的方式将应用程序部署在需要部署该应用程序的设备上。实现了将相互依赖关系复杂的应用程序构成的Docker应用群部署在多个设备中,提高了基于Docker开源应用容器引擎部署应用群的灵活性,为在设备上部署应用群提供了一种新思路。
实施例三
图3为本发明实施例三提供的一种应用群部署装置的结构框图,该装置可执行本发明实施例一和实施例二所提供的任意一种应用群部署方法,具备执行方法相应的功能模块和有益效果。如图3所示,该装置可以包括:
启动参数获取模块301,用于获取应用群中待部署的应用程序的启动参数;
启动命令确定模块302,根据所述启动参数,确定所述应用程序的启动命令;
应用程序部署模块303,用于根据所述待部署的应用程序的配置序号,在需要部署所述应用程序的各设备上运行所述应用程序对应的启动命令,以实现所述应用程序在所述各设备上的部署操作。
本实施例的一种应用群部署装置,通过获取应用群中的待部署的各应用程序的启动参数,确定各应用程序的启动命令,按照各应用程序的配置序号,依次对各应用程序,确定出需要部署该应用程序的所有设备,并在各设备上执行该程序的启动命令,以完成该应用程序在所有设备上的部署,进而完成应用群中待部署的各应用程序部署在对应的所有设备中。解决了部署应用群时,采用Docker-compose容器编排工具无法实现将多个相互依赖的应用程序部署在多个设备上的问题,为在设备上部署应用群提供了一种新思路。
进一步的,上述装置还包括:
依赖参数查找模块,用于根据应用群中待部署的应用程序的配置序号,查找所述应用程序与待部署的其他应用程序之间的依赖参数;
外挂文件提取模块,用于根据外挂配置文件模板和所述依赖参数,提取所述待部署的应用程序的外挂配置文件。
进一步的,上述启动参数获取模块301具体用于:
针对应用群中待部署的每一应用程序,若所述应用程序没有提取到外挂配置文件,则获取所述应用程序的启动映射端口和应用程序名称作为所述应用程序的启动参数;
若所述应用程序提取到至少一个外挂配置文件,则获取所述应用程序的启动映射端口、应用程序名称和所述至少一个外挂配置文件的路径作为所述应用程序的启动参数。
进一步的,上述应用程序部署模块303在需要部署所述应用程序的各设备上运行所述应用程序对应的启动命令时,具体用于:
针对应用群中待部署的每一应用程序,若所述应用程序没有提取到外挂配置文件,则在需要部署所述应用程序的各设备上运行所述应用程序对应的启动命令;
若所述应用程序提取到至少一个外挂配置文件,则在需要部署所述应用程序的各设备中各外挂配置文件的路径下生成该路径对应的外挂配置文件,并运行所述应用程序对应的启动指令。
进一步的,上述应用程序部署模块303具体用于:
根据所述待部署的应用程序的配置序号,确定应用程序的部署顺序;
按照所述部署顺序,依次在需要部署当前应用程序的各设备上运行所述应用程序对应的启动命令。
进一步的,上述任意一种应用群部署方法都可基于Docker开源应用容器引擎实现。
实施例四
图4为本发明实施例四提供的一种设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性设备40的框图。图4显示的设备40仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图4所示,该设备40以通用计算设备的形式表现。该设备40的组件可以包括但不限于:一个或者多个处理器或者处理单元401,系统存储器402,连接不同系统组件(包括系统存储器402和处理单元401)的总线403。
总线403表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
设备40典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备40访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器402可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)404和/或高速缓存存储器405。设备40可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统406可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线403相连。系统存储器402可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块407的程序/实用工具408,可以存储在例如系统存储器402中,这样的程序模块407包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块407通常执行本发明所描述的实施例中的功能和/或方法。
设备40也可以与一个或多个外部设备409(例如键盘、指向设备、显示器410等)通信,还可与一个或者多个使得用户能与该设备交互的设备通信,和/或与使得该设备40能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口411进行。并且,设备40还可以通过网络适配器412与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图4所示,网络适配器412通过总线403与设备40的其它模块通信。应当明白,尽管图中未示出,可以结合设备40使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。例如,实现本发明实施例一和实施例二任意所述的应用群部署方法。
实施例五
本发明实施例五还提供一种计算机可读存储介质,其上存储有计算机程序(或称为计算机可执行指令),该程序被处理器执行时可用于执行上述任意一种应用群部署方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明实施例进行了较为详细的说明,但是本发明实施例不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (7)

1.一种应用群部署方法,其特征在于,所述方法包括:
获取应用群中待部署的应用程序的启动参数;其中,所述应用群中待部署的应用程序之间存在相互依赖关系;
根据所述启动参数,确定所述应用程序的启动命令;
根据所述待部署的应用程序的配置序号,在需要部署所述应用程序的各设备上运行所述应用程序对应的启动命令,以实现所述应用程序在所述各设备上的部署操作;
其中,根据所述待部署的应用程序的配置序号,在需要部署所述应用程序的各设备上运行所述应用程序对应的启动命令,包括:
为待部署的每个应用程序,确定需要部署该应用程序的至少一个设备;
根据所述待部署的每个应用程序的配置序号,在需要部署每个应用程序的各设备上运行该应用程序对应的启动命令;
在获取应用群中待部署的应用程序的启动参数之前,还包括:
根据应用群中待部署的应用程序的配置序号,查找所述应用程序与待部署的其他应用程序之间的依赖参数;其中,所述依赖参数为与所述应用程序具有依赖关系的其他应用程序的名称、内容以及当前应用程序的端口;
根据外挂配置文件模板和所述依赖参数,提取所述待部署的应用程序的外挂配置文件;
相应的,获取应用群中待部署的应用程序的启动参数,包括:
针对应用群中待部署的每一应用程序,若所述应用程序没有提取到外挂配置文件,则获取所述应用程序的启动映射端口和应用程序名称作为所述应用程序的启动参数;
若所述应用程序提取到至少一个外挂配置文件,则获取所述应用程序的启动映射端口、应用程序名称和所述至少一个外挂配置文件的路径作为所述应用程序的启动参数。
2.根据权利要求1所述的方法,其特征在于,在需要部署所述应用程序的各设备上运行所述应用程序对应的启动命令,包括:
针对应用群中待部署的每一应用程序,若所述应用程序没有提取到外挂配置文件,则在需要部署所述应用程序的各设备上运行所述应用程序对应的启动命令;
若所述应用程序提取到至少一个外挂配置文件,则在需要部署所述应用程序的各设备中各外挂配置文件的路径下生成该路径对应的外挂配置文件,并运行所述应用程序对应的启动指令。
3.根据权利要求1所述的方法,其特征在于,根据所述待部署的应用程序的配置序号,在需要部署所述应用程序的各设备上运行所述应用程序对应的启动命令,包括:
根据所述待部署的应用程序的配置序号,确定应用程序的部署顺序;
按照所述部署顺序,依次在需要部署当前应用程序的各设备上运行所述应用程序对应的启动命令。
4.根据权利要求1-3任一所述的方法,其特征在于,所述方法基于Docker开源应用容器引擎实现。
5.一种应用群部署装置,其特征在于,所述装置包括:
启动参数获取模块,用于获取应用群中待部署的应用程序的启动参数;其中,所述应用群中待部署的应用程序之间存在相互依赖关系;
启动命令确定模块,根据所述启动参数,确定所述应用程序的启动命令;
应用程序部署模块,用于根据所述待部署的应用程序的配置序号,在需要部署所述应用程序的各设备上运行所述应用程序对应的启动命令,以实现所述应用程序在所述各设备上的部署操作;
其中,应用程序部署模块具体用于:
为待部署的每个应用程序,确定需要部署该应用程序的至少一个设备;
根据所述待部署的每个应用程序的配置序号,在需要部署每个应用程序的各设备上运行该应用程序对应的启动命令;
所述装置还包括:
依赖参数查找模块,用于根据应用群中待部署的应用程序的配置序号,查找所述应用程序与待部署的其他应用程序之间的依赖参数;其中,所述依赖参数为与所述应用程序具有依赖关系的其他应用程序的名称、内容以及当前应用程序的端口;
外挂文件提取模块,用于根据外挂配置文件模板和所述依赖参数,提取所述待部署的应用程序的外挂配置文件;
相应的,所述启动参数获取模块具体用于:
针对应用群中待部署的每一应用程序,若所述应用程序没有提取到外挂配置文件,则获取所述应用程序的启动映射端口和应用程序名称作为所述应用程序的启动参数;
若所述应用程序提取到至少一个外挂配置文件,则获取所述应用程序的启动映射端口、应用程序名称和所述至少一个外挂配置文件的路径作为所述应用程序的启动参数。
6.一种应用群部署设备,其特征在于,所述应用群部署设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4中任一所述的应用群部署方法。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一所述的应用群部署方法。
CN201910289282.4A 2019-04-11 2019-04-11 一种应用群部署方法、装置、设备和存储介质 Active CN109976765B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910289282.4A CN109976765B (zh) 2019-04-11 2019-04-11 一种应用群部署方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910289282.4A CN109976765B (zh) 2019-04-11 2019-04-11 一种应用群部署方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN109976765A CN109976765A (zh) 2019-07-05
CN109976765B true CN109976765B (zh) 2020-05-15

Family

ID=67084148

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910289282.4A Active CN109976765B (zh) 2019-04-11 2019-04-11 一种应用群部署方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN109976765B (zh)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108762769B (zh) * 2018-06-04 2022-06-21 万惠投资管理有限公司 微服务应用编排和部署方法、装置及计算机终端

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Docker从零到集群(3/3)-Machine,Compose,Swarm;宇帅;《https://www.imooc.com/article/278062》;20190213;第1-3页 *

Also Published As

Publication number Publication date
CN109976765A (zh) 2019-07-05

Similar Documents

Publication Publication Date Title
CN109002510B (zh) 一种对话处理方法、装置、设备和介质
EP3353648A1 (en) Methods and systems for uploading a program based on a target network platform
WO2017020459A1 (zh) 一种为宿主配置插件包的方法与装置
CN112615758B (zh) 一种应用识别方法、装置、设备及存储介质
CN111124371A (zh) 一种基于游戏的数据处理方法、装置、设备及存储介质
CN110515647A (zh) 一种静态资源管理方法、装置、设备和存储介质
CN113760306A (zh) 安装软件的方法、装置、电子设备及存储介质
CN114721783B (zh) 资源文件提取方法、装置、电子设备及存储介质
CN110659210A (zh) 一种信息获取方法、装置、电子设备及存储介质
CN113051514A (zh) 元素的定位方法、装置、电子设备及存储介质
CN112966824A (zh) 推理库的部署方法、装置和电子设备
CN112463256A (zh) 确定配置文件的方法、系统、电子设备及存储介质
CN112835568A (zh) 一种项目构建方法和装置
CN110851211A (zh) 用于显示应用信息的方法、装置、电子设备和介质
CN114003269A (zh) 组件处理方法、装置、电子设备及存储介质
CN113220367A (zh) 小程序的运行方法、装置、电子设备及存储介质
CN112631621A (zh) 一种依赖包管理方法、装置、服务器及存储介质
WO2023151397A1 (zh) 应用程序部署方法、装置、设备及介质
CN109976765B (zh) 一种应用群部署方法、装置、设备和存储介质
CN111966630A (zh) 文件类型的检测方法、装置、设备和介质
CN111352664A (zh) 分布式机器学习任务启动方法、系统、设备及存储介质
CN111488286B (zh) 一种Android模块独立开发的方法及装置
CN109697167B (zh) 测试变量的管理方法、系统、电子设备和存储介质
CN113986385A (zh) 项目字体库加载方法、装置、电子设备及存储介质
CN113590225B (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210527

Address after: No.1, 14th floor, unit 1, building 1, No.38, Sanse Road, Jinjiang Industrial Park, Chengdu, Sichuan 610011

Patentee after: Sichuan Qidi Shuan blockchain Technology Development Co.,Ltd.

Address before: 100084 a1201f, 12 / F, building 8, yard 1, Zhongguancun East Road, Haidian District, Beijing

Patentee before: Beijing Qidi Block Chain Technology Development Co.,Ltd.