一种Docker镜像构建方法及装置与流程

文档序号:19737329发布日期:2020-01-18 04:40阅读:163来源:国知局
一种Docker镜像构建方法及装置与流程

本发明实施例涉及通信技术领域,具体涉及一种docker镜像构建方法及装置。



背景技术:

docker是一个开源的应用容器引擎,旨在提供一种应用的自动化部署解决方案,能够让开发者打包他们的应用及依赖包到一个可移植的容器中,容器即为轻量级虚拟机,然后发布到任何流行的linux机器上,实现应用的自动化安装、部署和升级,非常方便。而且,docker能够虚拟出多个容器,每个容器之间相互隔离没有接口,可以将彼此的生产环境和开发环境分开,互不影响。

现有的视频转码服务,通常采用容器技术进行分布式任务的提交与执行,依赖docker镜像进行版本发布以及部署,然而根据现有的docker应用场景,在实际使用中,存在如下问题:

docker镜像在使用过程中需要频繁的对版本进行迭代更新,一个docker镜像由多个可读的镜像层组成,按照docker镜像的分层原理,通过传统的dockerfile分层构建方式对docker镜像中的版本进行更新时,dockerfile将在每层文件发生变化时,重新构建此层与此层之下的所有层,而且大部分版本文件均在dockerfile中的最后一层中,每次构建甚至一个小小的文件改动都需要重新建立完整的新层,这使得每次更新docker镜像中的版本时,都需要非常长的时间。



技术实现要素:

为了解决上述技术问题或者至少部分地解决上述技术问题,本发明实施例提供了一种docker镜像构建方法、装置、计算机设备及存储介质。

有鉴于此,第一方面,本发明实施例提供一种docker镜像构建方法,包括:

当接收到镜像构建请求时,确定基础镜像;

利用所述基础镜像创建临时容器;

获取构建docker镜像所需的目标镜像文件;

确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息;

将所述差异信息写入所述临时容器;

提交写入有所述差异信息的临时容器作为所述基础镜像的新层,将包含有所述新层的基础镜像作为所述docker镜像。

在一种可能的实现方式中,确定基础镜像包括:

获取至少一个候选镜像;

确定所述候选镜像中是否包含镜像运行所需的全部依赖项;

将包含镜像运行所需的全部依赖项的候选镜像作为第一镜像;

获取所述第一镜像中的镜像文件的层数;

判断所述镜像文件的层数是否超过预设阈值;

如果所述镜像文件的层数没有超过预设阈值,将镜像文件的层数没有超过预设阈值的所述第一镜像作为基础镜像。

在一种可能的实现方式中,确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息,包括:

将所述目标镜像文件挂载入所述临时容器的目录中;

获取所述基础镜像中的镜像文件与所述临时容器的目录的映射关系;

根据所述映射关系,在所述临时容器中,采用递归遍历的方式,计算所述基础镜像中的镜像文件和所述目标镜像文件的哈希差异,得到差异信息。

在一种可能的实现方式中,确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息,包括:

获取所述基础镜像中的镜像文件的标识;

根据所述基础镜像中的镜像文件的标识,获取所述基础镜像中的镜像文件的代码提交历史;

获取所述目标镜像文件的标识;

根据所述目标镜像文件的标识,获取所述目标镜像文件的代码提交历史;

根据所述基础镜像中的镜像文件的代码提交历史和所述目标镜像文件的代码提交历史,确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息。

在一种可能的实现方式中,所述方法还包括:

记录所述docker镜像中镜像文件的标识。

第二方面,本发明实施例还提供一种docker镜像构建装置,包括:

基础镜像确定模块,用于当接收到镜像构建请求时,确定基础镜像;

容器创建模块,用于利用所述基础镜像创建临时容器;

目标镜像文件获取模块,用于获取构建docker镜像所需的目标镜像文件;

差异信息确定模块,用于确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息;

写入模块,用于将所述差异信息写入所述临时容器;

新层提交模块,用于提交写入有所述差异信息的临时容器作为所述基础镜像的新层,将包含有所述新层的基础镜像作为所述docker镜像。

在一种可能的实现方式中,所述基础镜像确定模块确定基础镜像包括:

确定镜像中是否包含镜像运行所需的全部依赖项;

将包含镜像运行所需的全部依赖项的镜像作为第一镜像;

获取第一镜像中的镜像文件的层数;

判断所述镜像文件的层数是否超过预设阈值;

如果所述镜像文件的层数没有超过预设阈值,将镜像文件的层数没有超过预设阈值的所述第一镜像作为基础镜像。

选取第二镜像文件作为基础镜像。

在一种可能的实现方式中,所述差异信息确定模块确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息,包括:

将所述目标镜像文件挂载入所述临时容器的目录中;

获取所述基础镜像中的镜像文件与所述临时容器的目录的映射关系;

在所述临时容器中,采用递归遍历的方式,计算所述基础镜像中的镜像文件和所述目标镜像文件的哈希差异,得到差异信息。

在一种可能的实现方式中,所述差异信息确定模块确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息,包括:

获取所述基础镜像中的镜像文件的标识;

根据所述基础镜像中的镜像文件的标识,获取所述基础镜像中的镜像文件的代码提交历史;

获取所述目标镜像文件的标识;

根据所述目标镜像文件的标识,获取所述目标镜像文件的代码提交历史;

根据所述基础镜像中的镜像文件的代码提交历史和所述目标镜像文件的代码提交历史,确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息。

在一种可能的实现方式中,所述装置还包括:

记录模块,用于记录所述docker镜像中镜像文件的标识。

第三方面,本发明实施例还提供一种计算机设备,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的数据处理程序,以实现第一方面所述的docker镜像构建方法。

第四方面,本发明实施例还提供一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现第一方面所述的docker镜像构建方法。

相比现有技术,

本发明实施例提出的一种docker镜像构建方法、装置、计算机设备及存储介质,在docker镜像构建时,确定基础镜像,通过基础镜像创建临时容器,确定要创建的docker镜像所需的目标镜像文件,确定目标镜像文件与基础镜像中的镜像文件的差异信息,将差异信息写入临时容器,提交写入了差异信息的临时容器作为基础镜像文件的新层,将包含有新层的基础镜像文件作为创建的docker镜像。通过本方案创建docker镜像时只需将目标镜像文件与基础镜像中的镜像文件的差异信息也就是增量文件更新到基础镜像的新层之中即可,与现有dockerfile将在每层文件发生变化时,重新构建发生变化的层和发生变化的层之下的所有层相比,通过本方案构建的新层的体积小很多,而且新构建的docker镜像与基础镜像相比,只是增加了装有增量文件的新层,所以在对新构建的docker镜像进行分发时只需分发新层即可,而且由于通过本方案构建的新层的体积很小,所以减少了分发时所需的带宽大小,降低了对镜像仓库以及计算节点的存储空间的占用。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例提供的一种系统结构框图;

图2为本发明实施例提供的一种docker镜像构建方法流程图;

图3为本发明实施例提供的一种docker镜像构建装置框图;

图4为本发明实施例提供的一种计算机设备框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

为了方便理解本申请技术方案,将对下文实施例可能涉及到的技术术语进行解释说明,具体如下:

docker容器:docker容器是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化,docker容器允许单个进程以比普通unix进程更高水平的隔离性运行。例如提供游戏程序运行的虚拟os,具有轻量级,性能损耗小,能更高效利用服务器资源等特点。

docker镜像(dockerimage):image是docker相关属性的一种,代表一个只读的layer(镜像层)集合,本质上是docker容器的一个快照。

一个docker镜像由多个可读的镜像层组成,然后运行的容器会在这个docker的镜像上面多加一层可写的容器层,任何的对文件的更改都只存在此容器层,且不影响已经存在的镜像层。

dockerregistry(镜像仓库):是一个无状态的、高度可扩展的,且用于存储/分发dockerimage的服务端程序。

现有技术通常使用dockerfile创建镜像,使用dockerfile创建镜像时,在每个镜像层的文件发生变化时,都会重新构建这一发生变化的镜像层与这一发生变化的镜像层之下的所有镜像层,但是通过这一方法构建镜像时,单次构建时间非常长,而且大部分文件均在dockerfile中的最后一层中,每次构建甚至一个小小的文件改动都需要重新建立完整的新层,无法利用dockerfile的层缓存能力加速。

为了解决上述问题,本发明实施例提供了一种docker镜像构建方法。

图1为本申请实施例提供用于实现本申请实施例提供的docker镜像构建方法的系统结构框图。参照图1,该系统可以包括:服务器101以及多个客户端102;其中,服务器为网络侧为用户提供服务的服务设备,其可能是多台服务器组成的服务器集群,也可能是单台服务器。

在本申请实施例中,上述服务器101可以是本地服务器也可以是云服务器,其实现docker镜像的构建方法的过程可以参见下文相应实施例的描述。

客户端是与服务器相对应的,为用户提供本地服务的程序,在实际应用中,客户端一般可以装载在手机、平板电脑、笔记本电脑、台式电脑等用户设备上。

基于图1所示的系统,下面从服务器的角度对本申请提供的docker镜像构件方法进行介绍。

