基于云测试平台的设备调度方法、装置及系统
技术领域
本发明涉及互联网技术领域,具体涉及一种基于云测试平台的设备调度方法、装置及系统。
背景技术
云测试是一种基于云计算的新型测试方案,其能够提供一套完整的测试环境,测试人员利用虚拟桌面等手段登陆该测试环境即可立即展开测试。通过云测试方案,将软硬件安装、环境配置以及环境维护等代价转移给了云测试平台的提供者,使得测试人员直接利用云测试平台中提供的软硬件配置就能快速完成测试。通过云测试方案能够显著节约测试成本、且大幅提高测试效率。
由于云测试平台中包含海量的设备,且可能同时处理多个来自不同用户终端的测试请求,每个测试请求往往会涉及到数十个甚至更多个设备,所以,云测试平台接收到这些测试请求后,需要根据各个测试请求中所涉及到的设备的设备标识,将测试请求中包含的测试任务分别分配给相应的设备执行。在上述过程中,由于涉及到大量的测试任务以及海量的设备,如果任务分配不合理,很可能会造成某些测试任务因其所涉及到的设备一直没有空闲而迟迟无法执行,而与此同时,还可能造成某些设备一直闲置却未被有效利用。
因此,如何对平台中的各个设备进行合理的任务分配,使得所有设备能够有效利用成为一个亟待解决的问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于云测试平台的设备调度方法、装置及系统。
根据本发明的一个方面,提供了一种基于云测试平台的设备调度方法,其包括:每当接收到测试任务后,将测试任务按照其中包含的设备标识存储到对应的任务等待队列;监测云测试平台中各个设备的状态,每当监测到从运行状态转变为空闲状态的设备时,查找与设备的设备标识对应的任务等待队列;当任务等待队列中有待执行的任务时,将待执行的任务分配给设备,并将已分配的任务从任务等待队列中删除。
依据本发明的另一方面,提供了一种基于云测试平台的设备调度装置,其包括:存储模块,适于每当接收到测试任务后,将测试任务按照其中包含的设备标识存储到对应的任务等待队列;查找模块,适于监测云测试平台中各个设备的状态,每当监测到从运行状态转变为空闲状态的设备时,查找与设备的设备标识对应的任务等待队列;分配模块,适于当任务等待队列中有待执行的任务时,将待执行的任务分配给设备,并将已分配的任务从任务等待队列中删除。
依据本发明的又一方面,提供了一种基于云测试平台的任务分配设备调度系统,其包括:多个客户端以及上述的基于云测试平台的设备调度装置。
在本发明提供的基于云测试平台的设备调度方法、装置及系统中,空闲设备能够通过任务等待队列主动找到待其执行的任务,因此,当平台中出现一个空闲设备时,只要有其能够执行的任务,该空闲设备就能第一时间得以利用。由此可见,通过本发明中的方法、装置及系统,能够对平台中的各个设备进行合理的任务分配,使得所有设备能够有效利用。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的基于云测试平台的设备调度方法的流程图;
图2示出了根据本发明一个具体实施例的基于云测试平台的设备调度方法的流程图;
图3示出了根据本发明一个实施例的基于云测试平台的设备调度装置的结构图;以及
图4示出了根据本发明一个实施例的基于云测试平台的设备调度系统的结构图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种基于云测试平台的设备调度方法、装置及系统,至少能够解决现有技术中无法对云测试平台中的各个设备进行合理的任务分配,使得所有设备能够有效利用的问题。
实施例一、
图1示出了根据本发明一个实施例的基于云测试平台的设备调度方法的流程图,如图1所示,该方法包括如下步骤:
步骤S110:每当接收到测试任务后,将测试任务按照其中包含的设备标识存储到对应的任务等待队列。
其中,可以通过将用户终端发出的测试请求中包含的任务类型乘以测试请求中包含的设备数量来确定测试任务的数量,因此,每一测试任务仅由一款设备运行,根据运行该任务的设备的设备标识将该测试任务存储到相应标识的任务等待队列中。其中,任务等待队列为多个按照设备标识进行区分的队列,每个任务等待队列对应唯一的设备标识,用于存储该设备标识所对应的所有待执行的任务。
步骤S120:监测云测试平台中各个设备的状态,每当监测到从运行状态转变为空闲状态的设备时,查找与该设备的设备标识对应的任务等待队列。
可选地,为了防止因同时出现大量从运行状态转变为空闲状态的设备而遗漏其中的某一设备,在本步骤中,可以先将监测到的从运行状态转变为空闲状态的设备加入预设的设备空闲总队列中,再从该设备空闲总队列中取出设备,并查找与取出设备的设备标识对应的任务等待队列。
具体地,在监测各个设备的状态时可以灵活采取多种方式。例如,在云测试平台中,每当一个设备上线后,就将其状态作为心跳包发送给服务器,即:每个上线的设备每隔一定的时间间隔就向服务器汇报一次状态,使服务器能够及时了解其当前状态。或者,每个上线的设备也可以仅在其状态发生改变时向服务器汇报,使服务器及时了解其变化后的状态。上述两种方式既可以单独使用,也可以结合使用。除了上述两种方式外,还可以由服务器通过一个专门的进程来探测各个设备的状态,总之,本领域技术人员能够通过多种方式来监测设备状态,本发明对此不作限定。
上述步骤S110和步骤S120之间没有严格的先后顺序,在实际情况中,可以由不同的线程并行执行。
步骤S130:当任务等待队列中有待执行的任务时,将待执行的任务分配给该设备,并将已分配的任务从任务等待队列中删除。
在上述的步骤S110-S130中,通过任务等待队列使得空闲设备能够从海量的测试任务中快速查找到待其执行的任务,因此,只要平台中有该空闲设备能够执行的任务,该空闲设备就能立即得以利用。具体地,通过多个任务等待队列对测试任务进行分类存储,每一任务等待队列中仅存储一种设备标识所对应的测试任务,从而能够根据设备标识迅速查找到对应的测试任务,在云测试平台包含大量测试任务的应用场景中大幅提高了查询速度。另外,在本发明中还可以将一个测试请求分解为多个测试任务,每个测试任务仅由一款设备运行,因此,在为各个设备分配任务时可以直接根据测试任务中包含的设备标识进行分配,由此一来,能够使多个测试任务并行分配,从而大幅提高了分配效率。
可选地,为了处理暂时因没有任务执行而空闲下来的设备,上述方法还可以进一步包括下述的步骤S140。
步骤S140:当任务等待队列中没有待执行的任务时,将该设备加入与其设备标识对应的设备空闲队列;定期获取该设备空闲队列对应的设备标识,查找与获取到的设备标识对应的任务等待队列,当任务等待队列中有待执行的任务时,将待执行的任务分配给设备空闲队列中的可用设备,并将已分配的任务从任务等待队列中删除。
通过步骤S140,能够将暂时因没有任务执行而空闲下来的设备按照其设备标识存储到对应的设备空闲队列中,通过定期查询设备空闲队列及其对应的任务等待队列,可以在出现测试任务时及时为其分配任务,从而确保所有设备能够有效利用。具体地,由于设备空闲队列也是多个按照设备标识进行区分的队列,因此,直接根据设备空闲队列中的设备标识来查询相应标识的任务等待队列,从而大幅缩小了查询范围,提高了查询速度,进而提高了设备调度的效率。
实施例二、
图2示出了本发明一个具体实施例提供的基于云测试平台的设备调度方法的流程图,如图2所示,该方法包括如下步骤:
步骤S210:根据接收到的用户终端发出的测试请求来确定测试任务。
首先,根据用户终端发出的测试请求来确定其中包含的任务类型以及设备数量。其中,任务类型包括多种,例如可以是UI遍历测试、兼容覆盖测试、安全性能测试以及脚本测试等多种类型。设备数量是指用来运行各种类型的任务的终端设备的数量。然后,将测试请求中包含的任务类型的数量乘以设备的数量就可以得到测试任务的总数量。例如,假设用户终端发出的测试请求中包含的任务类型为UI遍历测试和兼容覆盖测试,终端设备的数量为16,通过任务类型数乘以终端设备数得到一个2*16的矩阵,该矩阵中包含32个元素,每个元素分别对应一个测试任务,则该测试请求中包含的测试任务的总数量为32。
由此可见,在本发明中所说的一个测试任务,是指在一款终端设备上运行的一种类型的任务。其中,一款终端设备是由该终端设备的品牌/型号以及该终端设备上安装的系统版本号唯一标识的。例如,三星S4以及其上安装的安卓版本共同构成一款终端设备。本实施例中的终端设备的品牌包括但不限于:HTC、华为、步步高、谷歌以及金立等,系统版本号包括但不限于:4.0.3、4.1.2、4.2.1、4.2.2、4.3、4.4.2以及4.4.4等,通过上述品牌与系统版本号的组合能够定义多款不同的终端设备。
步骤S220:针对每一个测试任务,获取该测试任务中包含的设备标识。
由于一个测试任务是指在一款终端设备上运行的一种类型的任务,因此,该测试任务中包含的设备标识即为运行该任务的终端设备的设备标识。例如,假设一个测试任务为“对金立E64.2.1这一款设备的兼容覆盖情况进行测试”,则该测试任务中包含的设备标识为“金立E64.2.1”,该设备标识由品牌“金立”、型号“E6”以及系统版本号“4.2.1”这三项内容共同组成。
当一个测试请求中包含多个测试任务时,分别通过上述方式获取每一个测试任务中包含的设备标识。
步骤S230:根据测试任务中包含的设备标识查找与该设备标识对应的设备空闲队列,当设备空闲队列中有可用设备时,执行步骤S240;当设备空闲队列中没有可用设备时,执行步骤S250。
其中,设备空闲队列为多个按照设备标识进行区分的队列,每个设备空闲队列对应唯一的设备标识,用于存储该设备标识所对应的所有空闲状态的设备。由于云测试平台能够同时处理大量用户终端提交的测试请求,因此,该平台中包含海量的设备,对于每一款设备来说,往往有多个相同的设备。
表1和表2分别列出了设备空闲队列的两种可能状态:
表1
表2
假设云测试平台中共包含四款设备,每款设备部署了三个完全相同的设备,即云测试平台中共有12个设备(此数据仅为便于理解,实际情况中包含海量的设备)。表1示出了当云测试平台中没有正在执行的测试任务,因而各个设备均处于空闲状态时的设备空闲队列。从表1中可以看出,设备空闲队列共有四个,每个队列具有唯一的设备标识,用于存储该设备标识所对应的所有空闲状态的设备。表2示出了当云测试平台中有多个正在执行的测试任务时的设备空闲队列。从表2中可以看出,设备标识为“金立E64.2.1”的设备空闲队列为空(具体实现时,既可以将该队列设置为空队列,也可以直接将该队列删除),其中没有任何设备,则说明“金立E64.2.1”这一款设备全部处于运行状态;设备标识为“谷歌Nexus44.4.4”的设备空闲队列中仅有一台设备,则说明“金立E64.2.1”这一款设备中的其余两台设备正处于运行状态;设备标识为“HUAWEIY5114.2.2”和“金立GiONEE4.1.2”的设备空闲队列中均有三台设备,则说明这两款设备全部处于空闲状态。表1和表2中以各款设备的数量均为三台为例进行说明,在实际情况中,也可以根据各款设备的利用率来设置其数量,从而将热门设备设置为更多的数量,而将非热门设备设置为较少的数量。
假设在本步骤中,设备空闲队列如表2所示。如果测试任务中包含的设备标识为“谷歌Nexus44.4.4”,则确定与该设备标识对应的设备空闲队列中有可用设备,因而执行步骤S240。如果测试任务中包含的设备标识为“金立E64.2.1”,则确定与该设备标识对应的设备空闲队列中没有可用设备,因而执行步骤S250。
步骤S240:将测试任务分配给设备空闲队列中的可用设备。
例如,当测试任务中包含的设备标识为“谷歌Nexus44.4.4”时,与该设备标识对应的设备空闲队列中有一个可用设备“谷歌Nexus44.4.4(1)”,因此,将该测试任务分配给该可用设备执行。同时,将该可用设备从设备空闲队列中删除,因此,执行本步骤后,设备标识为“谷歌Nexus44.4.4”的设备空闲队列为空。
步骤S250:将测试任务按照其中包含的设备标识存储到对应的任务等待队列。
例如,当测试任务中包含的设备标识为“金立E64.2.1”时,与该设备标识对应的设备空闲队列中没有可用设备,因此,该测试任务暂时无法执行,这时,将该测试任务按照其中包含的设备标识“金立E64.2.1”存储到对应的任务等待队列。其中,任务等待队列为多个按照设备标识进行区分的队列,每个任务等待队列对应唯一的设备标识,用于存储该设备标识所对应的所有待执行的任务。表3列出了任务等待队列的一种可能状态:
表3
通过表3可以看出,由于“金立E64.2.1”为热门设备,其对应的设备空闲队列为空,因此,当前有三个测试任务位于设备标识为“金立E64.2.1”的任务等待队列中排队。
在上述各个步骤中仅以一个测试任务为例进行说明,当测试任务为多个时,分别对每个测试任务执行上述的处理步骤即可。由此可见,在上述的步骤S210至步骤S250中,每当接收到新的测试任务时,根据该测试任务中包含的设备标识查找与该设备标识对应的设备空闲队列,并从设备空闲队列中提取可用设备来执行该任务,当设备空闲队列中没有可用设备时,则将该测试任务按照其中包含的设备标识存储到对应的任务等待队列中排队。通过设备空闲队列,能够使测试任务主动找到空闲设备,因此,只要系统中有空闲设备,该测试任务就能第一时间得以执行。
另外,为了使任务等待队列中待执行的测试任务能够在平台中出现空闲设备时第一时间得以执行,本实施例中的方法还进一步包括下述的步骤S201至步骤S205。其中,下述的步骤S201至步骤S205与上述的步骤S210至步骤S250之间通过单独的进程并行执行。
步骤S201:监测云测试平台中各个设备的状态,每当监测到从运行状态转变为空闲状态的设备时,将从运行状态转变为空闲状态的设备加入预设的设备空闲总队列中。
具体地,在监测各个设备的状态时可以灵活采取多种方式。例如,在云测试平台中,每当一个设备上线后,就将其状态作为心跳包发送给服务器,即:每个上线的设备每隔一定的时间间隔就向服务器汇报一次状态,使服务器能够及时了解其当前状态。或者,每个上线的设备也可以仅在其状态发生改变时向服务器汇报,使服务器及时了解其变化后的状态。上述两种方式既可以单独使用,也可以结合使用。除了上述两种方式外,还可以由服务器通过一个专门的进程来探测各个设备的状态,总之,本领域技术人员能够通过多种方式来监测设备状态,本发明对此不作限定。
每当监测到一个设备从运行状态转变为空闲状态时,将其加入预设的设备空闲总队列中。该设备空闲总队列与上述的设备空闲队列存在如下区别:设备空闲总队列为一个存储有各种设备标识所对应的空闲设备的队列,其用于对刚刚从运行状态转变为空闲设备的设备进行临时存储。因此,当云测试平台处于初始状态时,该设备空闲总队列为空,只有当云测试平台中有设备运行起来,且有设备从运行状态转变为空闲状态时才将其加入该设备空闲总队列中,该设备空闲总队列相当于一个临时存储空闲设备的容器。
步骤S202:从设备空闲总队列中取出设备,并查找与取出设备的设备标识对应的任务等待队列。
由于设备空闲总队列用于临时存储空闲设备,因此,在云测试平台中有一个专门的进程负责探测设备空闲总队列中是否有空闲设备,每当探测到设备空闲总队列中有空闲设备时,就从该设备空闲总队列中取出设备,并查找与取出设备的设备标识对应的任务等待队列。由此可见,设置设备空闲总队列的作用在于:将从运行状态转变为空闲状态的设备集中起来查询,以防止当系统中同时出现大量从运行状态转变为空闲状态的设备时,因设备过多而遗漏某一设备的情况发生。在实际情况中,设备空闲总队列的设置并不是必须的,在本发明其他的实施例中也可以不设置设备空闲总队列,而灵活采用其他方式实现,只要能够针对每一个从运行状态转变为空闲状态的设备执行下述的各个步骤即可。
步骤S203:判断与取出设备的设备标识对应的任务等待队列中有无待执行的任务。当与取出设备的设备标识对应的任务等待队列中有待执行的任务时,执行步骤S204;当与取出设备的设备标识对应的任务等待队列中没有待执行的任务时,执行步骤S205。
步骤S204:将待执行的任务分配给该设备。
继续参照表3,如果从设备空闲总队列中取出的设备的设备标识为“金立E64.2.1”,通过查找该设备标识所对应的任务等待队列,确定有三个等待该设备执行的任务,此时,从任务等待队列中选择一个任务分配给该设备执行。当任务等待队列中有多个任务时,既可以按照队列中的先后顺序进行选择,也可以根据测试任务中包含的权重值优先选择权重值较大的测试任务,从而通过将重要性高和/或时间紧迫的测试任务设置为较高的权重值而使其能够优先执行。由此可见,通过对平台中每一个刚刚空闲下来的设备执行上述步骤,能使其迅速找到待其执行的任务。因此,每当平台中新出现一个从运行状态转变为空闲状态的设备时,只要有等待该设备执行的任务,就能使该设备第一时间得以利用。
步骤S205:将该设备加入与该设备的设备标识对应的设备空闲队列。
继续参照表3,如果从设备空闲总队列中取出的设备的设备标识为“金立GiONEE4.1.2”,通过查找该设备标识所对应的任务等待队列,确定没有等待该设备执行的任务,此时,将该设备加入与该设备的设备标识对应的设备空闲队列(设备空闲队列的具体形式可参照表2)。由于每当平台中新增一个测试任务时都会首先查询对应的设备空闲队列,因此,通过将暂时没有任务执行的设备加入到设备空闲队列中,只要平台中新出现一个能由该设备执行的测试任务,就能第一时间将该设备利用起来。
通过上述的步骤S201-S205,使空闲设备能够主动找到待其执行的任务,该过程类似于回调机制,在具体编程时可以采用回调方式来实现。具体地,当一个测试任务因暂时没有可用设备而进入任务等待队列中排队之后,只要与该测试任务相对应的设备出现了空闲就会产生一次回调过程,使该测试任务得以执行。上述回调过程可通过一个单独的线程来实现,由于平台中有大量的设备,每个空闲下来的设备都可以通过对应的线程来回调待其执行的任务,因此,具体实现时可采取多线程并行执行的方式,以提高运行效率。
综上所述,通过步骤S210-S250,测试任务能够通过设备空闲队列主动找到相关的空闲设备,因此,每当接收到一个测试任务时,只要其相关的设备空闲,该测试任务就能第一时间得以执行。通过步骤S201-S205,空闲设备能够通过任务等待队列主动找到待其执行的任务,因此,每当平台中出现一个空闲设备时,只要有其能够执行的任务,该空闲设备就能第一时间得以利用。因此,通过步骤S210-S250以及与其并行执行的步骤S201-S205,既能够根据测试任务查找空闲设备,又能够根据空闲设备查找测试任务,由此形成一个闭环,从而能够对平台中的各个设备进行合理的任务分配,使得所有设备能够有效利用、且所有任务能够高效执行。
实施例二为本发明的一个优选实施例,本领域技术人员能够理解的是,其中的部分步骤并不是必须的,例如也可以省略其中的步骤S210-S250。另外,本领域技术人员还可以对实施例一以及实施例二中的各个步骤进行各种组合或变形,例如,实施例一中的步骤S140也可以应用到实施例二中,例如,可以在实施例二的步骤S205之后进一步包括实施例一中的步骤S140中的定期查询设备空闲队列的步骤。
图3示出了根据本发明一个实施例的基于云测试平台的设备调度装置300的结构图。该装置300可以通过云测试平台中的一台或多台云服务器来实现。如图3所示,该装置300包括:
存储模块31,适于每当接收到测试任务后,将所述测试任务按照其中包含的设备标识存储到对应的任务等待队列;
查找模块32,适于监测所述云测试平台中各个设备的状态,每当监测到从运行状态转变为空闲状态的设备时,查找与所述设备的设备标识对应的任务等待队列;
分配模块33,适于当所述任务等待队列中有待执行的任务时,将所述待执行的任务分配给所述设备,并将已分配的任务从所述任务等待队列中删除。
可选地,所述分配模块33进一步适于:当所述任务等待队列中没有待执行的任务时,将所述设备加入与其设备标识对应的设备空闲队列;定期获取所述设备空闲队列对应的设备标识,查找与获取到的设备标识对应的任务等待队列,当所述任务等待队列中有待执行的任务时,将所述待执行的任务分配给所述设备空闲队列中的可用设备,并将已分配的任务从所述任务等待队列中删除。
其中,所述查找模块32具体用于:将所述从运行状态转变为空闲状态的设备加入预设的设备空闲总队列,从所述设备空闲总队列中取出设备,并查找与取出设备的设备标识对应的任务等待队列。
其中,所述存储模块31进一步用于:通过将用户终端发出的测试请求中包含的任务类型乘以所述测试请求中包含的设备数量来确定所述测试任务的数量。
其中,所述设备空闲队列为多个按照设备标识进行区分的队列,每个设备空闲队列对应唯一的设备标识,用于存储该设备标识所对应的所有空闲状态的设备;所述任务等待队列为多个按照设备标识进行区分的队列,每个任务等待队列对应唯一的设备标识,用于存储该设备标识所对应的所有待执行的任务。
上述各个模块的具体工作方式可参照方法实施例中相应部分的描述,此处不再赘述。
图4示出了根据本发明一个实施例的基于云测试平台的设备调度系统的结构图。该系统至少包括:多个客户端41以及上述的基于云测试平台的设备调度装置300。
在本发明提供的基于云测试平台的设备调度方法、装置及系统中,测试任务能够通过设备空闲队列主动找到相关的空闲设备,因此,当接收到一个测试任务时,只要其相关的设备空闲,该测试任务就能第一时间得以执行;而且,空闲设备能够通过任务等待队列主动找到待其执行的任务,因此,当平台中出现一个空闲设备时,只要有其能够执行的任务,该空闲设备就能第一时间得以利用。由此可见,通过本发明中的方法、装置及系统,既能够根据测试任务查找空闲设备,又能够根据空闲设备查找测试任务,由此形成一个闭环,从而能够对平台中的各个设备进行合理的任务分配,使得所有设备能够有效利用、且所有任务能够高效执行。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的多机房存储系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。