在OpenStack系统中管理节点的方法和装置转让专利

申请号 : CN201811313509.6

文献号 : CN109495298B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 雷亚帅

申请人 : 郑州云海信息技术有限公司

摘要 :

本发明公开了一种在OpenStack系统中管理节点的方法和装置。所述方法包括:获取OpenStack系统中所需部署的节点;为所述节点配置运行数据,其中所述运行数据包括网络配置数据和/或应用程序的镜像数据;存储所述运行数据至所述节点的预设存储路径中;发送自动运行安装包,其中所述自动运行安装包用于调用所述存储路径上的数据并对所述数据执行安装操作。

权利要求 :

1.一种在OpenStack系统中管理节点的方法,其特征在于,包括:获取OpenStack系统中所需部署的节点;

为所述节点配置运行数据,其中所述运行数据包括网络配置数据和/或应用程序的镜像数据,包括:采用图形界面记录正确部署OpenStack的方法和流程,并根据图形界面及模板文件生成本次部署的配置文件,其中所述配置文件包括global.yml文件和multimode文件以及开机自运行的deploy.py脚本以及hosts文件;

存储所述运行数据至所述节点的预设存储路径中;

发送自动运行安装包,其中所述自动运行安装包用于调用所述存储路径上的数据并对所述数据执行安装操作;

其中,在脚本deploy.py以及hosts文件开机运行后,将global.yml文件中的数据作为配置参数,当deploy.py脚本检测到裸机节点准备就绪后,运行multimode文件;其中:global.yml文件包括本OpenStack环境的全局配置、vip信息和组件开启配置数据;

deploy脚本用于探测各个裸机节点是否准备就绪的;

hosts文件记录有OpenStack环境各节点指定ip及用户名;

multimode文件包括ansible配置文件和inventory文件。

2.根据权利要求1所述的方法,其特征在于,所述为所述节点配置运行数据,包括:获取所述OpenStack系统中网络和子网的信息;

根据所述OpenStack系统中网络和子网的信息,确定所述节点的网络配置数据。

3.根据权利要求1或2所述的方法,其特征在于,所述发送自动运行安装包之后,所述方法还包括:在通知所述节点执行网络配置操作后,查询所述节点是否处于正常的网络连接状态;

如果接收到所述节点反馈的处于正常的网络连接状态的信息,则通知所述节点清除所述节点已存储的运行程序和/或自动运行安装包。

4.根据权利要求3所述的方法,其特征在于,所述查询所述节点是否处于正常的网络连接状态之后,所述方法还包括:如果未接收到所述节点反馈的处于正常的网络连接状态的信息,则按照预先设置的时间间隔,再次查询所述节点是否处于正常的网络连接状态;

如果未接收到所述节点反馈的处于正常的网络连接状态的信息,且未查询的记录达到预先设置的次数阈值,则通知所述节点清除所述节点已存储的运行程序和/或自动运行安装包。

5.根据权利要求4所述的方法,其特征在于,所述在未接收到所述节点反馈的处于正常的网络连接状态的信息,且未查询的记录达到预先设置的次数阈值方法之后,所述方法还包括:重新下发所述节点对应的运行程序和/或自动运行安装包,并控制所述节点执行装机操作。

6.一种在OpenStack系统中管理节点的装置,其特征在于,包括:获取模块,用于获取OpenStack系统中所需部署的节点;

配置模块,用于为所述节点配置运行数据,其中所述运行数据包括网络配置数据和/或应用程序的镜像数据,包括:采用图形界面记录正确部署OpenStack的方法和流程,并根据图形界面及模板文件生成本次部署的配置文件,其中所述配置文件包括global.yml文件和multimode文件以及开机自运行的deploy.py脚本以及hosts文件;

存储模块,用于存储所述运行数据至所述节点的预设存储路径中;

第一发送模块,用于发送自动运行安装包,其中所述自动运行安装包用于调用所述存储路径上的数据并对所述数据执行安装操作;

其中,在脚本deploy.py以及hosts文件开机运行后,将global.yml文件中的数据作为配置参数,当deploy.py脚本检测到裸机节点准备就绪后,运行multimode文件;其中:global.yml文件包括本OpenStack环境的全局配置、vip信息和组件开启配置数据;

deploy脚本用于探测各个裸机节点是否准备就绪的;

hosts文件记录有OpenStack环境各节点指定ip及用户名;

multimode文件包括ansible配置文件和inventory文件。

7.根据权利要求6所述的装置,其特征在于,所述配置模块包括:获取单元,用于获取所述OpenStack系统中网络和子网的信息;

确定单元,用于根据所述OpenStack系统中网络和子网的信息,确定所述节点的网络配置数据。

8.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:查询模块,用于在通知所述节点执行网络配置操作后,查询所述节点是否处于正常的网络连接状态;

通知模块,用于如果接收到所述节点反馈的处于正常的网络连接状态的信息,则通知所述节点清除所述节点已存储的运行程序和/或自动运行安装包。

9.根据权利要求8所述的装置,其特征在于,所述装置还包括:所述查询模块,还用于在查询所述节点是否处于正常的网络连接状态之后,如果未接收到所述节点反馈的处于正常的网络连接状态的信息,则按照预先设置的时间间隔,再次查询所述节点是否处于正常的网络连接状态;

所述通知模块,用于如果未接收到所述节点反馈的处于正常的网络连接状态的信息,且未查询的记录达到预先设置的次数阈值,则通知所述节点清除所述节点已存储的运行程序和/或自动运行安装包。

10.根据权利要求9所述的装置,其特征在于,所述装置还包括:管理模块,用于在未接收到所述节点反馈的处于正常的网络连接状态的信息,且未查询的记录达到预先设置的次数阈值装置之后,重新下发所述节点对应的运行程序和/或自动运行安装包,并控制所述节点执行装机操作。

说明书 :

在OpenStack系统中管理节点的方法和装置

技术领域

[0001] 本发明涉及信息处理领域,尤指一种在OpenStack系统中管理节点的方法和装置。

背景技术

