掌桥专利:专业的专利平台
掌桥专利
首页

基于分离式卷owner的负载均衡方法及系统

文献发布时间:2024-04-18 20:01:23


基于分离式卷owner的负载均衡方法及系统

技术领域

本发明涉及储存技术领域,特别是涉及一种基于分离式卷owner的负载均衡方法及系统。

背景技术

随着现代存储技术的发展,对存储网络的性能和稳定性要求越来越高。在存储系统中,一旦某个节点发生故障,可能导致整个IT系统的瘫痪。为了避免单点故障,高可靠的存储网络除了对设备和器件做了冗余设计,存储设备和网络设备使用双节点或多节点进行设计。同时客户端通过多条冗余路径来规避链路的单点故障。利用冗余设计既可以满足存储网络的高可靠性又能满足高性能。整体的冗余方案通常采用通过多路径技术来实现。多路径软件会自动而透明地将I/O流转移到其他可用的路径上,确保I/O流有效、可靠地继续传输。

多路径机制大致可分为A/A-S(Active/Acivie-Symmetric)、ALUA(Active/Active-Asymmetric)和A/P(Active/Passive)三大类。

A/A-S(Active/Acivie-Symmetric)机制,对于特定的LUN来说,在它的路径中,多个存储控制器的目标端口均处于主动/优化(Active/optimized)状态。多个控制器之间通过PCIe或Infiniband等实现高速互联的通讯,从主机侧发送一个IO到控制器端后,多个控制器可同时参与IO处理;存储系统会自动负载均衡,当一个控制器繁忙或业务压力较大时,存储系统不需要主机端多路径负载均衡软件参与就可以自动实现负载均衡。

ALUA(Active/Active-Asymmetric)机制来说,特定的LUN在控制器的路径组中,只有一个控制器的目标端口组处于主动/优化(Active/Optimized)状态,其他控制器的目标端口组处于主动/非优化(Active/Unoptimized)状态。某个时刻一个特定LUN只属于某一个优选控制器,在多路径的配合下,IO从优选控制的IO组(Active/Optimized)下发IO,多路径不会发送该LUN的IO到其他控制器,一般通过将LUNA归属控制器A,将LUNB归属给控制器B实现两边的负载均衡,归属操作可以手动或自动完成。

A/P(Active/Passive)机制,一般只用在低端双活存储阵列中。现在这种架构已经很少见了。对于特定的LUN来说,在对应存储的路径中只有一个控制器的目标端口处于主动/优化(Active/Optimized)状态,其他控制器的目标端口处于备用或平时不工作状态,其负载均衡处理方式与ALUA类似(即根据优选控制器来决定),但是由于多路径和存储互不相识(多路径不知道哪些路径是优选路径),IO很难选到合适的路径。解决方案是提供自研多路径来配合阵列选路,通过协议实现IO到优选路径的匹配。

目前使用较多的是ALUA和A/A-S,为了追求更高的性能,尽可能避免IO在存储节点之间转发采用更多的是ALUA方案。ALUA要求存储中的逻辑卷都有一个归属控制器属性owner。该控制器就是优选控制器。多路径软件就能查询到该属性。从而可实现IO在控制器正常时,只在该控制器下发IO。当所有的卷都均匀地在不同控制器上设置owner后,就可以实现整个存储系统的负载均衡特性。

为了表示每个逻辑卷归属到某个控制器,通常为每个逻辑卷实体内部设置一个owner属性。Owner的值通常为控制器ID。该节点称为该卷的owner节点。所有下发到该卷的IO,都需要多路径软件下发到该owner节点。只有该节点无法正常提供服务时,才从非owner节点下发IO.这种为逻辑卷增加一个owner属性的方案有两个明显的缺点:

需要对逻辑的所有操作都要进行区别对待,owner的管理和维护非常复杂。

