CN116931956A - 一种应用部署方法及相关装置 - Google Patents
一种应用部署方法及相关装置 Download PDFInfo
- Publication number
- CN116931956A CN116931956A CN202210361881.4A CN202210361881A CN116931956A CN 116931956 A CN116931956 A CN 116931956A CN 202210361881 A CN202210361881 A CN 202210361881A CN 116931956 A CN116931956 A CN 116931956A
- Authority
- CN
- China
- Prior art keywords
- application
- components
- target
- component
- deployment
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 148
- 230000006854 communication Effects 0.000 claims description 89
- 238000004891 communication Methods 0.000 claims description 86
- 230000008569 process Effects 0.000 claims description 59
- 230000006870 function Effects 0.000 claims description 40
- 238000012545 processing Methods 0.000 claims description 38
- 238000004590 computer program Methods 0.000 claims description 13
- 238000002955 isolation Methods 0.000 claims description 4
- 230000001419 dependent effect Effects 0.000 abstract description 25
- 238000005516 engineering process Methods 0.000 abstract description 14
- 238000009434 installation Methods 0.000 abstract description 10
- 238000013461 design Methods 0.000 description 21
- 101100055496 Arabidopsis thaliana APP2 gene Proteins 0.000 description 14
- 101100016250 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) GYL1 gene Proteins 0.000 description 14
- 238000010586 diagram Methods 0.000 description 14
- 238000011161 development Methods 0.000 description 9
- 102100038359 Xaa-Pro aminopeptidase 3 Human genes 0.000 description 6
- 101710081949 Xaa-Pro aminopeptidase 3 Proteins 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 4
- 101150053844 APP1 gene Proteins 0.000 description 3
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 description 3
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 2
- 230000001965 increasing effect Effects 0.000 description 2
- 238000007620 mathematical function Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供一种应用部署方法及相关装置,应用于信息技术、计算技术领域。本申请实施例中,由云端通过信息指示应用信赖的组件和应用的业务流程来部署应用。在运行应用时,对于缺少依赖组件的情况,则向云端请求缺少的组件,在存在应用依赖的组件的情况下,基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。这样大大减小了应用安装所需要获取的数据的大小,提升应用的下载效率,降低网络资源消耗,有效提升了应用的部署效率即运行效率,甚至实现应用的秒级部署。
Description
技术领域
本申请涉及信息技术领域,尤其涉及一种应用部署方法及相关装置。
背景技术
近年来,随着万物互联时代的到来和无线网络的普及,网络边缘、终端的设备数量及其产生的数据量都急剧增长。根据互联网数据中心(internet data center,IDC)预测,到2025年,设备数将达到约400亿,其中工业、汽车、智能家居、智能穿戴等数量居前。其中,网络边缘、终端的设备提供了强大的计算资源,为工业互联网应用提供了基于工业大数据分析的实时、灵活、快速的决策,极大地促进了经济的发展。
设备完成其业务功能时,离不开其中部署的各类应用。随着大数据、物联网的不断发展,设备上应用App的安装升级需求将会不断增加。但是,目前设备中的应用,要么是出厂预置在设备上,或者通过网络下载升级包,更新效率低,占用带宽大。
如何提高应用部署效率,是本领域人员正在研究的热点。
发明内容
本申请实施例提供一种应用部署方法及相关装置,能够提高应用部署效率。
第一方面,本申请实施例提供了一种应用部署方法,包括:
接收来自云端的针对目标应用的部署消息,所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程;
在缺少所述多个组件中的目标组件时,从云端下载所述目标组件;
基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。
其中,组件(node)是用于实现某个或者若干个功能的代码片段或者已编译的二进制文件,通常被预先定义或者被预先封装。可选的,组件可以是函数、算法(例如排序算法)、框架、软件模块、封装的工具、逻辑控制组件、或传感器控制组件(例如读取温度传感器测量的温度)等。例如,基于node.js(一个JavaScript的运行环境)的应用,依赖一些nonde.js相关组件来运行,如Express框架(一种快速搭建网站的框架)、Path模块(提供转换文件路径的工具)等组件。再如,物联网场景中,应用可以依赖数学函数组件、统计组件、定时器组件、比例-积分-微分(proportion integral differential,PID)控制器组件、热力学组件、光学组件或空气质量检测组件等中的一项或者多项。
上述方法可以应用于目标设备中,目标设备例如可以是网络的边缘设备和/或终端等。
本申请实施例中,在目标设备中部署应用时,无需下载应用的整包安装包,而是由云端通过信息指示应用信赖的组件和应用的业务流程来部署应用。
在运行应用时,对于缺少依赖组件的情况,则向云端请求缺少的组件,在存在应用依赖的组件的情况下,基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。如此,可以减少不必要的网络开销,有效提升了应用的部署效率即运行效率,甚至实现应用的秒级部署。
本申请实施例进一步可以应用于云-边-端协同系统中,云-边-端协同系统中包含云端、边缘设备和终端,终端通过边缘设备与云端进行连接。该边缘设备和终端为前述目标设备,云端向边缘设备(或终端)发送应用部署信息,向边缘设备(或终端)提供设备,相应的,边缘设备基于应用的业务流程和业务的组件,即可运行应用。
对于边缘设备和终端来说,其中的计算资源和存储资源通常有限,因此通过本申请实施例,可以降低应用部署对边缘设备和终端的存储空间的影响。
例如,终端可以包含直接数字控制器(Direct Digital Control,DDC)。其中,DDC是一种基于处理器和控制器来实现控制逻辑的设备,能够接收传感器、触点或其他仪器输出的信号,并处理这些信号,输出控制信号到外部设备。输出的控制信号可以用于启动/关闭机器、打开/关闭阀门、打开/关闭阀门、或者按照程序指令执行复杂的动作等。通过本申请实施例,在无需更换DDC硬件固件的情况下在DDC中部署应用,从而便捷地更新DDC内的控制逻辑程序,提升了用户体验。
在第一方面的一种可能的实施方式中,所述方法还包括:
在存在所述多个组件时,基于所述目标应用的业务流程和所述多个组件运行应用。
在第一方面的又一种可能的实施方式中,所述应用部署消息包含所述目标应用的元数据;所述目标应用的元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。
其中,元数据(Metadata),又称中介数据、中继数据,用于描述数据属性的信息。本申请实施例中,元数据用于描述所述应用的业务流程(或者说处理逻辑),例如,元数据可以用来描述组件之间的调用关系、和/或传递关系、或需要执行组件的哪一个片段等等。
可选的,元数据可以有多种格式,例如JavaScript对象简谱(JavaScript objectnotation,JSON)格式、可扩展标记语言(extensible markup language,XML)、或键-值(key-value,KV)形式等。
在第一方面的又一种可能的实施方式中,元数据为JSON格式。JSON格式是一种轻量级的数据交换格式,用于存储和表示数据,JSON格式具有简洁和清晰的层级结构,面对对象友好且易于解析,通过JSON格式来存储、传输元数据,可以有效提升传输效率和解析效率。
在第一方面的又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识,在两个组件的标识一致时为相同组件。
上述说明了一些可能的情况。作为一种可能的方案,在两个组件的标识一致时,则说明该两个组件为相同的组件,例如两个组件的ID都为“A01”,则标识组件相同。
作为又一种可能的方案,两个组件的标识一致,则说明两个应用相同,此处的相同包含了版本也相同。
在第一方面的又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识和所述多个组件的版本;
在两个组件的标识一致且版本一致时为相同组件。
若应用依赖的组件对应的ID为“C01”,版本为“1.1.2”,而目标设备中存在ID为“C01”的组件,但版本为“1.1.0”,则目标设备中缺少应用所依赖的组件“C01”。
在第一方面的又一种可能的实施方式中,所述基于所述目标应用的业务流程和所述多个组件,运行所述目标应用,包括:
基于所述目标应用的业务流程和所述多个组件,在运行引擎实例上运行所述应用。
以上说明了本申请中应用的运行方式,运行应用的过程中无需通过镜像包或者安装包来部署、运行应用,而是基于运行引擎实例,根据应用对应的元数据和应用依赖的组件来运行应用,从而进一步提高应用运行效率,提升目标设备的服务质量。
可选的,运行引擎实例所提供的运行环境为基于Node.js的环境。或者,运行引擎实例所提供的环境还可以是基于java、python、go语音等开发语言的环境。其所基于的平台可以是linux平台,也可以是windows或者其他平台。本申请实施例对于各种平台、各种开发环境、开发语言均适用。
在第一方面的又一种可能的实施方式中,所述运行引擎实例包含于容器中,所述容器用于提供应用部署所需的隔离坏境。
其中,容器是一种虚拟化的技术,可以使进程运行于相对独立和隔离的环境(包含独立的文件系统、命名空间、资源视图等)。通过容器来部署运行引擎实例,可以简化应用的部署流程,增强运行引擎实例及其中的应用的可移植性和安全性,并提高系统资源利用率。
在第一方面的又一种可能的实施方式中,下载的所述目标组件保存在所述容器的组件库,所述组件库的组件在多个应用之间复用。
以上说明了组件的存储位置。由于组件下载到容器中,容器可以形成一个相对隔离的环境,从而避免组件受到目标设备中其他环境的干扰,提升系统的稳定性。
在第一方面的又一种可能的实施方式中,所述容器包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。例如,管理应用可以分析应用所依赖的组件、下载或者升级运行引擎实例中的组件等。
作为一种可能的方案,管理应用(application,APP)也基于应用的业务流程和组件来完成相应的功能,但管理应用的组件预先配置在容器中,使得管理应用可以完成管理功能。
在第一方面的又一种可能的实施方式中,所述方法还包括:
所述目标设备将所述运行引擎实例注册到所述云端。
相应的,云端可以接收运行引擎实例的注册。
进一步的,运行引擎实例保持与所述运行引擎实例的通信长连接,例如,通过心跳机制保持连接。如此,云端和运行引擎实例之间可以基于注册信息建立连接。当有消息需要发送给指定的运行引擎实例时,可以通过注册信息生成连接,从而进行通信。一方面,通过注册可以便于云端对引擎进行统一管理,提高稳定性;另一方面可以减少通信连接的建立流程,从而节省应用部署时间,提升应用部署效率。
在第一方面的又一种可能的实施方式中,所述目标设备和所述云端通过无线通信技术通信。例如:全球移动通信系统(global system for mobile communications,GSM)、通用分组无线业务(generalpacket radio service,GPRS)、通用移动通信系统(universalmobile telecommunications System,UMTS),LTE,超文本传输协议(hypertext transferprotocol,HTTP)、车载以太网(scalable service-oriented middleware over IP,SOME/IP)或5G等无线接入类型技术。
在第一方面的又一种可能的实施方式中,所述方法还包括:
所述运行引擎实例通过消息队列遥测传输(message queuing telemetrytransport,MQTT)协议与所述云端通信。
其中,MQTT是一种基于传输控制协议/网际协议(Transmission ControlProtocol/Internet Protocol,TCP/IP)协议来传输的轻量级通信协议。MQTT通信过程中通过MQTT代理器(Broker,或称服务器)和客户端,MQTT Broker负责接收来自客户端的网络连接,并处理客户端的订阅/取消订阅、消息发布(Publish)请求,同时也会将客户端发布的消息转发给其他订阅者。
由于MQTT是轻量协议,客户端较为小巧,当部署在目标设备中时无需消耗太多的存储空间和计算资源,从而可以提升运行引擎实例的部署、通信效率。
在第一方面的又一种可能的实施方式中,所述方法还包括:
所述运行引擎实例通过受限应用协议(constrained application protocol,COAP)与所述云端通信。
COAP使用在资源受限的设备上,其对通信的消息格式进行了简化,具有轻量化、低功耗的优点,当部署在目标设备(尤其是DDC等存储和计算资源有限的设备)中时无需消耗太多的存储空间和计算资源,从而可以提升对目标设备进行控制时的效率。
在第一方面的又一种可能的实施方式中,所述方法还包括:
向所述云端发送针对所述应用的部署请求或升级请求。
第二方面,本申请实施例提供一种应用部署方法,包括:
向目标设备发送针对目标应用的部署消息,所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程,所述目标设备为边缘设备和/或终端;
在缺少所述多个组件中的目标组件时,向所述目标设备提供目标组件,所述目标组件用于所述目标设备运行所述目标应用。
上述方法可以应用于云端中。
本申请实施例进一步可以应用于云-边-端协同系统中,云-边-端协同系统中包含云端、边缘设备和终端,终端通过边缘设备与云端进行连接。该边缘设备和终端为前述目标设备,云端向边缘设备(或终端)发送应用部署信息,向边缘设备(或终端)提供设备,相应的,边缘设备基于应用的业务流程和业务的组件,即可运行应用。
对于边缘设备和终端来说,其中的计算资源和存储资源通常有限,因此通过本申请实施例,可以降低应用部署对边缘设备和终端的存储空间的影响。
例如,终端可以包含直接数字控制器(Direct Digital Control,DDC)。其中,DDC是一种基于处理器和控制器来实现控制逻辑的设备,能够接收传感器、触点或其他仪器输出的信号,并处理这些信号,输出控制信号到外部设备。输出的控制信号可以用于启动/关闭机器、打开/关闭阀门、打开/关闭阀门、或者按照程序指令执行复杂的动作等。通过本申请实施例,在无需更换DDC硬件固件的情况下在DDC中部署应用,从而便捷地更新DDC内的控制逻辑程序,提升了用户提体验。
在第二方面的一种可能的实施方式中,所述应用部署消息包含所述目标应用的元数据;所述目标应用的元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。
可选的,元数据可以有多种格式,例如JavaScript对象简谱(JavaScript objectnotation,JSON)格式、可扩展标记语言(extensible markup language,XML)、或键-值(key-value,KV)形式等。
在第二方面的又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识,在两个组件的标识一致时为相同组件。
在第二方面的又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识和所述多个组件的版本;
在两个组件的标识一致且版本一致时为相同组件。
在第二方面的又一种可能的实施方式中,所述方法还包括:
向所述目标设备提供运行引擎实例,所述运行引擎实例用于通过所述目标应用的业务流程和所述多个组件运行所述应用。
在第二方面的又一种可能的实施方式中,所述运行引擎实例包含于容器中,所述容器用于提供应用部署所需的隔离坏境。
在第二方面的又一种可能的实施方式中,所述目标设备的容器中包含组件库,所述组件库的组件在多个应用之间复用。
在第二方面的又一种可能的实施方式中,所述容器包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。例如,管理应用可以分析应用所依赖的组件、下载或者升级运行引擎实例中的组件等。
在第二方面的又一种可能的实施方式中,所述方法还包括:
接收所述目标设备发送的关于所述运行引擎实例的注册信息;
与所述运行引擎实例保持长连接。
在第二方面的又一种可能的实施方式中,所述目标设备和所述云端通过无线通信技术通信。
在第二方面的又一种可能的实施方式中,所述方法还包括:
通过MQTT协议与所述运行引擎实例通信。
在第二方面的又一种可能的实施方式中,所述方法还包括:
通过COAP协议与所述运行引擎实例通信。
在第二方面的又一种可能的实施方式中,所述方法还包括:
接收来自目标设备的针对所述应用的部署请求或升级请求。
第三方面,本申请实施例提供一种应用部署系统,所述系统包含部署云端的服务器和目标设备,所述目标设备为边缘设备和/或终端,其中:
所述云端,用于向目标设备发送针对目标应用的部署消息,所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程;
所述目标设备,用于接收所述部署消息;
所述目标设备,还用于在缺少所述多个组件中的目标组件时,从云端下载所述目标组件;
所述云端,还用于向所述目标设备提供所述目标组件;
所述目标设备,还用于基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。
在第三方面的又一种可能的实施方式中,所述应用部署消息包含所述目标应用的元数据;所述目标应用的元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。
可选的,元数据可以有多种格式,例如JavaScript对象简谱(JavaScript objectnotation,JSON)格式、可扩展标记语言(extensible markup language,XML)、或键-值(key-value,KV)形式等。
在第三方面的又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识,在两个组件的标识一致时为相同组件;
或者,所述组件指示信息包含所述多个组件的标识和所述多个组件的版本;
在两个组件的标识一致且版本一致时为相同组件。
在第三方面的又一种可能的实施方式中,所述云端,还用于向所述目标设备提供运行引擎实例;
所述目标设备,还用于基于所述目标应用的业务流程和所述多个组件,在运行引擎实例上运行所述应用。
在第三方面的又一种可能的实施方式中,所述运行引擎实例包含于容器中,所述容器用于提供应用部署所需的隔离坏境;
下载的所述目标组件保存在所述容器的组件库,所述组件库的组件在多个应用之间复用;
所述容器包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。
在第三方面的又一种可能的实施方式中,所述目标设备,还用于将所述运行引擎实例注册到所述云端,并保持云端与所述运行引擎实例的通信长连接。
作为一种可能的方案,所述云端可以记录所述运行引擎实例的在线状态。
在第三方面的又一种可能的实施方式中,所述目标设备和所述云端通过无线通信技术通信。
在第三方面的又一种可能的实施方式中,所述云端通过MQTT协议与所述运行引擎实例通信。
在第三方面的又一种可能的实施方式中,所述云端通过COAP协议与所述运行引擎实例通信。
在第三方面的又一种可能的实施方式中,所述元数据中包含所述多个组件的标识,组件的标识一致为相同组件。
在第三方面的又一种可能的实施方式中,所述元数据中包含所述多个组件的标识和所述多个组件的版本信息;在组件的标识一致且组件的版本信息一致时为相同组件。
在第三方面的又一种可能的实施方式中,在所述目标设备接收来自云端的针对应用的部署消息之前,所述方法还包括:
所述目标设备向所述云端发送针对所述应用的部署请求或升级请求。
第四方面,本申请实施例提供一种应用部署装置,所述应用部署装置至少包含通信单元和处理单元。该应用部署装置用于实现第一方面任一项实施方式所描述的方法。
在第四方面的一种可能的实施方式中,所述通信单元,用于接收来自云端的针对目标应用的部署消息,所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程;
所述通信单元,还用于在缺少所述多个组件中的目标组件时,从云端下载所述目标组件;
所述处理单元,用于基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。
在第四方面的又一种可能的实施方式中,所述组件为用于实现预定义功能的代码片段或二进制文件。
在第四方面的又一种可能的实施方式中,所述处理单元,还用于存在所述多个组件时,基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。
在第四方面的又一种可能的实施方式中,所述应用部署消息包含所述目标应用的元数据;所述目标应用的元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。
可选的,元数据可以有多种格式,例如JSON格式、XML、KV形式等。
在第四方面的又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识,在两个组件的标识一致时为相同组件;
或者,所述组件指示信息包含所述多个组件的标识和所述多个组件的版本;
在两个组件的标识一致且版本一致时为相同组件。
在第四方面的又一种可能的实施方式中,所述处理单元,还用于基于所述目标应用的业务流程和所述多个组件,在运行引擎实例上运行所述应用。
在第四方面的又一种可能的实施方式中,所述应用部署装置包含容器,所述容器用于提供应用部署所需的隔离坏境,所述运行引擎实例包含于所述容器中;
所述容器还包括组件库,所述组件库的组件在多个应用之间复用;
所述容器包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。
在第四方面的又一种可能的实施方式中,所述通信单元,还用于:
将所述运行引擎实例注册到所述云端,并保持云端与所述运行引擎实例的通信长连接。
在第四方面的又一种可能的实施方式中,所述通信单元,还用于:
向所述云端发送针对所述目标应用的部署请求或升级请求。
第五方面,本申请实施例提供一种应用部署装置,所述应用部署装置至少包含通信单元和处理单元。该应用部署装置用于实现第二方面任一项实施方式所描述的方法。
在第五方面的一种可能的实施方式中,所述通信单元,用于向目标设备发送针对目标应用的部署消息,所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程,所述目标设备为边缘设备和/或终端;
所述通信单元和处理单元,用于在缺少所述多个组件中的目标组件时,向所述目标设备提供目标组件,所述目标组件用于所述目标设备运行所述目标应用。
在第五方面的又一种可能的实施方式中,所述应用部署消息包含所述目标应用的元数据;所述目标应用的元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。
可选的,元数据可以有多种格式,例如JSON格式、XML、KV形式等。
在第五方面的又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识,在两个组件的标识一致时为相同组件。
在第五方面的又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识和所述多个组件的版本;
在两个组件的标识一致且版本一致时为相同组件。
在第五方面的又一种可能的实施方式中,所述通信单元和处理单元,还用于:
向所述目标设备提供运行引擎实例,所述运行引擎实例用于通过所述目标应用的业务流程和所述多个组件运行所述应用。
在第五方面的又一种可能的实施方式中,所述运行引擎实例包含于容器中,所述容器用于提供应用部署所需的隔离坏境。
在第五方面的又一种可能的实施方式中,所述目标设备的容器中包含组件库,所述组件库的组件在多个应用之间复用。
在第五方面的又一种可能的实施方式中,所述容器包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。例如,管理应用可以分析应用所依赖的组件、下载或者升级运行引擎实例中的组件等。
在第五方面的又一种可能的实施方式中,所述通信单元,还用于:
接收所述目标设备发送的关于所述运行引擎实例的注册信息;
与所述运行引擎实例保持长连接。
在第五方面的又一种可能的实施方式中,所述目标设备和所述云端通过无线通信技术通信。
在第五方面的又一种可能的实施方式中,所述通信单元,还用于:
通过MQTT协议与所述运行引擎实例通信。
在第五方面的又一种可能的实施方式中,所述通信单元,还用于:
通过COAP协议与所述运行引擎实例通信。
在第五方面的又一种可能的实施方式中,所述通信单元,还用于:
接收来自目标设备的针对所述应用的部署请求或升级请求。
第六方面,本申请实施例提供一种计算设备,所述计算设备包括处理器和存储器。该处理器用于执行所述存储器存储的计算机程序,使得所述计算设备实现第一方面任一项所描述的方法。
在第六方面的一种可能的实施方式中,所述处理器用于执行所述存储器存储的计算机程序,实现如下操作:
接收来自云端的针对目标应用的部署消息,所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程;
在缺少所述多个组件中的目标组件时,从云端下载所述目标组件;
基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。
在第六方面的又一种可能的实施方式中,所述组件为用于实现预定义功能的代码片段或二进制文件。
在第六方面的又一种可能的实施方式中,所述处理器,还用于存在所述多个组件时,基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。
在第六方面的又一种可能的实施方式中,所述应用部署消息包含所述目标应用的元数据;所述目标应用的元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。
可选的,元数据可以有多种格式,例如JSON格式、XML、KV形式等。
在第六方面的又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识,在两个组件的标识一致时为相同组件;
或者,所述组件指示信息包含所述多个组件的标识和所述多个组件的版本;
在两个组件的标识一致且版本一致时为相同组件。
在第六方面的又一种可能的实施方式中,所述处理器,还用于基于所述目标应用的业务流程和所述多个组件,在运行引擎实例上运行所述应用。
在第六方面的又一种可能的实施方式中,所述应用部署装置包含容器,所述容器用于提供应用部署所需的隔离坏境,所述运行引擎实例包含于所述容器中;
所述容器还包括组件库,所述组件库的组件在多个应用之间复用;
所述容器包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。
在第六方面的又一种可能的实施方式中,所述处理器,还用于:
将所述运行引擎实例注册到所述云端,并保持云端与所述运行引擎实例的通信长连接。
在第六方面的又一种可能的实施方式中,所述处理器,还用于:
向所述云端发送针对所述目标应用的部署请求或升级请求。
第七方面,本申请实施例提供一种计算设备,所述计算设备包括处理器和存储器。该处理器用于执行所述存储器存储的计算机程序,使得所述计算设备实现第二方面任一项所描述的方法。
在第七方面的一种可能的实施方式中,所述处理器用于执行所述存储器存储的计算机程序,实现如下操作:
向目标设备发送针对目标应用的部署消息,所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程,所述目标设备为边缘设备和/或终端;
在缺少所述多个组件中的目标组件时,向所述目标设备提供目标组件,所述目标组件用于所述目标设备运行所述目标应用。
在第七方面的又一种可能的实施方式中,所述应用部署消息包含所述目标应用的元数据;所述目标应用的元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。
可选的,元数据可以有多种格式,例如JSON格式、XML、KV形式等。
在第七方面的又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识,在两个组件的标识一致时为相同组件。
在第七方面的又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识和所述多个组件的版本;
在两个组件的标识一致且版本一致时为相同组件。
在第七方面的又一种可能的实施方式中,所述处理器,还用于:
向所述目标设备提供运行引擎实例,所述运行引擎实例用于通过所述目标应用的业务流程和所述多个组件运行所述应用。
在第七方面的又一种可能的实施方式中,所述运行引擎实例包含于容器中,所述容器用于提供应用部署所需的隔离坏境。
在第七方面的又一种可能的实施方式中,所述目标设备的容器中包含组件库,所述组件库的组件在多个应用之间复用。
在第七方面的又一种可能的实施方式中,所述容器包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。例如,管理应用可以分析应用所依赖的组件、下载或者升级运行引擎实例中的组件等。
在第七方面的又一种可能的实施方式中,所述处理器,还用于:
接收所述目标设备发送的关于所述运行引擎实例的注册信息;
与所述运行引擎实例保持长连接。
在第七方面的又一种可能的实施方式中,所述目标设备和所述云端通过无线通信技术通信。
在第七方面的又一种可能的实施方式中,所述处理器,还用于:
通过MQTT协议与所述运行引擎实例通信。
在第七方面的又一种可能的实施方式中,所述处理器,还用于:
通过COAP协议与所述运行引擎实例通信。
在第七方面的又一种可能的实施方式中,所述处理器,还用于:
接收来自目标设备的针对所述应用的部署请求或升级请求。
第八方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令用于实现前述第一方面任一项所描述的方法。
第九方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令用于实现前述第二方面任一项所描述的方法。
第十方面,本申请提供了一种计算机程序产品,计算机程序产品包括计算机指令,所述指令用于实现前述第一方面任一项或第二方面任一项所描述的方法。
可选的,该计算机程序产品可以为一个软件安装包,在需要使用前述方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
本申请第二至第十方面所提供的技术方案,其有益效果可以参考第一方面的技术方案的有益效果,此处不再赘述。
附图说明
下面将对实施例描述中所需要使用的附图作简单的介绍。
图1是本申请实施例提供的一种应用部署系统的架构示意图;
图2A是本申请实施例提供的一种云边协同场景下的系统示意图;
图2B是本申请实施例提供的一种云边端协同场景下的系统示意图;
图3是本申请实施例提供的又一种应用部署系统的架构示意图;
图4是本申请实施例提供的一种应用部署方法的流程示意图;
图5是本申请实施例提供的一种应用的元数据的格式示意图;
图6是本申请实施例提供的又一种应用部署方法的流程示意图;
图7是本申请实施例提供的一种应用部署装置的结构示意图;
图8是本申请实施例提供的一种计算设备80的结构示意图。
具体实施方式
下面将结合附图对本申请实施例作进一步地详细描述。
为了便于理解,以下示例地给出了部分与本申请实施例相关概念的说明以供参考。如下所述:
元数据(Metadata):一种用于描述数据属性的信息,又称中介数据、中继数据。本申请实施例中,元数据用于描述所述应用的业务流程(或处理逻辑)。例如,元数据可以用来描述组件之间的调用关系、和/或传递关系等。再如,元数据可以用来描述应用所依赖的组件的执行顺序。
组件(node):用于实现某个或者若干个功能的代码片段或者已编译的二进制文件,通常被预先定义或者被预先封装。可选的,组件可以是函数、算法、框架、软件模块、封装的工具等。例如,基于node.js(一个JavaScript的运行环境)的应用,依赖一些nonde.js组件来运行,示例性的,例如依赖Express框架(一种快速搭建网站的框架)、Path模块(提供转换文件路径的工具)等组件。
应用的业务流程:为了完成业务功能,而由不同的功能模块共同完成的一系列活动。这里的功能模块包含了组件,进一步还可以包含未封装为组件的代码、二进制文件等。应用的业务流程描述了组件的调用关系、传递关系、数据流向关系、或需要执行组件的哪一个代码片段等中的一项或者多项。
容器(container):计算机操作系统中的一种虚拟化技术。该技术使得进程运行于相对独立和隔离的环境(包含独立的文件系统、命名空间、资源视图等)。容器技术广泛应用于云计算领域的服务化场景。
消息队列遥测传输(message queuing telemetry transport,MQTT)协议:是一种基于传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol,TCP/IP)协议来传输的轻量级通信协议。MQTT通信过程中通过MQTT代理器(Broker,或称服务器)和客户端,MQTT Broker负责接收来自客户端的网络连接,并处理客户端的订阅/取消订阅、消息发布(Publish)请求。在一些多服务端的场景中,MQTT Broker会将客户端发布的消息转发给其他订阅者。
受限应用协议(constrained application protocol,COAP):是一种轻量通信协议,其通常使用在资源受限的设备上,其对通信的消息格式进行了简化,具有轻量化、低功耗的优点。
运行引擎(runtime engine):应用(application,APP)运行所需的软件环境。运行引擎提供独立于具体硬件、协议的基础运行能力,能够使后续引擎中的APP正常执行。本申请实施例中,运行引擎可以根据APP对应的元数据和APP依赖的组件来运行APP。
可选的,运行引擎所提供的运行环境为基于Node.js的环境。或者,运行引擎所提供的环境还可以是基于java、python、go语言等开发语言的环境。其所基于的平台可以是Linux平台,也可以是Windows或者其他平台。本申请实施例对于各种平台、各种开发环境、开发语言均适用。
直接数字控制器(Direct Digital Control,DDC):一种基于处理器和控制器来实现控制逻辑的设备,能够接收传感器、触点或其他仪器输出的信号,并处理这些信号,输出控制信号到外部设备。输出的控制信号可以用于启动/关闭机器、打开/关闭阀门、打开/关闭阀门、或者按照程序指令执行复杂的动作等。
本申请实施例提供了一种应用部署方法及相关装置。在目标设备中部署应用时,无需下载应用的整包安装包,而是由云端通过信息指示应用信赖的组件和应用的业务流程来部署应用。在运行应用时,对于缺少依赖组件的情况,则向云端请求缺少的组件,在存在应用依赖的组件的情况下,基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。如此,可以减少不必要的网络开销,有效提升了应用的部署效率即运行效率,甚至实现应用的秒级部署。
下面对本申请实施例应用的系统架构进行介绍。需要说明的是,本申请描述的系统架构及业务场景是为了更加清楚的说明本申请的技术方案,并不构成对于本申请提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请提供的技术方案对于类似的技术问题,同样适用。
请参见图1,图1是本申请实施例提供的一种应用部署系统10的架构示意图。该应用部署系统包含云端101和设备。其中,设备的数量可以是1个,也可以是多个。图1是为了方便描述,故以设备102和设备103为例,本申请对于包含其他数量的设备的应用部署系统也同样适用。另外,本申请下文中的目标设备,包含一个或者多个设备,例如,目标设备可以为设备102、或为设备103,或者为设备102和设备103。可选的,目标设备还可以为系统中满足某一条件的设备,例如,某一个租户所管理的设备、或者用户所选择的设备、或者位于某一位置的设备。
云端101,也称为服务端、云平台,是具有计算能力和通信能力的设备。其通常集中了较多的计算资源,这些计算资源可以包含实体设备,也可以包含虚拟设备。例如,云端101可以部署于一个或者多个服务器(例如刀片式服务器、机架式服务器等)中。再如,云端101可以包含一个或者多个虚拟机、容器等。云端101可以为目标设备提供多种服务,如APP安装服务、APP升级服务、组件下载服务等。
设备具有计算能力和通信能力。本申请实施例中,设备可以通过APP来完成业务功能,因此其上通常部署有一个或者多个APP,如图1所示的设备102中已部署有APP1。
作为一种可能的方案,设备可以包含网络中的边缘设备(edge device)。边缘设备是提供网络入口点的设备。例如:设备可以包含路由器、路由交换机、集成接入设备(integrated access device,IAD)、多路复用器、城域网(metropolitan area network,MAN)接入设备或广域网(wide area network,WAN)接入设备等中的一项或者多项。
作为又一种可能的方案,设备可以包含网络中的终端。终端可以看作是网络的端点,通常作为输入和/或输出设备。本申请实施例中的设备可以应用于多种应用场景中,例如以下应用场景:智能楼宇、移动互联网、车联网、工业控制、无人驾驶、运输安全、物联网(internet of things,IoT)、智慧城市、或智慧家庭等。例如,设备包含但不限于计算机、手持设备(例如平板、或手机等)、可穿戴设备(智能眼睛、或智能手表等)、传感器(例如相机、激光雷达、或毫米波雷达等)、家居设备(智能电视、智能冰箱、或智能安防设备等)、娱乐设备(点歌设备、虚拟现实设备、或游戏机等)、移动工具(车辆、飞机、船舶、或无人机等)等。
应理解,在某些应用场景、或某些网络类型中,具备相类似功能的设备,其名称也可能不称为设备,本申请实施例提供的方案对于这些可部署APP的设备均适用。
本申请实施例中,APP基于业务流程和组件来运行,其中,组件用于实现预定义的某些功能。在设备102中部署应用时,先通过云端101接收部署消息,部署消息指示了目标应用的业务流程和目标应用依赖的组件。若设备中不存在某个或者若干个组件(为了便于描述,以下将缺少的组件为目标组件),则向云端请求目标组件,在设备获取目标组件后,则运行所述应用。
示例性地,在云端向设备102部署APP2时,设备102从云端101接收针对APP2的部署消息。部署消息指示了APP2依赖的组件,如图1所示,APP2依赖组件b、组件c和组件d来运行。而设备102中存在组件为组件a、组件b和组件c,即:设备102缺少APP2所依赖的组件d。在这种情况下,设备102可以从云端101下载组件d。在APP2的组件都存在且获取了APP2的业务流程时,APP2即部署完成。后续设备102可以运行APP2,以实现其对应的业务功能。
在应用依赖的多个组件已经存在的情况下,获取APP的业务流程即完成了APP的部署。示例性地,在云端101向设备103部署APP3时,设备103从云端101接收针对APP3的部署消息。部署消息指示了APP2依赖的组件,如图1所示,APP3依赖组件d、组件e、组件f和组件g来运行,这些组件在设备103都已存在,故APP3部署完成。后续设备103可以运行APP3,以实现其对应的业务功能。
在本申请实施例中,由云端通过信息指示应用信赖的组件和应用的业务流程来部署应用。在运行应用时,对于缺少依赖组件的情况,则向云端请求缺少的组件,在存在应用依赖的组件的情况下,基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。这样大大减小了应用安装所需要获取的数据的大小,提升应用的下载效率,降低网络资源消耗,有效提升了应用的部署效率即运行效率,甚至实现应用的秒级部署。
图2A展示了本申请实施例在一种云边协同场景下的系统示意图。网络中的路由器即为前述的设备。当大量路由器需要部署应用时时,应用部署速度的快慢、所占用的网络资源多少,将直接影响网络的服务质量。而通过本申请实施例提供的方案,云端可以快速为一个或者多个网域中的路由器部署应用。例如,网域1到网域n中的n个网域的路由器都可以快速部署应用,同时,部署应用所消耗的网络资源也大大减小,保障了网络的服务质量。
图2B展示了本申请实施例在一种云边端协同场景下的系统示意图。网络中的边缘设备和终端即为前述的设备。楼栋中包含多个终端,这多个终端在多个空间中完成其业务功能。由于边缘设备和终端所具有的计算资源和存储资源通常有限,而通过本申请实施例,云端可以大大降低应用部署过程中对网络资源和设备存储资源的消耗,便捷地更新边缘设备和终端的控制逻辑。例如,以终端为DDC为例,通过本申请实施例,在无需更换DDC硬件固件的情况下在DDC中部署应用,便捷地更新DDC内的控制逻辑程序,提升了用户体验。
以下以图1所示的实施例为基础,对一些可能的设计进行说明。
在一种可能的设计中,针对应用的部署消息中包含应用的元数据。元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。可选的,元数据可以有多种格式,例如JavaScript对象简谱(JavaScript object notation,JSON)格式、可扩展标记语言(extensible markuplanguage,XML)、或键-值(key-value,KV)形式等。
在一种可能的设计中,设备中包含运行引擎实例。运行引擎实例能够通过业务的业务流程和应用所依赖的组件来运行应用。这样就通过运行引擎实例实现了组件在不同的应用之间的复用,对于依赖相同组件的应用,设备无需获取多个相同的组件,从而进一步提高应用运行效率,提升设备的服务质量。
在一种可能的设计中,运行引擎实例可以注册到云端中。而云端中可以包含引擎管理模块,用于接收运行引擎实例的注册,对引擎进行管理。此处的管理可以包含以下一项或者多项内容:管理运行引擎实例的注册信息、记录运行引擎实例的在线状态、记录运行引擎实例的通信地址、或检查运行引擎实例的故障状态等。
下面对运行引擎实例的结构进行介绍。运行引擎实例可以包含基础指令流程模块、上行指令模块、下行指令模块和引擎核心模块。通过将引擎提供的服务分为不同的模块,可以让每个模块各司其职地完成控制、通信流程,实现目标设备与云端的交互,提升用户体验,提高业务实现效率和系统稳定性。
其中,基础指令流程模块,用于控制上行指令流和下行指令流的安装。
上行指令模块,用于发送上行指令。下行指令模块,用于接收下行指令、调用通信接口执行指令,所述通信接口由所述引擎核心模块提供。
引擎核心模块包含引擎基础管理模块、执行器、通用服务模块和文件系统等中的一项或者多项。其中,所述引擎基础管理模块用于管理所述运行引擎的对外接口、管理所述引擎核心模块中的资源和配置引擎参数,所述执行器用于执行与应用运行相关的操作,所述通用服务模块用于管理日志和消息,所述文件系统负责数据持久化存储和数据读取。
作为一种可能的方案,运行引擎实例部署在所述设备的容器中。如图3所示是本申请实施例提供的又一种可能的应用部署系统的架构示意图。设备中配置有一个或者多个容器,如虚拟化容器1、虚拟化容器2。虚拟化化容器中具有与其他环境隔离的计算资源和存储资源,如虚拟化容器1中具有独立的中央处理器(centralprocessingunit,CPU,一种计算资源)、内存(一种存储资源)和存储(又一种存储资源)。可以看出,通过虚拟化容器,可以使得在设备中配置应用时,不受到其他环境的影响。例如,虚拟化容器2中应用4的部署、卸载难以影响到虚拟化容器1,从而增强运行引擎实例及其中的应用的可移植性和安全性,并提高系统资源利用率。
在一种可能的设计中,所述设备中包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。例如,管理应用可以分析应用所依赖的组件、下载或者升级运行引擎实例中的组件等。管理应用也基于业务流程和组件来完成运行,但管理应用的组件预先配置在运行设备中,使得管理应用可以完成管理功能。
在一种可能的设计中,管理APP也包含于容器中。如图3所示,虚拟化容器1中包含运行引擎实例、管理APP和业务APP,其中,管理APP和业务APP由运行引擎实例实现运行。
可选的,设备中还可以包含一个或者多个管理进程,例如,图3示例性的展示了设备所包含的区域网(field area network,FAN)网络管理、广域网(wide area network,WAN)网络管理、固件管理、容器管理。
在一种可能的设计中,云端可以包含APP部署模块,APP部署模块能够根据需求向设备下发APP的元数据、或者升级设备中的APP。
在一种可能的设计中,云端可以包含APP管理模块。APP管理模块用于管理云端中的APP资源,可选提供针对APP的增、删、查、或改等操作。可选的,APP的元数据以文本的方式保存到数据库(database,DB)中,云端通过DB实现对APP的元数据增、删、查、或改等操作。可选的,DB还用于保存APP的标识(identification,ID)、版本、或大小等信息。
在一种可能的设计中,云端可以包含组件管理模块。组件管理模块用于管理云端中的组件资源,可选提供针对组件的增、删、查、或改等操作。在接收到设备(或设备中的运行引擎实例)的组件请求时,组件管理模块可以根据组件ID(可选包含版本信息)查找组件,并通过引擎管理模块发送给所述设备(或设备中的运行引擎实例)。其中,组件具有对应的组件ID信息,组件可以通过指定路径存储在云端或指定位置(例如文件服务器中)。可选的,云端可以通过DB来存储组件的ID信息、名称、版本、存储路径等信息,通过DB实现对组件的增、删、查、或改等操作。
下面结合附图对本申请实施例的方法流程进行详细说明。
【方法实施例1】
请参见图4,图4是本申请实施例提供的一种可能的应用部署方法的流程示意图。可选的,该应用部署方法可以应用于图1所示的应用部署系统。
上述应用部署方法包含步骤S401至步骤S404中的一个或者多个步骤。应理解,本申请为了方便描述,故通过S401至S404这一顺序进行描述,并不旨在限定一定通过上述顺序进行执行。本申请实施例对于上述一个或多个步骤的执行的先后顺序、执行的时间、执行的次数等不做限定。S401至步骤S404具体如下:
步骤S401:云端向设备发送针对应用的部署消息。相应的,设备接收来自云端的针对应用的部署消息。
所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程。例如,部署消息中包含组件指示信息和流程信息,组件指示信息用于指示所述多个组件的信息,流程信息用于指示所述目标应用的业务流程。
在一种可能的设计中,部署消息中包含应用的元数据。应用的元数据用于描述应用的业务流程。例如,应用依赖组件来运行,应用的元数据可以包含组件之间的调用逻辑。再如,应用依赖组件来运行,应用的元数据说明了组件的组合顺序等。可选的,元数据可以有多种格式,例如JavaScript对象简谱(JavaScript object notation,JSON)格式、可扩展标记语言(extensible markup language,XML)、或键-值(key-value,KV)形式等。
作为一种可能的方案,元数据可以包含组件的标识(例如ID、名称、或编号等)。进一步的,元数据还可以包含组件的版本信息。
图5所示为本申请实施例提供的一种可能的应用的元数据的格式示意图,该元数据采用JSON格式来存储、传输。区域501中的数据用于指示应用的版本(version)和应用的ID,可以看出,应用的版本示例性的可以为“1.0.0”,应用的ID示例性的可以为“b0f629b2.a14ea8”。其中,区域502用于表示应用所依赖的组件(node)的信息。图5所示应用的元数据中,应用所依赖的组件有两个,具体如下:第一个组件的ID为“354d1ebb.a294f4”,组件的类型(type)是注册(register)类型的组件,其附加信息(info)说明了对该组件的描述,该组件的版本为“1.0.0”;第一个组件的ID为“98f67943.f4d2e”,组件的type是应用型(app)组件,其附加信息(info)为空。应理解,图5仅是为了方便描述元数据格式而提供的一种示例性的元数据,不作为对元数据内容和字段数量的限定,具体实施过程中元数据可以包含更多的字段或者更少的字段,其所包含的数据内容也可以有其他设计。
以下对组件进行介绍。组件(node)是用于实现某个或者若干个功能的代码片段或者已编译的二进制文件,通常被预先定义或者被预先封装。例如,应用使用时通常需要进行用户注册,由于用户注册的功能在大多数应用中是类似的,因此可以将注册过程的代码封装为一个注册(register)组件。这样,多个应用即可通过相同的注册组件来完成注册功能,而无需在每个应用中都包装一个注册组件。
作为一种可能的方案,组件可以包含数学函数组件、统计组件、定时器组件、比例-积分-微分(proportion integral differential,PID)控制器组件、热力学组件、光学组件或空气质量检测组件等中的一项或者多项。由于设备可能涉及多种对传感器、逻辑门、电气组件的控制,应用开发过程中的安全性和专业性要求高,本申请实施例将目标设备涉及的功能代码块封装得到控制组件,使得用户能够灵活地基于可视化的控制组件来安全且合理地生成应用。
应用依赖组件来运行。示例性的,如图1所示的APP1依赖组件a、组件b和组件c来运行。
对于组件的相关描述还可以参考术语解释部分以及图5相关内容。
为了便于理解APP部署的场景,以下示例性地列举几种适用于本申请实施例的场景:
场景1:云端根据需求在设备中部署应用。例如,系统现需要实现一种新的信息收集功能,该信息收集功能通过APP4来实现。云端根据需求在设备中部署APP4。
场景2:某一APP或者某几个APP发布了新的版本,云端将设备中的APP进行升级。例如,当前版本的APP4存在技术漏洞,开发人员修改了技术漏洞并得到了新版本的APP4。云端可以向设备发送部署消息,部署消息中包含新版本的APP4的元数据,以将设备中的APP4升级到新版本。
场景3:设备向云端发送应用部署请求或者应用升级请求。云端响应请求并向设备发送部署消息。作为一种可能的方案,设备向云端发送消息,消息中包含应用的标识(例如应用名称、或应用ID等),相应的,云端在设备中部署对应的应用。例如,云端向设备通知APP4存在新版本,设备确认对APP4进行升级,那么云端向设备发送新版本的APP4的元数据。
步骤S402:在缺少多个组件中的目标组件时,从云端下载目标组件。
其中,目标组件即缺少的一个或者若干个组件。例如,如图1所示的设备中存在组件a、组件b和组件c,而APP2依赖组件b、组件c和组件d来运行。设备向云端请求该组件d。
作为一种可能的方案,设备通过比对组件的标识(可选包含版本信息),可以检查设备是否存在应用所依赖的多个组件。例如,APP所依赖的多个组件的ID分别为“a1”、“b1”、“c1”,设备中存在的组件的ID分别为“a1”、“b1”、“c1”、“d1”,通过对比组件的ID,可以确定设备中存在应用所依赖的多个组件。
为了便于理解,以下列举几种判断是否为相同组件的实现方式:
实现方式一:在两个组件的标识一致时,则说明该两个组件为相同的组件。请参见表1,表1是一种可能的组件信息的示意表,若应用依赖的多个组件对应的ID为“A01”、“A02”、“A03”,而设备中也存在ID为“A01”、“A02”、“A03”的组件,则设备中存在应用所依赖的多个组件。
表1组件信息的示意表
组件ID | 组件名称 |
A01 | 同步器 |
A02 | 随机数生成器 |
A03 | 信息采集器 |
…… | …… |
实现方式二,两个组件的标识一致,则说明两个应用相同,此处的相同包含了版本也相同。例如,请参见表2,表2是又一种可能的组件信息的示意表。如表2所示,对于同一个名称的组件,在不同的版本时具有不同的ID。若应用依赖的组件对应的ID为“B02”、“B05”,而设备中也存在ID为“B02”、“B05”的组件,则设备中存在应用所依赖的多个组件。
表2组件信息的示意表
实现方式三,两个组件的标识一致且版本一致,则说明两个应用相同。例如,请参见表3,表3是又一种可能的组件信息的示意表。可以看出,通过组件的ID和版本来共同判断组件是否相同。若应用依赖的组件对应的ID为“C01”,版本为“1.1.2”,而设备中存在ID为“C01”的组件,但版本为“1.1.0”,则设备中缺少应用所依赖的组件“C01”。相反的,若设备中存在ID为“C01”、版本为“1.1.2”的组件,则该组件与应用所依赖的组件一致。
表3组件信息的示意表
组件ID | 组件名称 | 组件版本 |
同步器 | 1.1.0 | |
C01 | 同步器 | 1.1.1 |
C01 | 同步器 | 1.1.2 |
C02 | 随机数生成器 | 1.0 |
C02 | 随机数生成器 | 1.1 |
…… | …… | …… |
在一种可能的设计中,设备可以基于应用ID来确定应用依赖的多个组件。例如,设备中存储了应用的ID与依赖的多个组件的对应关系。一种示例性的应用ID与依赖的组件的对应关系表如表4所示,设备通过APP2的ID,可以确定APP2依赖的多个组件为“组件b、组件c、组件c”。
表4应用对应的组件表
应用ID | 应用依赖的组件 |
APP1 | 组件a、组件b、组件c |
APP2 | 组件b、组件c、组件c |
APP3 | 组件d、组件e、组件f、组件g |
…… | …… |
可选的,对应关系还可以存储与第三方设备上,设备可以通过与该第三方设备通信从而获取应用依赖的组件的信息。进一步可选的,应用的元数据中包含指示应用所依赖的组件的信息。示例性地,如图5所示,设备可以解析应用的元数据得到应用所依赖的组件的ID(可选还包括版本),比对解析得到的ID(可选还包括版本)和当前存在的组件ID(可选还包括版本),这样就实现了检查是否存在应用所依赖的组件。
在一种可能的设计中,设备中包含管理APP。管理APP可以确定应用所依赖的组件、以及检查是否存在应用所依赖的组件。例如,设备中部署有容器,容器中安装有一个或者多个组件,管理APP可以管理容器中的组件资源。在部署应用时,管理APP可以根据应用依赖的组件的ID,检查容器中是否存在应用依赖的组件。
作为一种可能的方案,云端可以向设备提供目标组件,设备接收云端提供的目标组件。目标组件可以存储于设备的容器中。
作为又一种可能的方案,云端可以向设备发送目标组件的地址,设备基于该地址下载目标组件。
步骤S403:设备基于目标应用的业务流程和所述多个组件,运行目标应用。
在一种可能的设计中,设备中配置有运行引擎实例。运行引擎实例能够通过业务的业务流程和应用所依赖的组件来运行应用。
在一种可能的设计中,在运行目标应用时,目标应用的元数据和依赖的组件被加载到运行引擎实例的执行器上,通过执行器调用多个组件,从而根据元数据中的业务流程来实现业务功能。
可选的,图4所述的方法还包含步骤S404,具体如下:
步骤S404:在存在多个组件时,设备基于目标应用的业务流程和多个组件,运行目标应用。
具体地,若应用所依赖的多个组件存在,则部署应用完成。进一步的,设备可以运行应用,使得相应的业务功能可以完成。
在图4所示的实施例中,设备在部署应用时,无需下载应用的整包安装包,而是获取应用对应的元数据,大大减小应用安装所需要获取的数据的大小,提升应用的下载效率,降低网络资源消耗。在运行应用之前,设备检查应用所依赖的组件,对于应用依赖的组件不存在的情况,则向云端请求缺少的组件。如此,可以减少不必要的网络开销,有效提升了应用的部署效率即运行效率,甚至实现应用的秒级部署。
【方法实施例2】
图4所示的实施例中包含了多种可能的方案,下面对其中的一些可选方案进行进一步说明。应理解,以下方案中未解释到的相关概念、操作或者逻辑关系可以参照图4所示实施例中的相应描述。
请参见图6,图6是本申请实施例提供的又一种应用部署方法的流程示意图。可选的,该应用部署方法可以应用于图1所示的应用部署系统。
上述应用部署方法包含步骤S601至步骤S610中的一个或者多个步骤。应理解,本申请为了方便描述,故通过S601至S610这一顺序进行描述,并不旨在限定一定通过上述顺序进行执行。本申请实施例对于上述一个或多个步骤的执行的先后顺序、执行的时间、执行的次数等不做限定。S601至步骤S610具体如下:
步骤S601:设备启动运行引擎实例。
可选的,运行引擎实例可以部署于设备中的容器内。
可选的,云端可以通过下发指令启动设备内的运行引擎实例。
步骤S602:设备运行管理APP,向云端发送运行引擎实例的注册信息。相应的,云端接收来自设备的注册信息。
其中,管理APP是设备中用来实现管理功能的APP,其可以实现如下管理功能:将运行引擎实例注册到云端、维持运行引擎实例的在线状态(或称为心跳保持)、管理设备中的组件资源、管理设备中的APP、或解析应用元数据等。管理APP通常预先配置在设备中。作为一种可能的方案,管理APP和运行引擎实例都配置在设备的容器中。
注册信息可以包含以下内容中的一项或者多项:运行引擎实例的版本、运行引擎实例中的计算资源的大小、运行引擎实例的存储资源的大小、运行引擎实例的通信地址、或设备的设备标识等。
可选的,设备可以通过一种或者多种通信协议向边云端发送消息。例如,设备可以通过MQTT协议、或COAP协议向云端发送注册信息。
步骤S603:云端处理注册信息。
可选的,云端保存运行引擎实例的注册信息。可选的,云端可以向运行引擎实例分配ID,从而便于区分系统中的多个运行引擎实例。
可选的,云端中包含数据库,该数据库用于存储运行引擎实例相关的数据。云端可以将引擎的注册信息保存到数据库中。
在图6所示的实施例中,运行引擎实例可以被注册到云端,云端对多个设备中的运行引擎实例进行纳管。通过对运行引擎实例统一管理,提高系统的稳定性。另一方面,云端可以及时发现运行引擎实例中需要升级、部署的应用,而且与运行引擎实例传输数据的过程也更加便捷,提高了应用部署的效率。
在一种可能的设计中,云端可以用于实现以下一项或者多项功能:管理运行引擎实例的注册信息、记录运行引擎实例的在线状态、记录运行引擎实例的通信地址、或检查运行引擎实例的故障状态等。
可选的,运行引擎实例通过心跳协议在云端保持通信长连接。
在部署应用时,具体可以通过如下步骤S604-步骤S610中的部分或者全部步骤来实现。具体如下:
步骤S604:云端的部署模块读取应用的元数据。
可选的,应用的元数据可以存储在数据库中,部署模块可以从数据库中读取应用的元数据。关于元数据的详细描述可以参考前述401。
步骤S605:云端向设备发送应用的元数据。相应的,设备接收来自云端的应用的元数据。详细描述可以参考前述401。
步骤S606:设备中的管理APP解析应用的元数据。
管理APP解析元数据中的数据,可以了解应用的ID、版本、用户(user)、大小等信息。通过解析元数据,获取应用的相关信息,便于管理APP对将要部署的应用进行管理。例如,通过应用的大小,管理APP可以为应用分配对应的存储位置。
作为一种可能的方案,管理APP通过应用的ID(可选包含版本),可以查找已安装的APP,避免对应用的重复部署。进一步的,若存在ID相同但是版本不同的应用,管理APP可以先卸载之前部署的应用,从而安装新的应用。或者可选的,若存在ID相同且版本相同的应用,管理APP可以卸载原本的应用重新安装,或者,管理APP丢弃该应用的元数据,或者,管理APP可以向云端反馈这一状态供云端决策。
步骤S607:设备中的管理APP确定应用依赖的多个组件。
可选的,应用的元数据中包含了指示应用依赖的组件的信息。管理APP通过解析元数据,得到应用依赖的多个组件。
作为一种可能的方案,在两个组件的标识一致时,则说明该两个组件为相同的组件。
作为又一种可能的方案,两个组件的标识一致,则说明两个应用相同,此处的相同包含了版本也相同。
作为又一种可能的方案,两个组件的标识一致且版本一致,则说明两个应用相同。
或者可选的,管理APP可以基于应用ID来确定应用依赖的多个组件。
步骤S608:在缺少多个组件中的目标组件时,设备从云端下载目标组件。相关描述请参见步骤S402。
步骤S609:设备基于目标应用的业务流程和所述多个组件,运行目标应用。相关描述请参见步骤S403。
可选的,图6所示的实施例还包括步骤S610。
步骤S610:设备在存在多个组件时,基于目标应用的业务流程和多个组件,运行目标应用。
在图6所示的实施例中,运行引擎实例可以注册到云端,设备基于运行引擎实例,根据应用对应的元数据和应用依赖的组件来运行应用,从而无需下载每个应用的完整安装包,大大提高了应用的部署效率,提升用户体验。另一方面,引擎的注册流程、设备中的组件的管理都通过管理APP来实现,提升了系统的稳定性和安全性。
上述详细阐述了本申请实施例的方法,下面提供本申请实施例的装置。
可以理解的是,本申请实施例提供的多个装置,例如应用部署装置,为了实现上述方法实施例中的功能,其包含了执行各个功能相应的硬件结构、软件单元、或硬件结构和软件结构的组合等。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以在不同的使用场景中,使用不同的装置实现方式来实现前述的方法实施例,对于装置的不同实现方式不应认为超出本申请实施例的范围。
本申请实施例可以对装置进行功能单元的划分。例如,可对应各个功能划分各个功能单元,也可将两个或两个以上的功能集成在一个功能单元中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
以下列举几种可能的装置。请参见图7,图7是本申请实施例提供的一种应用部署装置70的结构示意图。可选的,该应用部署装置70可以为独立设备,也可以为包含于独立设备中的器件,例如芯片、软件模块、或集成电路等。该应用部署装置70用于实现前述的应用部署方法。例如,应用部署装置70用于实现图4、或图6所述实施例中设备一侧的方法。再如,应用部署装置70用于实现图4、或图6所述实施例中云端一侧的方法。
一种可能的实施方式中,该应用部署装置70可以包括通信单元701和处理单元702。其中,通信单元701可以用于实现前述的接收、发送、请求或响应等功能,和/或用于支持前述实施例的其它过程。一些可能实施场景中,通信单元701还可以由通信接口模块和/或收发模块代替,并且该接口模块和/或收发模块可以用于支持前述方法实施例。
处理单元702可以用于执行实现前述的实施例中的确定、计算、生成、运行等操作,和/或用于支持前述实施例的其它过程,例如输出报文等过程。
在一种可能的设计中,应用部署装置70为图4或图6所示实施例中的设备。
在一种可能的实施方式中,所述通信单元701,用于接收来自云端的针对目标应用的部署消息,所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程;
所述通信单元701,还用于在缺少所述多个组件中的目标组件时,从云端下载所述目标组件;
所述处理单元702,用于基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。
在一种可能的实施方式中,所述处理单元,还用于在存在所述多个组件时,基于所述目标应用的业务流程和所述多个组件运行应用。
在又一种可能的实施方式中,所述应用部署消息包含所述目标应用的元数据;所述目标应用的元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。
可选的,元数据可以有多种格式,例如JavaScript对象简谱(JavaScript objectnotation,JSON)格式、可扩展标记语言(extensible markup language,XML)、或键-值(key-value,KV)形式等。
在又一种可能的实施方式中,元数据为JSON格式。
在又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识,在两个组件的标识一致时为相同组件。
上述说明了一些可能的情况。作为一种可能的方案,在两个组件的标识一致时,则说明该两个组件为相同的组件,例如两个组件的ID都为“A01”,则标识组件相同。
作为又一种可能的方案,两个组件的标识一致,则说明两个应用相同,此处的相同包含了版本也相同。
在又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识和所述多个组件的版本;
在两个组件的标识一致且版本一致时为相同组件。
若应用依赖的组件对应的ID为“C01”,版本为“1.1.2”,而目标设备中存在ID为“C01”的组件,但版本为“1.1.0”,则目标设备中缺少应用所依赖的组件“C01”。
在又一种可能的实施方式中,所述处理单元702,还用于:
基于所述目标应用的业务流程和所述多个组件,在运行引擎实例上运行所述应用。
在又一种可能的实施方式中,所述装置70中包含容器。所述运行引擎实例包含于容器中,所述容器用于提供应用部署所需的隔离坏境。
在又一种可能的实施方式中,下载的所述目标组件保存在所述容器的组件库,所述组件库的组件在多个应用之间复用。
在又一种可能的实施方式中,所述容器包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。例如,管理应用可以分析应用所依赖的组件、下载或者升级运行引擎实例中的组件等。
作为一种可能的方案,管理应用APP也基于应用的业务流程和组件来完成相应的功能,但管理应用的组件预先配置在容器中,使得管理应用可以完成管理功能。
在一种可能的实施方式中,所述通信单元701和处理单元702,还用于将所述运行引擎实例注册到所述云端。
相应的,云端可以接收运行引擎实例的注册。
进一步的,运行引擎实例保持与所述运行引擎实例的通信长连接,例如,通过心跳机制保持连接。
在一种可能的实施方式中,所述目标设备和所述云端通过无线通信技术通信。
在一种可能的实施方式中,所述通信单元701,还用于所述运行引擎实例通过MQTT协议与所述云端通信。
在一种可能的实施方式中,所述通信单元701,还用于所述运行引擎实例通过COAP与所述云端通信。
在一种可能的实施方式中,所述通信单元701,还用于向所述云端发送针对所述应用的部署请求或升级请求。
在一种可能的设计中,应用部署装置70为图4或图6所示实施例中的云端。
在一种可能的实施方式中,所述通信单元701,用于向目标设备发送针对目标应用的部署消息,所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程,所述目标设备为边缘设备和/或终端;
所述通信单元701和处理单元702,还用于在缺少所述多个组件中的目标组件时,向所述目标设备提供目标组件,所述目标组件用于所述目标设备运行所述目标应用。
在一种可能的实施方式中,所述应用部署消息包含所述目标应用的元数据;所述目标应用的元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。
可选的,元数据可以有多种格式,例如JavaScript对象简谱(JavaScript objectnotation,JSON)格式、可扩展标记语言(extensible markup language,XML)、或键-值(key-value,KV)形式等。
在又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识,在两个组件的标识一致时为相同组件。
在又一种可能的实施方式中,所述组件指示信息包含所述多个组件的标识和所述多个组件的版本;
在两个组件的标识一致且版本一致时为相同组件。
在又一种可能的实施方式中,所述通信单元701和处理单元702,还用于:
向所述目标设备提供运行引擎实例,所述运行引擎实例用于通过所述目标应用的业务流程和所述多个组件运行所述应用。
在又一种可能的实施方式中,所述运行引擎实例包含于容器中,所述容器用于提供应用部署所需的隔离坏境。
在又一种可能的实施方式中,所述目标设备的容器中包含组件库,所述组件库的组件在多个应用之间复用。
在又一种可能的实施方式中,所述容器包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。例如,管理应用可以分析应用所依赖的组件、下载或者升级运行引擎实例中的组件等。
在又一种可能的实施方式中,所述通信单元701,还用于:
接收所述目标设备发送的关于所述运行引擎实例的注册信息;
与所述运行引擎实例保持长连接。
在一种可能的实施方式中,所述目标设备和所述云端通过无线通信技术通信。
在一种可能的实施方式中,所述通信单元701,还用于:
通过MQTT协议与所述运行引擎实例通信。
在一种可能的实施方式中,所述通信单元701,还用于:
通过COAP协议与所述运行引擎实例通信。
在一种可能的实施方式中,所述通信单元701,还用于:
接收来自目标设备的针对所述应用的部署请求或升级请求。
请参见图8,图8是本申请实施例提供的一种计算设备80的结构示意图。
该计算设备80可以为服务器、主机、边端设备等独立设备,也可以为包含于独立设备中的器件,例如芯片、软件模块、或集成电路等。该计算设备80可以包括至少一个处理器801和至少一个存储器802。可选的,还可以包括通信接口803。进一步可选的,还可以包含连接线路804,其中,处理器801、存储器802通过连接线路804相连,通过连接线路804互相通信、传递控制和/或数据信号。
其中:
(1)处理器801是进行算术运算和/或逻辑运算的模块,具体可以包含以下装置中的一项或者多项:中央处理器(central processing unit,CPU)、图片处理器(graphicsprocessing unit,GPU)、微处理器(microprocessor unit,MPU)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程逻辑门阵列(FieldProgrammable Gate Array,FPGA)、复杂可编程逻辑器件(Complex programmable logicdevice,CPLD)、协处理器(协助中央处理器完成相应处理和应用)、或微控制单元(Microcontroller Unit,MCU)等。
(2)存储器802用于提供存储空间,存储空间中可以存储操作系统和计算机程序等数据。存储器802可以是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable read onlymemory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM)等等中的一种或者多种的组合。
(3)通信接口803可以用于为所述至少一个处理器提供信息输入或者输出。在一些可能的场景中,通信接口803可以包含接口电路。和/或,所述通信接口803可以用于接收外部发送的数据和/或向外部发送数据。例如,通信接口803可以包括诸如以太网电缆等的有线链路接口,也可以是无线链路(Wi-Fi、蓝牙、通用无线传输以及其他短距无线通信技术等)接口。可选的,通信接口803还可以包括与接口耦合的发射器(如射频发射器、天线等),或者接收器等。
可选地,若计算设备80为独立设备时,通信接口803可以包括接收器和发送器。其中,接收器和发送器可以为相同的部件,或者为不同的部件。接收器和发送器为相同的部件时,可以将该部件称为收发器。
可选地,若计算设备80为芯片或电路时,通信接口803可以包括输入接口和输出接口,输入接口和输出接口可以是相同的接口,或者可以分别是不同的接口。
可选地,通信接口803的功能可以通过收发电路或收发的专用芯片实现。处理器801可以通过专用处理芯片、处理电路、处理器或通用芯片实现。
其中,以上列举的计算设备80中各模块或单元的功能和动作仅为示例性说明。
计算设备80中各功能单元可用于实现前述的应用部署方法,例如,通信装置可以为图4、或图6所示实施例中的设备和/或云端。具体可以参考前述。这里为了避免赘述,省略其详细说明。
可选的,处理器801,可以是专门用于执行前述方法的处理器(便于区别称为专用处理器),也可以是通过调用计算机程序来执行前述方法的处理器(便于区别称为专用处理器)。可选的,至少一个处理器还可以既包括专用处理器也包括通用处理器。
可选的,在计算设备包括至少一个存储器802的情况下,若处理器801通过调用计算机程序来实现前述应用部署方法,该计算机程序可以存储在存储器802中。
本申请实施例还提供了一种芯片系统,该芯片系统包括处理器和通信接口,所述通信接口用于接收和/或发送数据,和/或,所述通信接口用于为所述处理器提供输入和/或输出。所述芯片系统用于实现前述的应用部署方法,例如图4或图6所述的方法。
本申请实施例还提供了一种算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令用于实现前述的应用部署方法,例如图4或图6所述的方法。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,所述计算机指令用于实现前述的应用部署方法,例如图4或图6所述的方法。
本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请中实施例提到的“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b、或c中的至少一项(个),可以表示:a、b、c、(a和b)、(a和c)、(b和c)、或(a和b和c),其中a、b、c可以是单个,也可以是多个。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A、同时存在A和B、单独存在B这三种情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
以及,除非有相反的说明,本申请实施例使用“第一”、“第二”等序数词是用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。例如,第一设备和第二设备,只是为了便于描述,而并不是表示这第一设备和第二设备的结构、重要程度等的不同,在某些实施例中,第一设备和第二设备还可以是同样的设备。
上述实施例中所用,根据上下文,术语“当……时”可以被解释为意思是“如果……”或“在……后”或“响应于确定……”或“响应于检测到……”。以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的构思和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
Claims (42)
1.一种应用部署方法,其特征在于,包括:
接收来自云端的针对目标应用的部署消息,所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程;
在缺少所述多个组件中的目标组件时,从云端下载所述目标组件;
基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。
2.根据权利要求1所述的方法,其特征在于,所述组件为用于实现预定义功能的代码片段或二进制文件。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在存在所述多个组件时,基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述应用部署消息包含所述目标应用的元数据;所述目标应用的元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。
5.根据权利要求4所述的方法,其特征在于,所述组件指示信息包含所述多个组件的标识,在两个组件的标识一致时为相同组件;
或者,所述组件指示信息包含所述多个组件的标识和所述多个组件的版本;
在两个组件的标识一致且版本一致时为相同组件。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述目标应用的元数据格式为以下格式中的一种:JSON格式、可扩展标记语言XML格式、键-值KV形式。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述基于所述目标应用的业务流程和所述多个组件,运行所述目标应用,包括:
基于所述目标应用的业务流程和所述多个组件,在运行引擎实例上运行所述应用。
8.根据权利要求7所述的方法,其特征在于,所述运行引擎实例包含于容器中,所述容器用于提供应用部署所需的隔离坏境;
下载的所述目标组件保存在所述容器的组件库,所述组件库的组件在多个应用之间复用;
所述容器包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。
9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:
将所述运行引擎实例注册到所述云端,并保持云端与所述运行引擎实例的通信长连接。
10.根据权利要求1-9任一项所述的方法,其特征在于,所述方法还包括:
向所述云端发送针对所述目标应用的部署请求或升级请求。
11.一种应用部署方法,其特征在于,包括:
向目标设备发送针对目标应用的部署消息,所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程,所述目标设备为边缘设备和/或终端;
在缺少所述多个组件中的目标组件时,向所述目标设备提供目标组件,所述目标组件用于所述目标设备运行所述目标应用。
12.根据权利要求11所述的方法,其特征在于,所述应用部署消息包含所述目标应用的元数据;所述目标应用的元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。
13.根据权利要求12所述的方法,其特征在于,所述组件指示信息包含所述多个组件的标识,在两个组件的标识一致时为相同组件;
或者,所述组件指示信息包含所述多个组件的标识和所述多个组件的版本;
在两个组件的标识一致且版本一致时为相同组件。
14.根据权利要求11-13任一项所述的方法,其特征在于,所述方法还包括:
向所述目标设备提供运行引擎实例,所述运行引擎实例用于通过所述目标应用的业务流程和所述多个组件运行所述应用。
15.根据权利要求14所述的方法,其特征在于,所述运行引擎实例配置于所述目标设备的容器中,所述容器用于提供应用部署所需的隔离坏境;
所述容器中包含组件库,所述组件库的组件在多个应用之间复用;
所述容器包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。
16.根据权利要求14或15所述的方法,其特征在于,所述方法还包括:
接收所述目标设备发送的关于所述运行引擎实例的注册信息;
与所述运行引擎实例保持长连接。
17.根据权利要求11-16任一项所述的方法,其特征在于,所述方法还包括:
接收来自所述目标设备的,针对所述目标应用的部署请求或升级请求。
18.一种应用部署系统,其特征在于,所述系统包含部署云端的服务器和目标设备,所述目标设备为边缘设备和/或终端,其中:
所述云端,用于向目标设备发送针对目标应用的部署消息,所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程;
所述目标设备,用于接收所述部署消息;
所述目标设备,还用于在缺少所述多个组件中的目标组件时,从云端下载所述目标组件;
所述云端,还用于向所述目标设备提供所述目标组件;
所述目标设备,还用于基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。
19.根据权利要求18所述的应用部署系统,其特征在于,所述应用部署消息包含所述目标应用的元数据;所述目标应用的元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。
20.根据权利要求19所述的应用部署系统,其特征在于,所述组件指示信息包含所述多个组件的标识,在两个组件的标识一致时为相同组件;
或者,所述组件指示信息包含所述多个组件的标识和所述多个组件的版本;
在两个组件的标识一致且版本一致时为相同组件。
21.根据权利要求18-20任一项所述的应用部署系统,其特征在于,所述云端,还用于向所述目标设备提供运行引擎实例;
所述目标设备,还用于基于所述目标应用的业务流程和所述多个组件,在运行引擎实例上运行所述应用。
22.根据权利要求21任一项所述的应用部署系统,其特征在于,所述运行引擎实例包含于容器中,所述容器用于提供应用部署所需的隔离坏境;
下载的所述目标组件保存在所述容器的组件库,所述组件库的组件在多个应用之间复用;
所述容器包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。
23.根据权利要求21或22所述的应用部署系统,其特征在于,所述目标设备,还用于将所述运行引擎实例注册到所述云端,并保持云端与所述运行引擎实例的通信长连接。
24.一种应用部署装置,其特征在于,所述应用部署装置包含通信单元和处理单元,其中:
所述通信单元,用于接收来自云端的针对目标应用的部署消息,所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程;
所述通信单元,还用于在缺少所述多个组件中的目标组件时,从云端下载所述目标组件;
所述处理单元,用于基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。
25.根据权利要求24所述的装置,其特征在于,所述处理单元,还用于存在所述多个组件时,基于所述目标应用的业务流程和所述多个组件,运行所述目标应用。
26.根据权利要求24或25所述的装置,其特征在于,所述应用部署消息包含所述目标应用的元数据;所述目标应用的元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。
27.根据权利要求26所述的装置,其特征在于,所述组件指示信息包含所述多个组件的标识,在两个组件的标识一致时为相同组件;
或者,所述组件指示信息包含所述多个组件的标识和所述多个组件的版本;
在两个组件的标识一致且版本一致时为相同组件。
28.根据权利要求27所述的装置,其特征在于,所述处理单元,还用于基于所述目标应用的业务流程和所述多个组件,在运行引擎实例上运行所述应用。
29.根据权利要求28所述的装置,其特征在于,所述应用部署装置包含容器,所述容器用于提供应用部署所需的隔离坏境,所述运行引擎实例包含于所述容器中;
所述容器还包括组件库,所述组件库的组件在多个应用之间复用;
所述容器包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。
30.根据权利要求28所述的装置,其特征在于,所述通信单元,还用于:
将所述运行引擎实例注册到所述云端,并保持云端与所述运行引擎实例的通信长连接。
31.根据权利要求24-30任一项所述的装置,其特征在于,所述通信单元,还用于:
向所述云端发送针对所述目标应用的部署请求或升级请求。
32.一种应用部署装置,其特征在于,所述应用部署装置包含通信单元和处理单元,其中:
所述通信单元,用于向目标设备发送针对目标应用的部署消息,所述部署消息用于指示部署所述目标应用所依赖的多个组件和所述目标应用的业务流程,所述目标设备为边缘设备和/或终端;
所述通信单元和所述处理单元,用于在缺少所述多个组件中的目标组件时,向所述目标设备提供目标组件,所述目标组件用于所述目标设备运行所述目标应用。
33.根据权利要求32所述的装置,其特征在于,所述应用部署消息包含所述目标应用的元数据;所述目标应用的元数据包含组件指示信息和流程信息,所述组件指示信息用于指示所述多个组件的信息,所述流程信息用于指示所述目标应用的业务流程。
34.根据权利要求33所述的装置,其特征在于,所述组件指示信息包含所述多个组件的标识,在两个组件的标识一致时为相同组件;
或者,所述组件指示信息包含所述多个组件的标识和所述多个组件的版本;
在两个组件的标识一致且版本一致时为相同组件。
35.根据权利要求24-30任一项所述的装置,其特征在于,所述处理单元和所述通信单元,还用于:
向所述目标设备提供运行引擎实例,所述运行引擎实例用于通过所述目标应用的业务流程和所述多个组件运行所述应用。
36.根据权利要求35所述的装置,其特征在于,所述运行引擎实例配置于所述目标设备的容器中,所述容器用于提供应用部署所需的隔离坏境;
所述容器中包含组件库,所述组件库的组件在多个应用之间复用;
所述容器包含管理应用,所述管理应用用于管理所述容器中的组件库、所述运行引擎实例和所述容器中的应用。
37.根据权利要求32-36任一项所述的装置,其特征在于,所述通信单元,还用于:
接收所述目标设备发送的关于所述运行引擎实例的注册信息;
与所述运行引擎实例保持长连接。
38.根据权利要求32-37任一项所述的装置,其特征在于,所述通信单元,还用于:
接收来自所述目标设备的,针对所述目标应用的部署请求或升级请求。
39.一种计算设备,其特征在于,所述计算设备包括处理器和存储器;
所述处理器用于执行所述存储器存储的计算机程序,使得所述计算设备实现权利要求1-10任一项所述的方法。
40.一种计算设备,其特征在于,所述计算设备包括处理器和存储器;
所述处理器用于执行所述存储器存储的计算机程序,使得所述计算设备实现权利要求11-17任一项所述的方法。
41.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,所述指令用于实现权利要求1-10任一项所述的方法。
42.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,所述指令用于实现权利要求11-17任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210361881.4A CN116931956A (zh) | 2022-04-07 | 2022-04-07 | 一种应用部署方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210361881.4A CN116931956A (zh) | 2022-04-07 | 2022-04-07 | 一种应用部署方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116931956A true CN116931956A (zh) | 2023-10-24 |
Family
ID=88385131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210361881.4A Pending CN116931956A (zh) | 2022-04-07 | 2022-04-07 | 一种应用部署方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116931956A (zh) |
-
2022
- 2022-04-07 CN CN202210361881.4A patent/CN116931956A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109525624B (zh) | 一种容器登录方法、装置及存储介质 | |
CN114567875A (zh) | 用于无线电设备网络空间安全和多个无线电接口测试的技术 | |
US10862971B2 (en) | Internet of things gateway service for a cloud foundry platform | |
CN113748685A (zh) | 基于网络的媒体处理控制 | |
US11909845B2 (en) | Methods and systems for managing applications of a multi-access edge computing environment | |
US10997376B2 (en) | Electronic message translation management | |
US20230069604A1 (en) | Use of crds as descriptors for applications, application components, deployments, clouds, ai/ml models, and rte in an o-ran system | |
US20200228478A1 (en) | Electronic message control | |
US11245567B2 (en) | Electronic message adaptation | |
CN113282410A (zh) | 资源配置方法及装置 | |
Kang et al. | Android RMI: a user-level remote method invocation mechanism between Android devices | |
CN116931956A (zh) | 一种应用部署方法及相关装置 | |
CA2823085A1 (en) | Method and system of implementing data load protocols | |
CN113783963B (zh) | 数据传输方法、服务器节点、网关设备、网络系统 | |
US11736761B2 (en) | Methods for media streaming content preparation for an application provider in 5G networks | |
CN106803804B (zh) | 传输报文的方法和装置 | |
CN114662102A (zh) | 一种文件处理方法、装置及存储介质 | |
CN114461399A (zh) | 资源的分配方法和装置、存储介质及电子装置 | |
CN110719303B (zh) | 一种容器化nrf的方法及系统 | |
WO2023193470A1 (zh) | 一种业务管理方法、系统及相关装置 | |
CN117056029B (zh) | 资源处理方法、系统、装置、存储介质及电子设备 | |
US20240028368A1 (en) | Remote edge virtualization management | |
CN117076160B (zh) | 组件调用方法、装置、设备和存储介质 | |
US20220321627A1 (en) | Methods and apparatus for just-in-time content preparation in 5g networks | |
CN115934830A (zh) | 数据同步方法及装置、存储介质及电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |