一种运维指令的执行方法、装置及系统
技术领域
本申请涉及计算机技术领域,尤其涉及一种运维指令的执行方法、装置及系统。
背景技术
运维(Operation and maintenance),是指根据业务需要规划信息、网络、服务,通过发布、部署、升级、重启等运维指令,使服务处于长期稳定可用状态。运维指令在执行过程中,需要网络拓扑结构以及上下文,其中,网络拓扑结构(Network Topology,简称拓扑结构)是指用传输介质互连各种设备的物理布局,构成网络的成员间特定的物理的即真实的、或者逻辑的即虚拟的排列方式。上下文(context)是一种属性的有序序列,它们为驻留在环境内的对象定义环境。在对象的激活过程中创建上下文,对象被配置为要求某些服务,如注册、创建、激活、等。在实际的业务操作中,通常利用集群完成各种运维指令,集群是一组相互独立的、通过高速网络互联的计算机(或称设备),它们构成了一个组,并以单一系统的模式加以管理,通过这组计算机软件和/或硬件连接起来高度紧密地协作完成计算任务。
现有技术在执行运维指令时,如图1所示,需要通过技术人员为每种运维指令预先设定(配置)对应的拓扑结构信息以及上下文信息,并分别对应各自的解析器,如图1,当运维指令输入到解析器中,解析器可以根据拓扑结构信息以及上下文信息解析并生成出拓扑结构以及上下文,再将两者输入到执行引擎中,以便执行运维指令。该上下文信息可以包括如IP(Internet Protocol,网络之间互连的协议)列表、运维指令的操作对象等。
但在实际应用中,运维指令会对应多种运维属性,比如,集群(名称、规模)、指令内容、应用(开发)环境、集群中节点(类型、数量),等,并且随着业务量的增加,属性的维度和属性值更加丰富,由于集群的不同、或指令内容的不同、均会导致执行运维指令所需的拓扑结构和上下文存在差别,即使多个运维属性中仅有一个不同,也有可能导致拓扑结构和上下文存在巨大差别。如果按照现有技术的方式执行运维指令,则需要在运维属性发送变化后,由技术人员适配变化后的运维指令,即只要运维指令中的属性发生变化,就需要技术人员修改指令中的拓扑结构信息和上下文信息,显然这种方式效率不高,并且如果拓扑结构以及上下文复杂程度提高,则会进一步降低运维指令的执行效率。
发明内容
本申请实施例提供一种运维指令的执行方法,用于提高运维指令的执行效率。
本申请实施例提供一种运维指令的执行装置,用于提高运维指令的执行效率。
本申请实施例提供一种运维指令的执行系统,用于提高运维指令的执行效率。
本申请实施例采用下述技术方案:
一种运维指令的执行方法,包括:
获取运维指令中的运维属性值;
根据所述属性值、预设拓扑结构信息库以及预设上下文配置库,生成对应所述运维指令的拓扑结构以及上下文集合,所述拓扑结构信息库中包含运维属性值和/或不同运维属性值组合对应的拓扑结构信息,所述上下文配置库中包含运维属性值和/或不同运维属性值组合对应的上下文信息;
根据所述拓扑结构以及所述上下文集合,执行所述运维指令。
优选地,根据所述属性值、预设拓扑结构信息库以及预设上下文配置库,生成对应所述运维指令的拓扑结构以及上下文集合,包括:
根据所述属性值以及预设拓扑结构信息库,生成对应所述运维指令的拓扑结构;
根据所述属性值以及预设上下文配置库,生成对应所述运维指令的上下文集合。
优选地,根据所述属性值以及拓扑结构库,生成对应所述运维指令的拓扑结构,包括:
根据所述属性值中的第一属性值组合以及预设拓扑结构信息库,生成对应所述运维指令的拓扑结构。
优选地,根据所述属性值以及上下文配置库,生成对应所述运维指令的上下文集合,包括:
根据所述属性值中的第二属性值组合以及预设上下文配置库,生成对应所述运维指令的上下文集合。
优选地,根据所述属性值、预设拓扑结构信息库以及预设上下文配置库,生成对应所述运维指令的拓扑结构以及上下文集合,包括:
根据所述属性值以及预设拓扑结构信息库,确定对应所述运维指令的拓扑结构信息;
根据所述属性值以及预设上下文配置库,确定对应所述运维指令的上下文配置信息;
生成包含所述拓扑结构信息以及所述上下文配置信息的最终运维指令;
根据所述最终运维指令,生成对应所述运维指令的拓扑结构以及上下文集合。
一种运维指令的执行装置,包括:获取单元、解析单元、以及执行单元,其中,
所述获取单元,获取运维指令中的运维属性值;
所述解析单元,根据所述属性值、预设拓扑结构信息库以及预设上下文配置库,生成对应所述运维指令的拓扑结构以及上下文集合,所述拓扑结构信息库中包含运维属性值和/或不同运维属性值组合对应的拓扑结构信息,所述上下文配置库中包含运维属性值和/或不同运维属性值组合对应的上下文信息;
所述执行单元,根据所述拓扑结构以及所述上下文集合的组合,执行所述运维指令。
优选地,所述解析单元包括:拓扑生成单元以及上下文解析单元,其中,
所述拓扑生成单元,根据所述属性值以及预设拓扑结构信息库,生成对应所述运维指令的拓扑结构;
所述上下文解析单元,根据所述属性值以及预设上下文配置库,生成对应所述运维指令的上下文集合。
优选地,所述拓扑生成单元,
根据所述属性值中的第一属性值组合以及预设拓扑结构信息库,生成对应所述运维指令的拓扑结构。
优选地,所述上下文解析单元,
根据所述属性值中的第二属性值组合以及预设上下文配置库,生成对应所述运维指令的上下文集合。
优选地,所述解析单元,
根据所述属性值以及预设拓扑结构信息库,确定对应所述运维指令的拓扑结构信息;
根据所述属性值以及预设上下文配置库,确定对应所述运维指令的上下文配置信息;
生成包含所述拓扑结构信息以及所述上下文配置信息的最终运维指令;
根据所述最终运维指令,生成对应所述运维指令的拓扑结构以及上下文集合。
一种运维指令的执行系统,包括:解析器、执行引擎、上下文配置库以及拓扑结构信息库,其中,
所述解析器,
获取运维指令中的运维属性值;
根据所述属性值、预设拓扑结构信息库以及预设上下文配置库,生成对应所述运维指令的拓扑结构以及上下文集合;
所述拓扑结构信息库,包含运维属性值和/或不同运维属性值组合对应的拓扑结构信息;
所述上下文配置库,包含运维属性值和/或不同运维属性值组合对应的上下文信息;
所述执行引擎,
根据所述拓扑结构以及所述上下文集合的组合,执行所述运维指令。
优选地,所述解析器包括:拓扑生成器以及上下文解析器,其中,
所述拓扑生成器,根据所述属性值以及预设拓扑结构信息库,生成对应所述运维指令的拓扑结构;
所述上下文解析器,根据所述属性值以及预设上下文配置库,生成对应所述运维指令的上下文集合。
优选地,所述拓扑生成器,
根据所述属性值中的第一属性值组合以及预设拓扑结构信息库,生成对应所述运维指令的拓扑结构。
优选地,所述上下文解析器,
根据所述属性值中的第二属性值组合以及预设上下文配置库,生成对应所述运维指令的上下文集合。
优选地,所述解析器,
根据所述属性值以及预设拓扑结构信息库,确定对应所述运维指令的拓扑结构信息;
根据所述属性值以及预设上下文配置库,确定对应所述运维指令的上下文配置信息;
生成包含所述拓扑结构信息以及所述上下文配置信息的最终运维指令;
根据所述最终运维指令,生成对应所述运维指令的拓扑结构以及上下文集合。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:通过自定义的方式预先为包含不同属性值和/或属性值组合的运维指令分别预设拓扑结构信息库和上下文配置库,当接收并获取到运维指令中包含的运维属性值后,根据运维属性值和/或运维属性值的组合,从拓扑结构信息库和上下文配置库中查找对应的结构信息和配置信息,再将两种信息包含进运维指令中,然后通过解析器解析出拓扑结构以及上下文集合,最终通过拓扑结构以及上下文集合执行运维指令。相比现有技术每次在属性值变化后都需要技术人员进行适配而言,通过预先自定义的方式提高了执行运维指令的效率。尤其是在运维指令较为复杂时,根据属性值可以从预设的信息库和配置库中迅速找到所需的信息。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为现有技术提供的执行运维指令的示意图;
图2为本申请实施例1提供的运维指令的执行方法的流程示意图;
图3为本申请实施例1提供的运维指令的执行方法的示意图;
图4为本申请实施例1提供的拓扑结构信息库的示意图;
图5为本申请实施例1提供的拓扑结构信息库的示意图;
图6为本申请实施例1提供的上下文配置库的示意图;
图7为本申请实施例1提供的上下文配置库的示意图;
图8为本申请实施例2提供的运维指令的执行方法的流程示意图;
图9为本申请实施例2提供的运维指令的执行方法的示意图;
图10为本申请实施例3提供的业务处理装置的结构图;
图11为本申请实施例4提供的业务处理系统的结构图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
如前所述,现有技术执行运维指令的示意如图1所示,每当运维指令对应的运维属性值发生变化后,都需要技术人员及时调整运维指令中包含的拓扑结构信息以及上下文信息,以便在解析时,能够生成该运维指令所需的拓扑结构以及上下文,但是属性的维度和属性值更加丰富,迫使技术人员投入大量时间和精力适应各种运维指令,并且如果拓扑结构以及上下文较为复杂,则需要更多的时间和精力,显然这种方式效率不高。基于此缺陷,本申请提供了一种运维指令的执行方法,用于提高运维指令的执行效率,从而更加便捷地执行运维指令。该方法的流程示意图如图2和图3所示,假设执行主体为运维服务器,该方法包括下述步骤:
步骤11:获取运维指令中的运维属性值。
前文已经介绍,运维指令会对应多种运维属性,比如,集群(名称、规模)、指令内容、应用(开发)环境、集群中节点(类型、数量),等。所以在发送运维指令中,需要包含必要的运维属性值,比如集群名称:集群1;指令内容:发布部署;开发环境:Java;集群中节点:创建服务器、创建数据库、创建负载均衡等。当接收到运维指令时,可以获取其中的运维属性值。
步骤12:根据该属性值以及预设拓扑结构信息库,确定对应该运维指令的拓扑结构信息。
由于现有技术中运维指令的属性值每次变化后,都需要技术人员去适应,效率很低,所以可以预先设置(创建)一个如图4所示的拓扑结构信息库,用于存储与属性值对应的拓扑结构,比如集群名称:集群1对应的拓扑结构为0001,开发环境:Java对应的拓扑结构为0003,具体地,该拓扑结构信息库中可以只存储一个拓扑结构信息的唯一标识,并在对应的关系数据库中存储具体的拓扑结构信息。在实际应用中,一个运维指令通常包含多个运维属性值,比如对于指令内容为“发布部署”的运维指令,还包含了“集群名称:集群1”、“开发环境:Java”,所以在预设拓扑结构信息库时,不仅可以根据单一运维属性值预设对应的拓扑结构信息,还可以如图5所示,根据不同运维属性值组合预设对应的拓扑结构信息。所以在一种实施方式中,本步骤可以包括:根据该属性值中的属性值组合以及预设拓扑结构信息库,确定对应该运维指令的拓扑结构信息。通过预先设置拓扑结构信息库,也就达到了根据不同运维属性值和/或不同运维属性值组合自定义拓扑结构的目的,通常在实际应用中,可以根据属性值和/或属性值组合的可能性,不断完善拓扑结构信息库,当接收到运维指令需要确定对应该运维指令的拓扑结构信息时,可以快速的确定出来,所以就需要一直更新维护这个拓扑结构信息库。
步骤13:根据该属性值以及预设上下文配置库,确定对应该运维指令的上下文配置信息。
与步骤12类似,本步骤中,也可以预先设置(创建)一个如图6所示的上下文配置库,用于存储与属性值对应的上下文配置信息,该上下文配置库中可以只存储一个唯一标识,也可以存储具体的上下文配置信息,比如,配置信息可以是以组为单位的配置值,形成配置脚本,这里配置脚本的存在形式可以包含但不限于一种可编程脚本;一种DSL(Domain-Specific Language,领域特定语言);以及映射系统中的代码片段,等。
上文已经提到在实际应用中,一个运维指令通常包含多个运维属性值,并且对于上下文而言,更加注重集群中各节点的上下文的配置,所以,在预设上下文配置库时,也可以按照如图7所示,根据不同运维属性值组合预设对应的上下文配置信息。所以在一种实施方式中,本步骤可以包括:根据该属性值中的属性值组合以及预设上下文配置库,确定对应该运维指令的上下文信息。通过预先设置上下文配置库,也就达到了根据不同运维属性值和/或不同运维属性值组合自定义上下文的目的,与拓扑结构信息库类似,也可以根据属性值和/或属性值组合的可能性,不断完善上下文配置库,当接收到运维指令需要确定对应该运维指令的上下文配置信息时,可以快速确定出来,所以就需要一直更新维护这个上下文配置库。
需要说明的是,步骤12和步骤13的执行顺序可以灵活控制,即可以任意一个在先,也可以同时进行。
步骤14:生成包含该拓扑结构信息以及该上下文信息的最终运维指令。
在步骤12和步骤13中,已经确定出了运维指令所需的拓扑结构信息,以及上下文配置信息,也就是通过预设的拓扑结构信息库和上下文配置库,完成了为运维指令预先设定对应的拓扑结构信息以及上下文配置信息的组合,此时就可以将该拓扑结构信息以及该上下文配置信息写入到运维指令中,生成新的运维指令,可以称为最终运维指令。
步骤15:根据生成的最终运维指令,生成对应该运维指令的拓扑结构以及上下文集合。
在步骤14中生成了包含拓扑结构信息以及上下文配置信息的运维指令,本步骤实际就与现有技术类似,通过解析器,对最终运维指令中的信息进行解析,生成出拓扑结构以及上下文集合,该上下文集合中包含至少一个上下文,但在实际应用中,通常一个集群包含多个节点,所以通常上下文集合中包含多个上下文。
步骤16:根据生成的拓扑结构以及上下文集合,执行该运维指令。
在前一步骤中生成了运维指令所需的拓扑结构以及上下文集合,本步骤也可以与现有技术类似,将两者共同作为输入,输入到执行引擎中,执行运维指令。
采用实施例1提供的方法,通过自定义的方式预先为包含不同属性值和/或属性值组合的运维指令分别预设拓扑结构信息库和上下文配置库,当接收并获取到运维指令中包含的运维属性值后,根据运维属性值和/或运维属性值的组合,从拓扑结构信息库和上下文配置库中查找对应的结构信息和配置信息,再将两种信息包含进运维指令中,然后通过解析器解析出拓扑结构以及上下文集合,最终通过拓扑结构以及上下文集合执行运维指令。相比现有技术每次在属性值变化后都需要技术人员进行适配而言,通过预先自定义的方式提高了执行运维指令的效率。尤其是在运维指令较为复杂时,根据属性值可以从预设的信息库和配置库中迅速找到所需的信息。
实施例2
在实施例1中,需要先将执行运维指令需要的拓扑结构信息与上下文配置信息包含(写入)进运维指令中,再作为输入,解析出拓扑结构和上下文集合。虽然只要运维指令中的属性值发生变化,就可以修改出包含拓扑结构信息与上下文配置信息的运维指令,但显然这种通过先将拓扑结构信息与上下文配置信息组合完成再解析的方式,对于执行运维指令中适应不同运维属性而言灵活度不高。比如,属性值(如集群中的节点)实时变化,那么每次都要先将拓扑结构信息与上下文配置信息组合再解析,显然也会影响执行运维指令的效率。所以基于此缺陷,并在实施例1的基础上,基于与实施例1相同的发明思路,本申请实施例提供另一种运维指令的执行方法,用于在执行运维指令时提高适应运维属性值的灵活度,进而提高运维指令的执行效率。该方法的流程示意图如图8和图9所示,假设执行主体为运维服务器,该方法包括下述步骤:
步骤21:获取运维指令中的运维属性值。
本步骤与实施例1中的步骤11类似,均是获取到运维指令中的运维属性值,不再赘述。
步骤22:根据该属性值以及预设拓扑结构信息库,生成对应该运维指令的拓扑结构。
步骤23:根据该属性值以及预设上下文配置库,生成对应该运维指令的上下文集合。
在实施例1中的步骤12和步骤13中,介绍了预设拓扑结构信息库以及预设上下文配置库,并介绍了其中包含属性值对应的拓扑结构信息以及预设上下文配置信息,这两个步骤中,就可以根据步骤21获取的属性值,分别从预设拓扑结构信息库以及预设上下文配置库中,确定(找到)对应的预设拓扑结构信息以及预设上下文配置信息,并分别进行解析,生成对应该运维指令的拓扑结构以及上下文集合。
在步骤12和步骤13中,已经介绍一个运维指令通常包含多个运维属性值,所以,步骤12还可以包括:根据该属性值中的第一属性值组合以及预设拓扑结构信息库,生成对应该运维指令的拓扑结构;步骤13还可以包括:根据该属性值中的第二属性值组合以及预设上下文配置库,生成对应该运维指令的上下文集合。比如有5个属性值:属性值a、属性值b、属性值c、属性值d、属性值e、第一属性值组合就可以是属性值a、属性值b、属性值c的组合,而第二属性值组合,就可以是属性值a、属性值c、属性值e的组合。与步骤12和步骤13类似,步骤22和步骤23的执行顺序也可以是任意一个在先,或同时执行。
步骤24:根据生成的拓扑结构以及所述上下文集合,执行该运维指令。
本步骤与及实施例1中步骤16介绍的实现方式类似,不再赘述。
采用实施例2提供的方法,在获取出接收到的运维指令包含的属性值后,分别根据属性值和/或属性值组合,分别从拓扑结构信息库和上下文配置库中确定出拓扑结构信息和上下文配置信息,并解析生成出拓扑结构和上下文集合,再将两者组合作为输入,通过执行引擎执行运维指令,在实施例1通过自定义预设拓扑结构信息库和上下文配置库的基础上,先根据属性值将运维指令所需的拓扑结构和上下文集合生成出来,再进行组合并执行,相对于实施例1中先组合成新的运维指令,再生成拓扑结构和上下文集合而言,在属性值变化频繁的情况下,无需多次生成指令再解析,而是仅解析变化的部分即可,在执行运维指令时提高适应运维属性值的灵活度,进而提高运维指令的执行效率。
实施例3
基于相同的发明构思,实施例3提供了一种运维指令的执行装置,用于提高运维指令的执行效率。图10为该装置的结构图,该装置包括:获取单元31、解析单元32、以及执行单元33,其中,
获取单元31,可以获取运维指令中的运维属性值;
解析单元32,可以根据属性值、预设拓扑结构信息库以及预设上下文配置库,生成对应运维指令的拓扑结构以及上下文集合,其中,拓扑结构信息库中包含运维属性值和/或不同运维属性值组合对应的拓扑结构信息,上下文配置库中包含运维属性值和/或不同运维属性值组合对应的上下文配置信息;
执行单元33,可以根据拓扑结构以及上下文集合的组合,执行运维指令。
在一种实施方式中,解析单元32包括:拓扑生成单元以及上下文解析单元,其中,
拓扑生成单元,可以根据属性值以及预设拓扑结构信息库,生成对应运维指令的拓扑结构;
上下文解析单元,可以根据属性值以及预设上下文配置库,生成对应运维指令的上下文集合。
在一种实施方式中,拓扑生成单元,可以
根据属性值中的第一属性值组合以及预设拓扑结构信息库,生成对应运维指令的拓扑结构。
在一种实施方式中,上下文解析单元,可以
根据属性值中的第二属性值组合以及预设上下文配置库,生成对应运维指令的上下文集合。
在一种实施方式中,解析单元32,可以
根据属性值以及预设拓扑结构信息库,确定对应运维指令的拓扑结构信息;
根据属性值以及预设上下文配置库,确定对应运维指令的上下文信息;
生成包含拓扑结构信息以及上下文信息的最终运维指令;
根据最终运维指令,生成对应运维指令的拓扑结构以及上下文集合。
实施例4
基于相同的发明构思,实施例4提供了一种运维指令的执行系统,用于提高运维指令的执行效率。图11为该系统的结构图,该系统40包括:解析器和执行引擎,其中,
解析器,可以
获取运维指令中的运维属性值;
根据属性值、预设拓扑结构信息库以及预设上下文配置库,生成对应运维指令的拓扑结构以及上下文集合;
拓扑结构信息库,可以包含运维属性值和/或不同运维属性值组合对应的拓扑结构信息;
上下文配置库,可以包含运维属性值和/或不同运维属性值组合对应的上下文配置信息;
执行引擎,可以
根据拓扑结构以及上下文集合的组合,执行运维指令。
在一种实施方式中,解析器包括:拓扑生成器以及上下文解析器,其中,
拓扑生成器,可以根据属性值以及预设拓扑结构信息库,生成对应运维指令的拓扑结构;
上下文解析器,可以根据属性值以及预设上下文配置库,生成对应运维指令的上下文集合。
在实施例1中的步骤13中已经介绍,上下文配置库中可以存储配置值,形成配置脚本,所以该系统中的上下文解析器可以通过配置脚本中的脚本内容进行解析。
在一种实施方式中,拓扑生成器,可以
根据属性值中的第一属性值组合以及预设拓扑结构信息库,生成对应运维指令的拓扑结构。
在一种实施方式中,上下文解析器,可以
根据属性值中的第二属性值组合以及预设上下文配置库,生成对应运维指令的上下文集合。
在一种实施方式中,解析器,可以
根据属性值以及预设拓扑结构信息库,确定对应运维指令的拓扑结构信息;根据属性值以及预设上下文配置库,确定对应运维指令的上下文配置信息;生成包含拓扑结构信息以及上下文配置信息的最终运维指令;根据最终运维指令,生成对应运维指令的拓扑结构以及上下文集合。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。