图2为本发明实施例提供的一种docker镜像构建方法的流程图,如图2所示,该docker镜像构建方法包括如下步骤:

s21.当接收到镜像构建请求时,确定基础镜像。

当需要构建docker镜像,才确定构建docker镜像所需的基础镜像,所以在确定基础镜像之前,需要先检测是否接收到镜像构建请求,若接收到镜像构建请求,就确定基础镜像,否则不需要确定基础镜像,其中镜像构建请求用于构建docker镜像。

在一种可能的实现方式中,当客户端输入docker的构建指令时,可以调用服务器中的dockerapi(applicationprogramminginterface,应用程序编程接口),然后发起docker镜像构建请求。

在本申请实施例中,上述镜像构建请求可以用来表明将基础镜像中的镜像文件更新为要构建的docker镜像对应的目标镜像文件。

在一种可能的实现方式中,根据需要该镜像构建请求可以携带与需要构建的docker镜像对应的目标镜像文件的标识(如目标镜像文件的id、名称、标签等)。

docker镜像的构建通常是通过修改已有的镜像,因此在构建docker镜像时需要先确定一个已有的镜像作为基础镜像,通过对基础镜像进行修改得到想要构建的docker镜像。

通过基础镜像构建docker镜像时,需要保证基础镜像中包含所有依赖项,依赖项就是镜像运行所需要的应用,例如调度、编译等等很多与镜像相关的工具类应用,包括全部依赖项保证了可以基于基础镜像构建新的docker镜像。

另外为了防止docker镜像过大,预设一个层数阈值,当镜像的镜像文件层数超过这个预设阈值是,就不能使用该镜像作为构建docker镜像的基础镜像,以防docker镜像过大。

在一个可能的实现方式中,可以通过下述方式确定基础镜像:

s211.获取至少一个候选镜像。

其中,候选镜像可以从dockerhub或其它一些镜像仓库中获取,可以是docker官方团队发布的基础系统镜像,如centos、ubuntu等,也可以是通过dockerfile进行base镜像的编译得到的拥有复杂依赖关系的镜像,还可以使用自己或他人团队的历史镜像,候选镜像的个数可以是一个也可以是多个,其中,多个包括两个。

s212.确定所述候选镜像中是否包含镜像运行所需的全部依赖项。

其中,依赖项就是镜像运行所需要的应用,只有保证基础镜像中包含有镜像运行所需的全部依赖项,才能保证可以通过基础镜像完成docker镜像的构建,所以,在选取基础镜像时,需要保证基础镜像中包含有镜像运行所需的全部依赖项。

s213.将包含镜像运行所需的全部依赖项的候选镜像作为第一镜像。

s214.获取所述第一镜像中的镜像文件的层数。

镜像是分层结构,镜像的体积随着镜像文件的层数的增加而增大。

s215.判断所述镜像文件的层数是否超过预设阈值。

为了防止镜像的体积过大,所以在选取基础镜像时,还需要保证基础镜像的镜像文件的层数不超过预设阈值,其中,预设阈值是根据需求设定的值,例如为127,也可以是其他数值,此处不做限定。

s216.如果所述镜像文件的层数没有超过预设阈值,将镜像文件的层数没有超过预设阈值的所述第一镜像作为基础镜像。

因为候选镜像的数量可能为一个或多个,当候选镜像的个数为多个时,则可能会存在多个镜像文件的层数没有超过预设阈值的第一镜像,此时,可以从这多个第一镜像中任意选取一个作为基础镜像。

如果候选镜像中没有既包含全部依赖项,文件层数又不超过预设阈值的第一镜像,则需要构建一个既包含镜像运行所需的全部依赖项,镜像文件的层数又不超过预设阈值的基础镜像,构建基础镜像的方式为现有成熟技术,此处不再赘述。

通过上述实现方式确定基础镜像,可以采用现有的镜像作为基础镜像无需每次都去重新建立基础镜像,而且通过上述方式确定基础镜像,既保证了基础镜像包含镜像运行所需的全部依赖项,又保证了基础镜像的体积不会过大。

s22.利用所述基础镜像创建临时容器。

本申请实施例是通过对基础镜像进行修改实现新docker镜像的构建,而对基础镜像的任何修改都是在基础镜像创建的容器中进行的,所以在对基础镜像进行修改之前需要先运行基础镜像创建一个临时容器,以便对基础镜像进行修改。

s23.获取构建docker镜像所需的目标镜像文件。

在本申请实施例中,构建新的docker镜像实际就是将基础镜像中的镜像文件(例如版本文件,包括代码和相关文件等)更新为用户想要的镜像文件,所以在修改前需要先获取用户想要的镜像文件,即目标镜像文件。