[0002] 云计算(Cloud Computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。因此,云计算甚至可以让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。云计算实现了硬件资源的池化,将计算资源、存储资源、网络资源已资源池的方式提供给用户,资源整合为虚拟机的方式提供给用户使用。OpenStack作为云计算事实上的标准,已经得到了广泛的应用。
[0003] OpenStack作为一个组件众多的分布式系统,其部署一直是一个难题。Kolla项目利用Docker、Docker‑Compose、Ansible来完成部署OpenStack。目前Kolla已经完成一个all‑in‑one和multinode的开发环境的部署。Kolla主要是利用Docker容器的隔离性来达到OpenStack的原子升级、回退在升级。整个升级、回退的过程更容易控制影响范围,降低整个OpenStack的运维复杂度。但是此种部署方式没有图形化部署系统,仍有很大优化和提升空间。
[0004] Ironic是OpenStack的裸机服务,能够给裸机实施装机操作;可以独立部署,也可同OpenStack其他项目进行集成使用,客户可以像创建虚拟机一样将选中的系统镜像模板安装至指定裸机。
[0005] Config Drive做为一种元数据注入的方式,可以将用户指定的数据注入进虚拟机中或裸机中;Cloud‑init利用Config Drive作为Data Source对虚拟机或裸机进行初始化配置或者执行一系列脚本。
[0006] 目前,OpenStack系统的节点部署工作较为复杂,如何简化部署流程是亟待解决的问题。

发明内容

[0007] 为了解决上述技术问题,本发明提供了一种在OpenStack系统中管理节点的方法和装置,能够简化OpenStack系统的节点部署流程。
[0008] 为了达到本发明目的,本发明提供了一种在OpenStack系统中管理节点的方法,包括:
[0009] 获取OpenStack系统中所需部署的节点;
[0010] 为所述节点配置运行数据,其中所述运行数据包括网络配置数据和/或应用程序的镜像数据;
[0011] 存储所述运行数据至所述节点的预设存储路径中;
[0012] 发送自动运行安装包,其中所述自动运行安装包用于调用所述存储路径上的数据并对所述数据执行安装操作。
[0013] 在本发明提供的一个示例性实施例中,所述为所述节点配置运行数据,包括:
[0014] 获取所述OpenStack系统中网络和子网的信息;
[0015] 根据所述OpenStack系统中网络和子网的信息,确定所述节点的网络配置数据。
[0016] 在本发明提供的一个示例性实施例中,所述发送自动运行安装包之后,所述方法还包括:
[0017] 在通知所述节点执行网络配置操作后,查询所述节点是否处于正常的网络连接状态;
[0018] 如果接收到所述节点反馈的处于正常的网络连接状态的信息,则通知所述节点清除所述节点已存储的运行程序和/或自动运行安装包。
[0019] 在本发明提供的一个示例性实施例中,所述查询所述节点是否处于正常的网络连接状态之后,所述方法还包括:
[0020] 如果未接收到所述节点反馈的处于正常的网络连接状态的信息,则按照预先设置的时间间隔,再次查询所述节点是否处于正常的网络连接状态;
[0021] 如果未接收到所述节点反馈的处于正常的网络连接状态的信息,且未查询的记录达到预先设置的次数阈值,则通知所述节点清除所述节点已存储的运行程序和/或自动运行安装包。
[0022] 在本发明提供的一个示例性实施例中,所述在未接收到所述节点反馈的处于正常的网络连接状态的信息,且未查询的记录达到预先设置的次数阈值方法之后,所述方法还包括:
[0023] 重新下发所述节点对应的运行程序和/或自动运行安装包,并控制所述节点执行装机操作。
[0024] 为了达到本发明目的,本发明提供了一种在OpenStack系统中管理节点的装置,包括:
[0025] 获取模块,用于获取OpenStack系统中所需部署的节点;
[0026] 配置模块,用于为所述节点配置运行数据,其中所述运行数据包括网络配置数据和/或应用程序的镜像数据;
[0027] 存储模块,用于存储所述运行数据至所述节点的预设存储路径中;
[0028] 第一发送模块,用于发送自动运行安装包,其中所述自动运行安装包用于调用所述存储路径上的数据并对所述数据执行安装操作。
[0029] 在本发明提供的一个示例性实施例中,所述配置模块包括:
[0030] 获取单元,用于获取所述OpenStack系统中网络和子网的信息;
[0031] 确定单元,用于根据所述OpenStack系统中网络和子网的信息,确定所述节点的网络配置数据。
[0032] 在本发明提供的一个示例性实施例中,所述装置还包括:
[0033] 查询模块,用于在通知所述节点执行网络配置操作后,查询所述节点是否处于正常的网络连接状态;
[0034] 通知模块,用于如果接收到所述节点反馈的处于正常的网络连接状态的信息,则通知所述节点清除所述节点已存储的运行程序和/或自动运行安装包。
[0035] 在本发明提供的一个示例性实施例中,所述装置还包括:
[0036] 所述查询模块,还用于在查询所述节点是否处于正常的网络连接状态之后,如果未接收到所述节点反馈的处于正常的网络连接状态的信息,则按照预先设置的时间间隔,再次查询所述节点是否处于正常的网络连接状态;
[0037] 所述通知模块,用于如果未接收到所述节点反馈的处于正常的网络连接状态的信息,且未查询的记录达到预先设置的次数阈值,则通知所述节点清除所述节点已存储的运行程序和/或自动运行安装包。
[0038] 在本发明提供的一个示例性实施例中,所述装置还包括:
[0039] 管理模块,用于在未接收到所述节点反馈的处于正常的网络连接状态的信息,且未查询的记录达到预先设置的次数阈值装置之后,重新下发所述节点对应的运行程序和/或自动运行安装包,并控制所述节点执行装机操作。
[0040] 本发明提供的实施例,获取OpenStack系统中所需部署的节点,为所述节点配置运行数据,其中所述运行数据包括网络配置数据和/或应用程序的镜像数据,存储所述运行数据至所述节点的预设存储路径中,发送自动运行安装包,其中所述自动运行安装包用于调用所述存储路径上的数据并对所述数据执行安装操作,简化了物理机下OpenStack部署的难度,缩短了部署时间,降低了部署门槛,减少了实施压力,加快了OpenStack的拓展。
[0041] 本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

[0042] 附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
[0043] 图1为本发明提供的在OpenStack系统中管理节点的方法的流程图;
[0044] 图2为本发明提供的OpenStack系统的部署系统的结构示意图;
[0045] 图3为本发明提供的OpenStack系统的部署方法的流程图;
[0046] 图4为本发明提供的在OpenStack系统中管理节点的装置的结构图。

具体实施方式

[0047] 为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0048] 在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0049] 图1为本发明提供的在OpenStack系统中管理节点的方法的流程图。图1所示方法包括:
[0050] 步骤101、获取OpenStack系统中所需部署的节点;
[0051] 步骤102、为所述节点配置运行数据,其中所述运行数据包括网络配置数据和/或应用程序的镜像数据;
[0052] 步骤103、存储所述运行数据至所述节点的预设存储路径中;
[0053] 步骤104、发送自动运行安装包,其中所述自动运行安装包用于调用所述存储路径上的数据并对所述数据执行安装操作。
[0054] 本发明提供的方法实施例,获取OpenStack系统中所需部署的节点,为所述节点配置运行数据,其中所述运行数据包括网络配置数据和/或应用程序的镜像数据,存储所述运行数据至所述节点的预设存储路径中,发送自动运行安装包,其中所述自动运行安装包用于调用所述存储路径上的数据并对所述数据执行安装操作,简化了物理机下OpenStack部署的难度,缩短了部署时间,降低了部署门槛,减少了实施压力,加快了OpenStack的拓展。
[0055] 下面对本发明提供的方法作进一步说明:
[0056] 在一个示例性实施例中,所述为所述节点配置运行数据,包括:
[0057] 获取所述OpenStack系统中网络和子网的信息;
[0058] 根据所述OpenStack系统中网络和子网的信息,确定所述节点的网络配置数据。
[0059] 在本示例性实施例中,收集OpenStack系统中网络和子网的信息,确定该节点的部署位置对应的网络环境,根据该网络环境为节点配置对应的网络配置数据。
[0060] 在一个示例性实施例中,所述发送自动运行安装包之后,所述方法还包括:
[0061] 在通知所述节点执行网络配置操作后,查询所述节点是否处于正常的网络连接状态;
[0062] 如果接收到所述节点反馈的处于正常的网络连接状态的信息,则通知所述节点清除所述节点已存储的运行程序和/或自动运行安装包。
[0063] 在本示例性实施例中,通过检测部署的节点是否能够通过网络反馈连接信息,确定该节点是否已经完成部署工作,并在确定完成部署工作后,对部署过程中的数据进行删除,保证节点中的存储空间的合理利用。
[0064] 在一个示例性实施例中,所所述查询所述节点是否处于正常的网络连接状态之后,所述方法还包括:
[0065] 如果未接收到所述节点反馈的处于正常的网络连接状态的信息,则按照预先设置的时间间隔,再次查询所述节点是否处于正常的网络连接状态;
[0066] 如果未接收到所述节点反馈的处于正常的网络连接状态的信息,且未查询的记录达到预先设置的次数阈值,则通知所述节点清除所述节点已存储的运行程序和/或自动运行安装包。
[0067] 在本示例性实施例中,如果该节点尝试部署工作连续多次不成功,可以通过该节点进行数据清除操作,停止部署工作,减少多次尝试对系统资源的浪费。
[0068] 在一个示例性实施例中,所述在未接收到所述节点反馈的处于正常的网络连接状态的信息,且未查询的记录达到预先设置的次数阈值方法之后,所述方法还包括:
[0069] 重新下发所述节点对应的运行程序和/或自动运行安装包,并控制所述节点执行装机操作。
[0070] 在本示例性实施例中,如果该节点尝试部署工作连续多次不成功,则可以为该节点重新下发部署所需的数据,控制该节点利用新的数据进行部署操作,提高部署工作的成功率。
[0071] 下面对本发明提供的应用实例作进一步说明:
[0072] 本发明应用实例提供一种基于ironic装机的OpenStack图形化一键部署方法,该方法基于Ironic、kolla、cloud‑init、部署脚实现物理机装机;其中:
[0073] Kolla‑ansible命令行方式部署OpenStack需要给各个节点装机;配置各个节点互信;配置部署节点的global.yml文件和multinode文件,以实现配置VIP、选择需要部署的组件和配置各节点角色等目的。
[0074] 图2为本发明提供的OpenStack系统的部署系统的结构示意图。图2所示系统中:
[0075] 采用图形化选择OpenStack节点及角色,图形化设置vip的界面;设计了根据图形化配置正确部署OpenStack的方法和流程:根据界面配置及模板文件global.yml、multimode生成本次部署的配置文件;生成开机自运行的部署启动脚本deploy.py以及hosts文件;nova创建虚拟机时开启config‑drive,将配置文件及脚本注入各个裸机中并放入相应位置,部署节点deploy脚本探测各个节点是否准备就绪,就绪后执行koll‑ansible deploy‑i/root/multinode命令执行部署操作。实现基于Ironic的OpenStack的图形化一键部署。
[0076] 部署服务Deploy service与OpenStack组件的交互步骤如下:
[0077] 1)调用Ironic API获取Ironic裸机节点,用于选择要部署OpenStack环境的节点。
[0078] 2)调用Neutron API获取网络及子网,用于创建裸机实例网络参数。
[0079] 3)调用Glance API获取镜像列表,用于作为创建裸机实例的镜像参数。
[0080] 4)调用Nova API创建裸机实例来部署OpenStack。并且指定开启Config Drive,调用nova create server时将页面获取的OpenStack节点及角色配置、全局配置、组件服务配置、部署脚本全部生成文件并作为参数。
[0081] 5)Nova通过nova Ironic virt driver调用ironic api进行裸机系统部署,给Openstack节点进行装机操作并注入config drive的文件系统作为单一分区。
[0082] 通过页面配置,Deploy service将配置生成配置文件,通过config drive注入裸机,并通过部署脚本进行OpenStack部署的架构。
[0083] 其中,在部署节点完成后运行部署脚本,部署脚本读取/etc/hosts文件并ping各个节点以判断各个节点的装机是否完毕。完毕后尝试三次部署过程。
[0084] 其中,可以配置本Openstack环境的名称,vip,从Ironic裸机列表中可用节点选取OpenStack节点并指定角色;通过开关配置各个组件是否开启。
[0085] 其中,具体部署流程及方式如下:
[0086] 1)上传包含cloud‑init的OpenStack裸机镜像至glance;
[0087] 2)将配置好BMC的裸机节点注册进Ironic;
[0088] 3)Nova配置允许文件注入;
[0089] 4)页面选择部署OpenStack,进入OpenStack环境配置界面:填写环境名称;
[0090] 5)进入节点配置页面:选择Ironic处于可用状态的裸机,并指定角色,选择一个节点作为部署节点,填写每个节点的主机名称,选择一个provider网络并指定IP地址;
[0091] 6)进入组件配置页面:勾选各个组件服务是否开启;勾选是否开启haproxy,指定vip,点击创建。
[0092] 前端调用Deploy service暴露的Rest Api进行部署OpenStack,Deploy Service从前端传入的参数中生成临时配置文件:global.yml,multimode,hosts,deploy.sh;其中:
[0093] global.yml中包含本OpenStack环境的全局配置、vip信息和组件开启配置数据;
[0094] multimode为ansible配置文件inventory文件;
[0095] hosts文件为OpenStack环境各节点指定ip及用户名的hosts文件;
[0096] deploy.sh为注入到用户选择为部署节点的裸机中首次自启的脚本,用于部署。
[0097] Deploy service生成临时配置文件后依次调用nova api指定用户选择的裸机创建裸机实例,并且指定用户设置的ip,并且部署节点注入全部四个文件到相应目录,其他节点注入除deploy.sh外的其他三个文件。
[0098] 各裸机节点装机完成后,会获取用户指定的ip地址,用户名、三个配置文件均会通过config drive和cloud init注入进相应目录;部署节点的deploy.sh启动开始Openstack的部署,部署流程如下:
[0099] 图3为本发明提供的OpenStack系统的部署方法的流程图。图3所示部署的脚本流程如下:
[0100] 1.读取部署节点的/etc/hosts文件,解析获取本次部署的OpenStack环境各节点ip信息的列表。
[0101] 2.依次ping所有主机,若全部平通进入下一步;若有不通的,sleep 60秒后再次ping。
[0102] 3.运行kolla‑ansible deploy‑i/root/multimode进行部署。
[0103] 4.判断是否部署成功,若成功结束;若失败则判断失败次数是否超过3次,若是,结束;若否,进入下一步。
[0104] 5.运行kolla‑ansible destroy‑i/root/multimode进行清除环境,再次进行第3步。
[0105] 本发明应用实例提供的方法,基于Ironic的裸机服务,设计了图形化配置从页面配置到ironic装机再到脚本利用kolla‑ansible进行部署环境的一键部署,简化了物理机下OpenStack部署的难度,缩短了部署时间,降低了部署门槛,减少了实施压力,加快了OpenStack的拓展。
[0106] 图4为本发明提供的在OpenStack系统中管理节点的装置的结构图。图4所示装置包括:
[0107] 获取模块401,用于获取OpenStack系统中所需部署的节点;
[0108] 配置模块402,用于为所述节点配置运行数据,其中所述运行数据包括网络配置数据和/或应用程序的镜像数据;
[0109] 存储模块403,用于存储所述运行数据至所述节点的预设存储路径中;
[0110] 第一发送模块404,用于发送自动运行安装包,其中所述自动运行安装包用于调用所述存储路径上的数据并对所述数据执行安装操作。
[0111] 在一个示例性实施例中,所述配置模块402包括:
[0112] 获取单元,用于获取所述OpenStack系统中网络和子网的信息;
[0113] 确定单元,用于根据所述OpenStack系统中网络和子网的信息,确定所述节点的网络配置数据。
[0114] 在一个示例性实施例中,所述装置还包括:
[0115] 查询模块,用于在通知所述节点执行网络配置操作后,查询所述节点是否处于正常的网络连接状态;
[0116] 通知模块,用于如果接收到所述节点反馈的处于正常的网络连接状态的信息,则通知所述节点清除所述节点已存储的运行程序和/或自动运行安装包。
[0117] 在一个示例性实施例中,所述装置还包括:
[0118] 所述查询模块,还用于在查询所述节点是否处于正常的网络连接状态之后,如果未接收到所述节点反馈的处于正常的网络连接状态的信息,则按照预先设置的时间间隔,再次查询所述节点是否处于正常的网络连接状态;
[0119] 所述通知模块,用于如果未接收到所述节点反馈的处于正常的网络连接状态的信息,且未查询的记录达到预先设置的次数阈值,则通知所述节点清除所述节点已存储的运行程序和/或自动运行安装包。
[0120] 在一个示例性实施例中,所述装置还包括:
[0121] 管理模块,用于在未接收到所述节点反馈的处于正常的网络连接状态的信息,且未查询的记录达到预先设置的次数阈值装置之后,重新下发所述节点对应的运行程序和/或自动运行安装包,并控制所述节点执行装机操作。
[0122] 本发明提供的装置实施例,获取OpenStack系统中所需部署的节点,为所述节点配置运行数据,其中所述运行数据包括网络配置数据和/或应用程序的镜像数据,存储所述运行数据至所述节点的预设存储路径中,发送自动运行安装包,其中所述自动运行安装包用于调用所述存储路径上的数据并对所述数据执行安装操作,简化了物理机下OpenStack部署的难度,缩短了部署时间,降低了部署门槛,减少了实施压力,加快了OpenStack的拓展。
[0123] 本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD‑ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。