owner切换时间较长。在双控或多控环境下,当一个控制器宕机后另一个节点进行接管时,该控制器上所有owner卷要切换到另一个控制器。当节点恢复后owner属性要切换回来。由于owner节点和非owner节点分配的资源不同,权限不同,实现owner的切换会耗时很长时间。

现有技术的双控系统中,在存储池中创建两个卷。它们的owner分别属于m控制器0和控制器1。客户端的多路径软件将控制器0作为卷0的优选节点。控制器1作为卷1的优选节点。如果接收到非owner节点的IO将在逻辑层转发到对端owner卷,从而再进行落盘。

由此可见,上述现有的owner切换方法在使用上,显然仍存在有不便与缺陷,而亟待加以进一步改进。如何能创设一种新的负载均衡方法,成为当前业界急需改进的目标。

发明内容

有鉴于此,本公开实施例提供一种基于分离式卷owner的负载均衡方法,至少部分解决现有技术中存在的问题。

第一方面,本公开实施例提供了一种基于分离式卷owner的负载均衡方法,所述方法包括以下步骤:

将逻辑卷owner和逻辑卷模块分离,创建独立的逻辑卷owner管理模块lun_owner;

基于逻辑卷owner管理模块lun_owner接收客户端查询逻辑卷最优路径命令;

将所述逻辑卷的优选目标端口组ID、以及控制器的状态上报到客户端;

判断下发的IO所属的逻辑卷owner是否在所述控制器;其中,当IO所属的逻辑卷owner在所述控制器时,将IO直接下发到下层的逻辑卷上进行处理;当IO所属的逻辑卷owner不在所述控制器时,将IO转发到owner所属的控制器上处理;

判断处理IO的控制器是否正常工作;其中,当所述控制器故障时,将逻辑卷owner切换到另一个控制器;当所述控制器正常时,将IO下发到下层逻辑卷上进行处理。

根据本公开实施例的一种具体实现方式,所述方法还包括:

当存储系统初始化加载所有的逻辑卷或新建逻辑卷时,owner模块接收逻辑卷模块告知的基本卷信息;所述基本信息包括lun_id、lun_type和容量;

根据负载均衡算法,将上报上来的逻辑卷分为master集合和slave集合;

所有控制器的新增逻辑卷的owner信息保持一致。

根据本公开实施例的一种具体实现方式,所述根据负载均衡算法,将上报上来的逻辑卷分为mastergroup和slave集合,包括:

根据算法volume_id%2进行计算,如果结果和控制器ID相同则将其加入mastergroup中,否则加入slave集合中。

根据本公开实施例的一种具体实现方式,所述将IO下发到下层逻辑卷上进行处理,包括:

将卷owner管理模块lun_owner和逻辑卷模块分离;

将IO提交给lun_owner模块;所述lun_owner模块用于管理逻辑卷的归属;

如果判断所述IO所属的卷在mastergroup,将所述IO直接下发到底层的逻辑卷模块处理;否则从slave集合中查询所述逻辑卷所属的控制器,并将所述IO转发到对应的控制器上继续处理;

将IO处理完成后返回至客户端,完成整个IO的处理。

根据本公开实施例的一种具体实现方式,所述当所述控制器故障时,将逻辑卷owner切换到另一个控制器,包括:

当双控节点中的第一控制器节点宕机时,第二控制器接收到心跳超时事件,执行故障转移过程;

第二控制器将所有slave集合中的逻辑卷owner转移到master集合,并通过第二控制器负责上报所有路径状态信息;其中,

当逻辑卷owner转移未完成,且收到不属于所述第二控制器的IO时,缓存所述IO,转移完成后再继续处理所述IO。

根据本公开实施例的一种具体实现方式,所述方法还包括:

当控制器从故障恢复正常时,将逻辑卷owner切换回原来的控制器。

根据本公开实施例的一种具体实现方式,所述当控制器从故障恢复正常时,将逻辑卷owner切换回原来的控制器,包括:

当第一控制器恢复正常时,通知第二控制器;