在一种可能的实现方式中,可以根据镜像构建请求中携带的目标镜像文件标识从git等用于管理代码、文件的仓库中获取目标镜像。

s24.确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息。

在本申请实施例中,根据基础镜像中的镜像文件与目标镜像文件的差异信息对基础镜像文件进行更新,所以需要确定基础镜像中的镜像文件与目标镜像文件的差异信息。

在一个可能实现方式中,可以通过下述方式确定基础镜像中的镜像文件与目标镜像文件的差异信息:

s241.将所述目标镜像文件挂载入所述临时容器的目录中。

在本实现方式中,将目标镜像文件挂载入基础镜像文件创建的临时容器的目录中的目的是为了可以通过临时容器访问目标镜像文件。

挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上,从而通过访问这个目录来访问设备,在本实现方式中,将目标镜像文件挂载入临时容器的目录中,就是将存储有目标镜像文件的存储设备挂接到临时容器的目录上。

s242.获取所述基础镜像中的镜像文件与所述临时容器的目录的映射关系。

获取基础镜像中的镜像文件与临时容器的目录的映射关系,是为了确定基础镜像中镜像文件的位置,方便临时容器根据映射关系访问基础镜像中镜像文件。

s243.根据所述映射关系,在所述临时容器中,采用递归遍历的方式,计算所述基础镜像中的镜像文件和所述目标镜像文件的哈希差异,得到差异信息。

在一个可能的实现方式中,在临时容器中执行差异计算的命令,临时容器采用递归遍历的方式访问基础镜像中的镜像文件和目标镜像文件,并通过哈希函数计算基础镜像中的镜像文件和所述目标镜像文件的哈希差异,根据哈希差异,确定基础镜像中的镜像文件和目标镜像文件差异信息,其中通过哈希函数确定文件差异为现有成熟技术,因此此处不再赘述具体计算过程。

通过上述实现方式,利用哈希函数来确定基础镜像中的镜像文件和目标镜像文件的差异信息,可以快速找到基础镜像中的镜像文件和目标镜像文件的差异信息,具有速度快,效率高的优点。

在一个可能的实现方式中,可以通过下述方式确定基础镜像中的镜像文件与目标镜像文件的差异信息:

s241/.获取所述基础镜像中的镜像文件的标识(如镜像文件的id、名称、标签等)。

s242/.根据所述基础镜像中的镜像文件的标识,获取所述基础镜像中的镜像文件的代码提交历史。

s243/.获取所述目标镜像文件的标识;

s244/.根据所述目标镜像文件的标识,获取所述目标镜像文件的代码提交历史;

s245/.根据所述基础镜像中的镜像文件的代码提交历史和所述目标镜像文件的代码提交历史,确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息。

由于代码、文件等镜像文件大部分都采用了git(gitee.com)等仓库技术管理,所以可以通过git等仓库记录的基础镜像中的镜像文件提交的版本,直接通过基础镜像中的镜像文件的代码提交历史和目标版本文件的代码提交历史即可得到基础镜像中的镜像文件与目标镜像文件的差异信息。通过此方式代替采用递归遍历的方式通过哈希差异算法计算基础镜像中的镜像文件与目标镜像文件的差异信息的方式,可以省下大量时间,提高了docker镜像构建效率。

s25.将所述差异信息写入所述临时容器。

因为目标镜像文件是挂载入临时容器中的,并没有写入临时容器中,所以当确定出差异信息后,为了根据差异信息对基础镜像进行更新,需要将差异信息写入到临时容器中。

s26.提交写入有所述差异信息的临时容器作为所述基础镜像的新层,将包含有所述新层的基础镜像作为所述docker镜像。

将差异信息写入临时容器中后,还需要将写入有所述差异信息的临时容器进行提交,才能将临时容器作为基础进行的新层,新层中存储的即为基础镜像中原来的镜像文件与目标镜像文件的差异文件,这样在使用时通过调用基础镜像中原来的镜像文件和新层中的内容即可得到目标镜像文件,所以通过上述方式得到的包含有新层的基础镜像就是构建的到的包含有目标镜像文件的docker镜像。

在一种可能的实现方式中,在docker镜像构建完成后,记录所述docker镜像中镜像文件的标识(如镜像文件的id、名称、标签等),这样在下次构建在下次构建docker镜像时,就可用本次构建的docker镜像(或一个已被分发的镜像)作为基础镜像,每次构建都将叠加仅包含与本次构建的docker镜像的镜像文件的差异信息的新层。

本发明实施例提出的一种docker镜像构建方法、装置、计算机设备及存储介质,在docker镜像构建时,确定基础镜像,通过基础镜像创建临时容器,确定要创建的docker镜像所需的目标镜像文件,确定目标镜像文件与基础镜像中的镜像文件的差异信息,将差异信息写入临时容器,提交写入了差异信息的临时容器作为基础镜像文件的新层,将包含有新层的基础镜像文件作为创建的docker镜像。通过本方案创建docker镜像时只需将目标镜像文件与基础镜像中的镜像文件的差异信息也就是增量文件更新到基础镜像的新层之中即可,与现有dockerfile将在每层文件发生变化时,重新构建发生变化的层和发生变化的层之下的所有层相比,通过本方案构建的新层的体积小很多,而且新构建的docker镜像与基础镜像相比,只是增加了装有增量文件的新层,所以在对新构建的docker镜像进行分发时只需分发新层即可,而且由于通过本方案构建的新层的体积比通过dockerfile构建的全量层(即重新构建的发生变化的层和发生变化的层之下的所有层)小很多,所以本方案与现有的技术相比,减少了分发时所需的带宽大小,降低了占用了镜像仓库以及计算节点的存储空间,在成千上万个节点中部署时,会大大降低带宽。

基于与上述docker镜像构建方法相同的发明构思,本申请实施例还提供了一种docker镜像构建装置,如图3所示,该docker镜像构建装置300可以包括:

基础镜像确定模块301,用于当接收到镜像构建请求时,确定基础镜像;

容器创建模块302,用于利用所述基础镜像创建临时容器;

目标镜像文件获取模块303,用于获取构建docker镜像所需的目标镜像文件;

差异信息确定模块304,用于确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息;

写入模块305,用于将所述差异信息写入所述临时容器;

新层提交模块306,用于提交写入有所述差异信息的临时容器作为所述基础镜像的新层,将包含有所述新层的基础镜像作为所述docker镜像。

在一种可能的实现方式中,所述基础镜像确定模块301确定基础镜像包括:

确定镜像中是否包含镜像运行所需的全部依赖项;

将包含镜像运行所需的全部依赖项的镜像作为第一镜像;

获取第一镜像中的镜像文件的层数;

判断所述镜像文件的层数是否超过预设阈值;

将所述镜像文件的层数没有超过预设阈值的第一镜像文件作为第二镜像文件;

选取第二镜像文件作为基础镜像。

在一种可能的实现方式中,所述差异信息确定模块304确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息,包括:

将所述目标镜像文件挂载入所述临时容器的目录中;

获取所述基础镜像中的镜像文件与所述临时容器的目录的映射关系;

在所述临时容器中,采用递归遍历的方式,计算所述基础镜像中的镜像文件和所述目标镜像文件的哈希差异,得到差异信息。

在一种可能的实现方式中,所述差异信息确定模块304确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息,包括:

获取所述基础镜像中的镜像文件的标识;

根据所述基础镜像中的镜像文件的标识,获取所述基础镜像中的镜像文件的代码提交历史;

获取所述目标镜像文件的标识;

根据所述目标镜像文件的标识,获取所述目标镜像文件的代码提交历史;

根据所述基础镜像中的镜像文件的代码提交历史和所述目标镜像文件的代码提交历史,确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息。

在一种可能的实现方式中,所述装置还包括:

记录模块,用于记录所述docker镜像中镜像文件的标识。

在本申请另一实施例中,还提供了一种计算机设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信;

存储器403,用于存放计算机程序;

处理器401,用于执行存储器403上所存放的程序时,实现如下步骤:

当接收到镜像构建请求时,确定基础镜像;

利用所述基础镜像创建临时容器;

获取构建docker镜像所需的目标镜像文件;

确定所述基础镜像中的镜像文件与所述目标镜像文件的差异信息;

将所述差异信息写入所述临时容器;

提交写入有所述差异信息的临时容器作为所述基础镜像的新层,将包含有所述新层的基础镜像作为所述docker镜像。

上述计算机设备提到的通信总线404可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线404可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口402用于上述计算机设备与其他设备之间的通信。

存储器403可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器401可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本申请另一实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有数据处理方法程序,所述数据处理方法程序被处理器执行时实现上述任一所述的应用检测方法的步骤。

本发明实施例在具体实现时,可以参阅上述各个实施例,具有相应的技术效果。

可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(applicationspecificintegratedcircuits,asic)、数字信号处理器(digitalsignalprocessing,dsp)、数字信号处理设备(dspdevice,dspd)、可编程逻辑设备(programmablelogicdevice,pld)、现场可编程门阵列(field-programmablegatearray,fpga)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。

对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明各个实施例所述的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法或者实施例的某些部分所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1