当接到通知时,所述第二控制器将发送故障回复请求到第一控制器;

第一控制器将逻辑卷从slave集合转移到master集合中;

同时,第二控制器每收到一个逻辑卷切换完成,就将逻辑卷从master集合中转移到slave group集合中。

第二方面,本公开实施例提供了一种基于分离式卷owner的负载均衡系统,所述系统包括:

分离模块,被配置用于将逻辑卷owner和逻辑卷模块分离,创建独立的逻辑卷owner管理模块lun_owner;

数据接收模块,被配置用于基于逻辑卷owner管理模块lun_owner接收客户端查询逻辑卷最优路径命令;以及,将所述逻辑卷的优选目标端口组ID、以及控制器的状态上报到客户端;

判断模块,被配置用于判断下发的IO所属的逻辑卷owner是否在所述控制器;其中,当IO所属的逻辑卷owner在所述控制器时,将IO直接下发到下层的逻辑卷上进行处理;当IO所属的逻辑卷owner不在所述控制器时,将IO转发到owner所属的控制器上处理;以及,

判断处理IO的控制器是否正常工作;其中,当所述控制器故障时,将逻辑卷owner切换到另一个控制器;当所述控制器正常时,将IO下发到下层逻辑卷上进行处理。

根据本公开实施例的一种具体实现方式,所述系统还包括:

IO下发模块,被配置用于将卷owner管理模块lun_owner和逻辑卷模块分离;将IO提交给lun_owner模块;所述lun_owner模块用于管理逻辑卷的归属;如果判断所述IO所属的卷在mastergroup,将所述IO直接下发到底层的逻辑卷模块处理;否则从slave集合中查询所述逻辑卷所属的控制器,并将所述IO转发到对应的控制器上继续处理;将IO处理完成后返回至客户端,完成整个IO的处理。

第三方面,本公开实施例还提供了一种电子设备,该电子设备包括:

至少两个控制器,每个控制器至少包含一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有能够被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器前述第一方面或第一方面的任一实现方式中的任一项所述的基于分离式卷owner的负载均衡方法。

第四方面,本公开实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令当由至少一个处理器执行时使所述至少一个处理器执行前述第一方面或第一方面的任一实现方式中的基于分离式卷owner的负载均衡方法。

第五方面,本公开实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使该计算机执行前述第一方面或第一方面的任一实现方式中的基于分离式卷owner的负载均衡方法。

本公开实施例中的基于分离式卷owner的负载均衡方法,降低了逻辑卷Owner管理的复杂性,缩短了Owner切换时间,实现了系统的负载均衡,充分发挥双控计算资源以及双端口磁盘性能。

附图说明

上述仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,以下结合附图与具体实施方式对本发明作进一步的详细说明。

图1为本公开实施例提供的一种基于分离式卷owner的负载均衡方法流程示意图;

图2为本公开实施例提供的一种基于分离式卷owner的负载均衡方法流程框图;

图3为本公开实施例提供的一种基于分离式卷owner的负载均衡系统结构示意图;以及

图4为本公开实施例提供的电子设备示意图。

具体实施方式

下面结合附图对本公开实施例进行详细描述。

以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本申请中所描述的方面可体现于广泛多种形式中,且本申请中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本申请中所描述的一个方面可与任何其他方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本申请中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本申请中所阐述的方面中的一或多者之外的其他结构及/或功能性实施此设备及/或实践此方法。

另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。

为了解决owner带来的复杂的管理问题,以及owner切换导致时间过长问题。本发明实施例提供了一种基于分离式卷owner的负载均衡方法,分离式卷owner的总体设计思想是将卷owner的属性从卷中分离出去。owner不再作为一个卷的属性,而是在卷的上层模块中单独划分一层用于管理卷的归属问题。而卷本身并不感知自己属于哪一个控制器。该模块在本申请中定义为“lun_owner”模块,该模块主要有三个作用:

1.响应客户端逻辑卷最优路径查询结果。返回查询逻辑卷是否为最优节点,以及目标端口组(targetport group,tpg)ID。

2.对IO进行分发。如果下发的IO所属的卷owner在本控制器,就将IO

直接下发到下层的逻辑卷上进行处理,否则则将IO转发到owner所属的控制器上处理。

3.Owner切换。如果某个控制器无法提供存储服务,需要将owner切换到另一个控制器。

图1为本公开实施例提供的基于分离式卷owner的负载均衡方法流程的示意图。

图2为与图1对应的基于分离式卷owner的负载均衡方法流程框图。

下面以双控为例详细介绍基于分离式卷owner负载均衡的设计方案:

在存储IO栈逻辑层和前端层(FC或iscsi)之间,加入owner管理层lun_owner模块。该模块负责owner管理,IO转发,以及owner状态上报等功能。

如图1所示,在步骤S110处,将逻辑卷owner和逻辑卷模块分离,创建独立的逻辑卷owner管理模块lun_owner。

更具体地,接下来转到步骤S120。

在步骤S120处,基于逻辑卷owner管理模块lun_owner接收客户端查询逻辑卷最优路径命令。

在本发明实施例中,所述方法还包括:当存储系统初始化加载所有的逻辑卷或新建逻辑卷时,owner模块接收逻辑卷模块告知的基本卷信息;所述基本信息包括lun_id、lun_type和容量;根据负载均衡算法,将上报上来的逻辑卷分为master集合和slave集合;所有控制器的新增逻辑卷的owner信息保持一致。

更具体地,当存储系统初始化加载所有的逻辑卷时,或者新建逻辑卷时,逻辑卷会通知lun_owner逻辑卷的基本信息,包括lun_id、lun_type、容量等信息。

在本发明实施例中,所述根据负载均衡算法,将上报上来的逻辑卷分为mastergroup和slave集合,包括:根据算法volume_id%2进行计算,如果结果和控制器ID相同则将其加入mastergroup中,否则加入slave集合中。

更具体的,Lun_owner模块会根据负载均衡算法,将上报上来的逻辑卷分成两组:一组为master,一组为slave。例如根据算法volume_id%2,如果结果和控制器ID相同则将其加入master组中,否则加入slave组中。

在本发明实施例中,负载均衡算法可以为任何能实现对逻辑卷进行master和slave分组的算法,在此并不对本发明构成限制。

更具体地,接下来转到步骤S130。

在步骤S130处,将所述逻辑卷的优选目标端口组ID、以及控制器的状态上报到客户端。

更具体地,当客户端多路径软件查询逻辑卷的优选信息时,会将该逻辑卷所述的优选和次优目标端口组ID(tpg_id),以及控制器的状态上报到客户端。以便多路径软件对路径进行分组。

接下来转到步骤S140。

在步骤S140处,判断下发的IO所属的逻辑卷owner是否在所述控制器;其中,当IO所属的逻辑卷owner在所述控制器时,将IO直接下发到下层的逻辑卷上进行处理;当IO所属的逻辑卷owner不在所述控制器时,将IO转发到owner所属的控制器上处理。

在本发明实施例中,所述将IO下发到下层逻辑卷上进行处理,包括:将卷owner管理模块lun_owner和逻辑卷模块分离;将IO提交给lun_owner模块;所述lun_owner模块用于管理逻辑卷的归属;

如果判断所述IO所属的卷在master group,将所述IO直接下发到底层的逻辑卷模块处理;否则从slave集合中查询所述逻辑卷所属的控制器,并将所述IO转发到对应的控制器上继续处理;将IO处理完成后返回至客户端,完成整个IO的处理。

接下来转到步骤S150。

在步骤S150处,判断处理IO的控制器是否正常工作;其中,当所述控制器故障时,将逻辑卷owner切换到另一个控制器;当所述控制器正常时,将IO下发到下层逻辑卷上进行处理。

更具体地,前端模块接收到IO,并将IO提交给lun_owner模块。如果判断该IO所属的卷在master group集合,就将IO直接下发到底层的逻辑卷模块处理。否则从slave组中查询该卷所属控制器,并将IO转发到对应的控制器上继续处理。IO处理完成再返回给本端的lun_owner模块,从而返回给前端,最终返回给客户端,完成整个IO的处理。通常多路径软件会将IO下发到owner控制器,不会产生转发。只有当优选路径失效之后,前端才会接收到非owner IO。

在本发明实施例中,所述当所述控制器故障时,将逻辑卷owner切换到另一个控制器,包括:当双控节点中的第一控制器节点宕机时,第二控制器接收到心跳超时事件,执行故障转移过程;第二控制器将所有slave集合中的逻辑卷owner转移到master集合,并通过第二控制器负责上报所有路径状态信息;其中,当逻辑卷owner转移未完成,且收到不属于所述第二控制器的IO时,缓存所述IO,转移完成后再继续处理所述IO。

在本发明实施例中,所述方法还包括:当控制器从故障恢复正常时,将逻辑卷owner切换回原来的控制器。

在本发明实施例中,所述当控制器从故障恢复正常时,将逻辑卷owner切换回原来的控制器,包括:当第一控制器恢复正常时,通知第二控制器;当接到通知时,所述第二控制器将发送故障回复请求到第一控制器;第一控制器将逻辑卷从slave集合转移到master集合中;同时,第二控制器每收到一个逻辑卷切换完成,就将逻辑卷从master集合中转移到slave group集合中。

更具体地,前端模块接收到IO,并将IO提交给lun_owner模块。如果判断该IO所属的卷在mastergroup集合,就将IO直接下发到底层的逻辑卷模块处理。否则从slave组中查询该卷所属控制器,并将IO转发到对应的控制器上继续处理。IO处理完成再返回给本端的lun_owner模块,从而返回给前端,最终返回给客户端,完成整个IO的处理。通常多路径软件会将IO下发到owner控制器,不会产生转发。只有当优选路径失效之后,前端才会接收到非ownerIO。

Owner切换处理设计包括Failover(故障转移)过程和Failback过程。

Failover(故障转移)过程:当双控节点某个控制器节点宕机时,如图2所示控制器0(或称第一控制器)宕机,控制器1(或称第二控制器)接收到心跳超时事件,会执行failover过程。控制器1,先将状态设置为failover,将所有slave中的卷owner由slave集合转移到master集合,控制器1负责上报所有路径状态信息。完成了将owner切换到控制器1。切换完成后将状态改回normal状态。如果owner还未切换完成,且收到了不属于控制器1的IO,lun_owner模块会缓存该IO,切换完成后再继续处理IO。整个过程会非常快,底层逻辑不需要感知,多路径软件会将原路径失效,该控制器成为优路径。

Failback(故障恢复)过程:如图2所示,当控制器0恢复正常时,所有卷owner都在对端。lun_owner需要和对端进行协商,告知对端服务已经恢复正常。为了负载均衡,控制器1需要将这些逻辑卷owner切换回原来的控制器。控制器1将发送failback请求到控制器0。控制器0上将卷从slave group中转移到mastergroup中,而控制器1上,每收到一个卷切换完成,就将卷从master上转移到slave group中,多路径软件再次查询时就恢复最优路径的选择。

整个owner切换过程,底层的逻辑卷模块不需要参与任何操作,只是被动接收IO即可。极大解放了逻辑的工作量。

综上所述,通过将owner角色从逻辑卷分离以后,逻辑卷的功能将更加单一,IO效率也得到大幅提高。它只需要处理本地IO的工作即可。无需针对owner或非owner进行差异化处理。

在本发明实施例中,本申请所述的方法也可用于多控节点,在此,并不构成对本发明的限制。

图3示出了本发明提供的基于分离式卷owner的负载均衡系统300,包括分离模块310、数据接收模块320和判断模块330。

分离模块310用于将逻辑卷owner和逻辑卷模块分离,创建独立的逻辑卷owner管理模块lun_owner;

数据接收模块320用于基于逻辑卷owner管理模块lun_owner接收客户端查询逻辑卷最优路径命令;以及,将所述逻辑卷的优选目标端口组ID、以及控制器的状态上报到客户端;

判断模块330用于判断下发的IO所属的逻辑卷owner是否在所述控制器;其中,当IO所属的逻辑卷owner在所述控制器时,将IO直接下发到下层的逻辑卷上进行处理;当IO所属的逻辑卷owner不在所述控制器时,将IO转发到owner所属的控制器上处理;以及,判断处理IO的控制器是否正常工作;其中,当所述控制器故障时,将逻辑卷owner切换到另一个控制器;当所述控制器正常时,将IO下发到下层逻辑卷上进行处理。

在本发明实施例中,所述系统还包括:IO下发模块340用于将卷owner管理模块lun_owner和逻辑卷模块分离;将IO提交给lun_owner模块;所述lun_owner模块用于管理逻辑卷的归属;如果判断所述IO所属的卷在master group,将所述IO直接下发到底层的逻辑卷模块处理;否则从slave集合中查询所述逻辑卷所属的控制器,并将所述IO转发到对应的控制器上继续处理;将IO处理完成后返回至客户端,完成整个IO的处理。

参见图4,本公开实施例还提供了一种电子设备40,该电子设备包括:

至少两个控制器;每个控制器至少包含一个处理器;以及,

与该至少一个处理器通信连接的存储器;其中,

该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行前述方法实施例中的基于分离式卷owner的负载均衡方法。

本公开实施例还提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使该计算机执行前述方法实施例中的基于分离式卷owner的负载均衡方法。

本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,该计算机程序包括程序指令,当该程序指令被计算机执行时,使该计算机执行前述方法实施例中的基于分离式卷owner的负载均衡方法。

下面参考图4,其示出了适于用来实现本公开实施例的电子设备40的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图4示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图4所示,电子设备40可以包括处理装置(例如中央处理器、图形处理器等)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储装置408加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM403中,还存储有电子设备40操作所需的各种程序和数据。处理装置401、ROM402以及RAM403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。

通常,以下装置可以连接至I/O接口405:包括例如触摸屏、触摸板、键盘、鼠标、图像传感器、麦克风、加速度计、陀螺仪等的输入装置406;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置407;包括例如磁带、硬盘等的存储装置408;以及通信装置409。通信装置409可以允许电子设备40与其他设备进行无线或有线通信以交换数据。虽然图中示出了具有各种装置的电子设备40,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置409从网络上被下载和安装,或者从存储装置408被安装,或者从ROM402被安装。在该计算机程序被处理装置401执行时,执行本公开实施例的方法中限定的上述功能。

需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。

上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取至少两个网际协议地址;向节点评价设备发送包括所述至少两个网际协议地址的节点评价请求,其中,所述节点评价设备从所述至少两个网际协议地址中,选取网际协议地址并返回;接收所述节点评价设备返回的网际协议地址;其中,所获取的网际协议地址指示内容分发网络中的边缘节点。

或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收包括至少两个网际协议地址的节点评价请求;从所述至少两个网际协议地址中,选取网际协议地址;返回选取出的网际协议地址;其中,接收到的网际协议地址指示内容分发网络中的边缘节点。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。

应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。

以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。

相关技术
  • 存储方法、存储系统、电子设备及存储介质
  • 车辆及其横向控制方法、系统、电子设备和存储介质
  • 车辆及其避障控制方法、系统、电子设备和存储介质
  • 油料储罐区智能控制方法、存储介质、电子设备和系统
  • 混合动力车辆油箱控制系统、方法、存储介质及电子设备
  • 液罐落座基座的控制方法、系统、电子设备和存储介质
  • 缓冲罐液位控制方法、存储介质及电子设备
技术分类

06120116546780