用于服务器故障转移和负荷平衡的系统和方法与流程

文档序号:13518706阅读:179来源:国知局
用于服务器故障转移和负荷平衡的系统和方法与流程

相关申请的交叉引用

本申请根据35u.s.c.§119(e)要求于2015年5月26日提交的美国临时专利申请第62/179,969号的权益,该申请的全部内容通过引用并入本文并且构成本文的一部分。

本公开内容总体上涉及用于在服务器故障转移和/或负荷平衡中使用的系统、方法和/或介质。更具体地,本公开内容涉及用于在使用客户端的服务器故障转移和/或负荷平衡中使用的系统、方法和/或介质。



背景技术:

向客户端提供服务的后端服务器需要始终可用。当特定的服务器发生故障时,需要将客户端路由到一个或更多个备用服务器的替代机制。例如,网络服务通常使用向运行中的服务器发送请求的前端负荷平衡器或路由器。尽管速度快,但是负荷平衡器或路由器本身就是关键的单点故障,并引起额外的成本。替选地,可以将新服务器实例化,并且可以将服务的dns(域名系统)条目更改为指向新服务器。然而,在传播新的dns条目时存在明显的延迟。



技术实现要素:

在所描述的机制中,对请求的路由和对指针(pointer)的改变在后端侧(例如,在服务器本身上)执行,而无需客户端参与。

已经确定,在服务器故障转移和/或负荷平衡中可能涉及和/或以其他方式使用客户端。

在一些实施方式中,系统(和/或方法和/或介质)可以提供负荷平衡、服务器故障转移、扩展(scaling)、数据本地化和/或冗余。系统(和/或方法和/或介质)可以通过基于随机客户端应用标识符(cai)在所有服务器上统一选择目标服务器来实现负荷平衡。系统(和/或方法和/或介质)可以通过选择适当的备用服务器来提供故障转移。系统(和/或方法和/或介质)可以通过添加新的服务器并且将关于新的添加通知给目录服务来扩展系统能力而实现可扩展性。系统(和/或方法和/或介质)可以通过限制对cai特定的最高随机权重(hrw)排序列表上的前n个服务器的数据复制来提供数据本地化和冗余。系统(和/或方法和/或介质)可以提供上述特征,因此当两个或更多个客户端对相同的cai达成一致时,它们将总是选择相同的服务器或相同的服务器子集。系统(和/或方法和/或介质)可以提供这些益处,而在服务器侧没有任何集中式服务、瓶颈和/或单点故障。不需要负荷平衡器、第三方目录参与(例如,dns)或系统范围的数据复制。

在一些实施方式中,系统包括引擎,该引擎由一个或更多个客户端执行,以使用客户端应用标识符从多个服务器中选择目标服务器或服务器子集。在一些实施方式中,使用相同客户端应用标识符的两个或更多个客户端选择相同的目标服务器或服务器子集。在一些实施方式中,多个服务器中的每一个耦接至一个或更多个客户端,并且被配置成提供一个或更多个服务类别,服务类别包括应用服务和目录服务。在一些实施方式中,每个服务器上的应用服务仅服务于所有客户端应用的子集。在一些实施方式中,每个服务器的目录服务被配置成提供服务器列表,每个服务器被标记有服务器支持的应用服务。在一些实施方式中,引擎包括服务映射子系统,该服务映射子系统被配置成将每个客户端应用标识符映射到目标服务器或服务器子集。在一些实施方式中,服务映射子系统被配置成使用最高随机权重来映射客户端应用标识符。在一些实施方式中,客户端应用标识符包括大数目。在一些实施方式中,引擎由一个或更多个客户端中的第一客户端执行,以使用客户端应用标识符从多个服务器中选择目标服务器或服务器子集;并且引擎由一个或更多个客户端中的第二客户端执行,以使用客户端应用标识符从多个服务器中选择相同的目标服务器或服务器子集。在一些实施方式中,客户端应用标识符是大数目。在一些实施方式中,大数目包括至少128位。在一些实施方式中,大数目包括至少512位。

在一些实施方式中,系统包括通过网络(或者以其他方式耦接(经由任何类型的通信链路))与一个或更多个客户端进行电子通信的计算机系统,该计算机系统包括多个服务器以及存储在一个或更多个客户端上和/或由一个或更多个客户端执行的引擎,该引擎被配置成允许一个或更多个客户端应用使用客户端应用标识符从多个服务器中选择目标服务器。在一些实施方式中,客户端应用标识符是大数目。在一些实施方式中,大数目包括至少128位。在一些实施方式中,大数目包括至少512位。

在一些实施方式中,一种方法包括:电子地(或以其他方式)接收具有用于多个服务器的服务器身份的目录列表;电子地(或以其他方式)使用客户端应用标识符接收应用特定的目录列表,以识别具有期望应用的服务器;由存储在客户端上和/或由客户端执行的引擎对应用特定的目录列表应用最高随机权重,以电子地(或以其他方式)生成提供期望应用的服务器的客户端应用标识符特定的排序列表;以及由客户端尝试通过从顶部开始并沿着列表向下进行来从服务器的客户端应用标识符特定的排序列表电子地(或以其他方式)联系服务器。在一些实施方式中,客户端应用标识符是大数目。在一些实施方式中,排序列表可以包括呈任何形式的任何类型的信息,其限定了尝试联系服务器直到联系到服务器中的至少一个运行中的服务器为止的顺序。在一些实施方式中,大数目包括至少128位。在一些实施方式中,大数目包括至少512位。

在一些实施方式中,一种方法包括:由一个或更多个客户端执行引擎,以使用客户端应用标识符从多个服务器中选择目标服务器或服务器子集。在一些实施方式中,使用相同客户端应用标识符的两个或更多个客户端选择相同的目标服务器或服务器子集。在一些实施方式中,多个服务器中的每一个耦接至一个或更多个客户端,并且被配置成提供一个或更多个服务类别,服务类别包括应用服务和目录服务。在一些实施方式中,每个服务器上的应用服务仅服务于所有客户端应用的子集。在一些实施方式中,每个服务器的目录服务被配置成提供服务器列表,每个服务器被标记有服务器支持的应用服务。在一些实施方式中,引擎包括服务映射子系统,该服务映射子系统被配置成将每个客户端应用标识符映射到目标服务器或服务器子集。在一些实施方式中,服务映射子系统被配置成使用最高随机权重来映射客户端应用标识符。在一些实施方式中,客户端应用标识符包括大数目。在一些实施方式中,执行引擎以使用客户端应用标识符从多个服务器中选择目标服务器或服务器子集包括:由一个或更多个客户端中的第一客户端执行引擎,以使用客户端应用标识符从多个服务器中选择目标服务器或服务器子集;以及由一个或更多个客户端中的第二客户端执行引擎,以使用客户端应用标识符从多个服务器中选择目标服务器或服务器子集。在一些实施方式中,执行引擎以使用客户端应用标识符从多个服务器中选择目标服务器或服务器子集包括:通过由客户端执行的引擎接收指示提供期望应用的服务器的身份的信息;以及通过由客户端执行的引擎至少部分地基于该信息和客户端应用标识符来生成提供期望应用的服务器的客户端应用标识符特定的排序列表。在一些实施方式中,排序列表可以包括呈任何形式的任何类型的信息,其限定了尝试联系服务器直到联系到服务器中的至少一个运行中的服务器为止的顺序。在一些实施方式中,大数目包括至少128位。在一些实施方式中,大数目包括至少512位。

在一些实施方式中,一种非暂态计算机可读介质储存有计算机可读指令,如果由计算机系统执行该计算机可读指令则导致以下方法,该方法包括:由一个或更多个客户端执行引擎,以使用客户端应用标识符从多个服务器中选择目标服务器或服务器子集。在一些实施方式中,使用相同的客户端应用标识符的两个或更多个客户端选择相同的目标服务器或服务器子集。在一些实施方式中,多个服务器中的每一个耦接至一个或更多个客户端,并且被配置成提供一个或更多个服务类别,服务类别包括应用服务和目录服务。在一些实施方式中,每个服务器上的应用服务仅服务于所有客户端应用的子集。在一些实施方式中,每个服务器的目录服务被配置成提供服务器列表,每个服务器被标记有服务器支持的应用服务。在一些实施方式中,引擎包括服务映射子系统,该服务映射子系统被配置成将每个客户端应用标识符映射到目标服务器或服务器子集。在一些实施方式中,服务映射子系统被配置成使用最高随机权重来映射客户端应用标识符。在一些实施方式中,客户端应用标识符包括大数目。在一些实施方式中,执行引擎以使用客户端应用标识符从多个服务器中选择目标服务器或服务器子集包括:由一个或更多个客户端中的第一客户端执行引擎,以使用客户端应用标识符从多个服务器中选择目标服务器或服务器子集;以及由一个或更多个客户端中的第二客户端执行引擎,以使用客户端应用标识符从多个服务器中选择目标服务器或服务器子集。在一些实施方式中,执行引擎以使用客户端应用标识符从多个服务器中选择目标服务器或服务器子集包括:通过由客户端执行的引擎接收指示提供期望应用的服务器的身份的信息;以及通过由客户端执行的引擎至少部分地基于该信息和客户端应用标识符来生成提供期望应用的服务器的客户端应用标识符特定的排序列表。在一些实施方式中,排序列表可以包括呈任何形式的任何类型的信息,其限定了尝试联系服务器直到联系到服务器中的至少一个运行中的服务器为止的顺序。在一些实施方式中,大数目包括至少128位。在一些实施方式中,大数目包括至少512位。

附图说明

从以下结合附图的详细描述中,本公开内容的前述特征将变得明显,在附图中:

图1是示出根据一些实施方式的服务器故障转移和负荷平衡系统的图;

图2是示出根据一些实施方式的故障转移和负荷平衡引擎的子系统的图;

图3是示出根据一些实施方式的与服务器进行通信的客户端的图;

图4是根据一些实施方式的处理的流程图;

图5是示出根据一些实施方式的架构的图;

图6是根据一些实施方式的列表(或其他限定)的图形表示;

图7是根据一些实施方式的列表(或其他限定)的图形表示;

图8是根据一些实施方式的列表(或其他限定)的图形表示;

图9是根据一些实施方式的在散列之后并在排序之前的列表(或其他限定)的图形表示;

图10是根据一些实施方式的列表(或其他限定)的图形表示;

图11是根据一些实施方式的在散列之后并在排序之前的列表(或其他限定)的图形表示;

图12是根据一些实施方式的列表(或其他限定)的图形表示;以及

图13是根据一些实施方式的处理的流程图。

具体实施方式

本公开内容总体上涉及用于服务器故障转移和/或负荷平衡的系统和方法。更具体地,本公开内容利用了比服务器数量更多的客户端来解决服务器故障转移和/或负荷平衡和/或其他任务。因此,服务器系统被简化,因为服务器系统不负责为客户端提供不中断的服务。相反,每个客户端负责找到运行中的服务器。同时,服务器选择方法保证了客户端特定的信息将在所选择的服务器上可用。

图1是示出根据一些实施方式的服务器故障转移和负荷平衡系统10的图。

参照图1,根据一些实施方式,服务器故障转移和负荷平衡系统10包括多个服务器12(例如服务器12a至12n)以及一个或更多个客户端22(例如客户端26a至26c)。一个或更多个客户端22(例如,客户端26a至26c)中的每一个可以包括服务器故障转移和负荷平衡引擎(例如,分别为服务器故障转移和负荷平衡引擎16a至16c)。多个服务器12中的每一个可以包括运行任何合适的操作系统(例如,微软(microsoft)的windows、linux等)的任何合适类型的计算机服务器(例如,具有intel微处理器、多个处理器、多个处理核等的服务器)。多个服务器12(例如服务器12a至12n)中的一个或更多个可以包括其中存储的或者与其可操作地连接的数据库(例如,分别为数据库14a至14n)。每个数据库可以被存储在其服务器上,或者位于其服务器外部(例如,在与服务器故障转移和负荷平衡系统10通信的单独的数据库服务器中)。如下面进一步描述的,多个服务器12中的一个或更多个还可以包括可以与服务器故障转移和负荷平衡引擎16a至16c相同和/或类似的服务器故障转移和负荷平衡引擎(未示出)。多个服务器12中的每一个都是可远程访问的,使得多个服务器12中的每一个可以通过网络20(和/或经由任何其他类型的通信链路)与一个或更多个客户端22中的一个或更多个通信。一个或更多个客户端22中的每一个可以包括任何类型的客户端装置(例如、个人计算机系统26a、智能蜂窝电话26b、平板电脑26c和/或其他电子装置)。网络通信可以通过下述项进行:通过使用标准tcp/ip通信协议(例如,超文本传输协议(http)、安全http(https)、文件传输协议(ftp)、电子数据交换(edi)等)的因特网;通过专用网络连接(例如,广域网(wan)连接、电子邮件、电子数据交换(edi)消息、可扩展标记语言(xml)消息、文件传输协议(ftp)文件传输等);或者任何其他合适的有线或无线电子(或其他)通信格式和系统,如本领域普通技术人员应该理解的那样。

可以看出,系统10是去除了任何单点故障的分布式系统。

根据一些实施方式,系统10提供下述两个基本服务类别中的服务:目录服务和应用服务。系统10中的多个服务器12(在本文中有时称为节点)中的每一个可以提供这样的服务类别(即,目录服务和应用服务)中的一个或两个服务类别中的服务。在一些实施方式中,应用服务包括实时通信服务(例如,两个或更多个客户端之间的实时通信会话)和/或存储服务(例如,由一个或更多个客户端使用读取/写入存储器)。

在一些实施方式中,所有节点上的所有目录服务都包含关于整个系统的服务信息。相比之下,特定节点上的应用服务(例如由客户端应用标识符子系统30使用的)仅服务于所有客户端的一部分,因此不需要将关于所有客户端的信息分发给所有应用节点。这减少了对系统效率的负面影响。客户端信息在服务器子集上的本地化极大地提高了网络和存储性能,并且使线性能力扩展成为可能(例如,仅通过向系统添加服务器)。

目录服务(例如,信息目录服务)提供已知服务器的列表,其中,每个服务器被标记有该服务器支持的所有应用服务或者与该服务器支持的所有应用服务相关联。在一些实施方式中,当服务器变为“联机”和/或以其他方式可用时,该列表可以被如下生成。首先,第一服务器变为“联机”和/或以其他方式可用。此后,第二服务器变为“联机”和/或以其他方式可用,并且被赋予第一服务器的ip地址。第二服务器随后向第一服务器发送对系统10中的并且第一服务器已知的所有服务器的列表(或其他限定)的请求。在接收到来自第一服务器的响应之后,第二服务器向列表(或其他限定)上的每个附加服务器发送对系统10中的并且这样的附加服务器已知的所有服务器的列表(或其他限定)的请求。来自第一服务器的列表最初可能只包含第一服务器。因此,第二服务器可能不会发送任何附加的请求。然而,当每个附加服务器变为“联机”和/或以其他方式可用时,可以重复该处理,并且因此每个附加服务器获得系统10中的服务器中的至少一些服务器的列表(或其他限定)。每个服务器还可以广播这样的服务器已知的服务器的列表(或其他限定),在这种情况下,系统中的每个服务器将最终具有系统10中的每个服务器的列表(或其他限定)。在一些实施方式中,列表(或其他限定)还可以指示列表上的每个服务器的能力(例如,应用服务)。

服务器的目录服务可以由一个或更多个客户端计算机系统使用,以获得位于系统10中并且可用于一个或更多个客户端计算机系统的服务器的列表(或其他限定)。在一些实施方式中,客户端可以向服务器发送对这样的列表(或其他限定)的请求。此后,客户端可以接收具有位于系统10中并且可用于这样的客户端的服务器的列表(或其他限定)的响应。在一些实施方式中,客户端可以将请求发送至系统10中的任何服务器。在一些其他实施方式中,客户端可以被要求将请求发送至一个或更多个指定的服务器(例如集中式目录服务)。客户端可以通过查询目录服务器不定期地(例如实时地、每隔几小时或几天等)刷新该信息。

图6是根据一些实施方式的可以由一个或更多个客户端22中的一个接收的列表(或其他限定)的图形表示。

参照图6,以具有多个条目例如条目602至628的表600的形式示出的列表(或其他限定)指示了位于系统10中并且对请求该列表的客户端可用的所有的服务器12。在所示的实施方式中,每个条目与客户端可用的多个服务器12中的特定一个相关联,并且指示:(i)与该条目相关联的服务器的ip地址或其他标识符以及(ii)这样的服务器的一个或更多个能力(例如应用服务)。

例如,第一条目602指示与客户端可用的第一服务器相关联的ip地址例如ipaddress1。第一条目602还指示这样的第一服务器的能力例如实时通信。第三条目606指示与客户端可用的第三服务器相关联的ip地址例如ipaddress3,并且还指示这样的第三服务器的能力例如实时通信和存储。第九条目618指示与客户端可用的第九服务器相关联的ip地址例如ipaddress9,并且还指示这样的第九服务器的能力例如存储。在一些实施方式中,每个ip地址可以包括32位的ip地址。

在一些实施方式中,客户端可以针对每种类型的服务器能力(例如应用服务)接收和/或生成单独的列表。

图7是客户端可用并且具有实时通信能力的服务器12的列表(以表700的形式示出)的图形表示。

图8是客户端可用并且具有存储能力的服务器12的列表(以表800的形式示出)的图形表示。

图2是示出根据一些实施方式的服务器故障转移和负荷平衡引擎例如服务器故障转移和负荷平衡引擎16a至16c中的一个的子系统的图。

参照图2,根据一些实施方式,每个服务器故障转移和负荷平衡引擎例如服务器故障转移和负荷平衡引擎16a至16c可以包括cai子系统30和服务映射子系统32。

cai子系统30便于客户端信息的故障转移、扩展和/或局部性(locality)。cai子系统30将客户端应用标识符(cai)与特定客户端或特定客户端组的特定应用相关联。例如,cai子系统30可以包括两个或更多个客户端之间的实时通信会话、由一个或更多个客户端使用读取/写入存储器、将音频/视频内容从一个客户端流送到客户端组、为客户端组服务的应用(例如工资单)等。cai子系统30限定用于服务特定客户端集合的服务器系统的分区。这限制了到整个系统的子集的数据和通信并且支持扩展。针对分区(例如子集)内的每个特定情况限定冗余需求。如果涉及状态(例如数据)保留,那么冗余因子(例如两个或更多个)确定子集内的复制和子集大小。如果存在仅实时部件(例如用于实时通信或实时视频流送),则可能涉及整个系统,所以冗余因子等于整个系统中的服务器的数目。在所有这些情况下,对相同的cai达成共识的两个或更多个客户端将总是选择相同的服务器或相同的服务器子集。cai的一个可能的实施方式是对外部人员保密的大数目(例如128位、512位或更多位)。它可以是自我分配的(例如由内部人员通过随机选择),这可以实际上消除由于大量可用的可能数目而导致的所有冲突。还设想了其他实施方式(例如集中式或半集中式分配)。本领域的普通技术人员应该理解,可以使用任何合适的分配系统、方法或协议。

服务映射子系统32将每个cai映射到特定服务器或服务器子集,以用于使系统正常运行。对相同的cai达成共识的两个或更多个客户端将总是选择相同的服务器或相同的服务器子集。该映射在没有实时目录服务的情况下运行。除了系统的最新目录映射之外,不需要其他外部信息。可以与系统一起使用的一个可能的映射方法是最高随机权重(hrw)。参见例如https://en.wikipedia.org/wiki/rendezvous_hashing,其全部内容通过引用并入到本文中。

图3是示出根据一些实施方式的一个或更多个客户端22中的一个使用服务器ip地址136的列表来与多个服务器12中的一个进行通信的图。

参照图3,根据一些实施方式,系统10可以生成和/或以其他方式提供客户端可用的服务器的目录列表(具有由ip地址表示的服务器身份)。客户端22中的服务器故障转移和负荷平衡引擎可以将cai与客户端可用的服务器的ip地址进行组合并提供期望的应用(例如实时通信和/或其他功能),并且可以对组合的该列表执行hrw方法,以生成提供期望的应用(例如实时通信和/或其他功能)的服务器136的cai特定的排序列表。换言之,引擎可以通过hrw(cai、ip)对列表进行排序。

客户端22可以通过从列表的顶部开始从服务器136的cai特定的排序列表中选择服务器(例如服务器12a),并且如果列表顶部处的服务器不可用,则可以连续尝试接下来的n-1个服务器12b至12n,其中,n是冗余因子。最终,客户端134选择可用的服务器(例如服务器12d)并且建立与该服务器(例如服务器12d)的连接。

例如,如果两个客户端希望在二者之间建立由“通信应用”介导(mediate)的通信链路,则客户端对cai达成共识并且运行上述的hrw算法。由于两个客户端的目录映射是相同的,所以客户端中的每一个均会得到相同的排序列表并且将从该列表中选择相同的工作服务器。由于在这种情况下没有状态,所以提供该“通信应用”的所有服务器均可以在列表上,从而提供高度冗余。

图9是根据一些实施方式的在散列之后并在排序之前的列表(或其他限定)的图形表示。

参照图9,以具有多个条目(例如条目902至916)的表900的形式示出列表(或其他限定)。在所示的实施方式中,每个条目与多个服务器12中的特定一个服务器相关联,并且指示:(i)与该条目相关联的服务器的ip地址或其他标识符;服务器的ip地址和cai的组合(例如ip地址和cai的串接);以及(iii)由对服务器的ip地址和cai的组合进行散列而产生的散列值(hashoutvalue)。

例如,第一条目902指示与第一服务器相关联的ip地址例如ipaddress1、这样的ip地址和cai的组合(例如ipaddress1&cai)以及由对组合进行散列产生的散列值例如hashout1。在一些实施方式中,每个ip地址包括32位ip地址,cai包括128位,并且ip地址和cai的组合包括160位。在一些实施方式中,达成共识的cai包括表示电话号码的128位标识符。

图10是根据一些实施方式的在基于表900中的散列值进行排序之后的表900中所示的ip地址的列表(或其他限定)的图形表示。

参照图10,以具有多个条目例如1002至1016的表1000的形式示出了排序列表(或其他限定)。出于说明的目的,假设表900中的散列值限定了散列值的以下递减顺序(从最大到最小):hashout7、hashout3、hashout1、hashout2、hashout6、hashout5、hashout4、hashout8。

如上所阐述的,排序列表不限于上述形式。根据一些实施方式,排序列表可以包括呈任何形式的任何类型的信息,其限定了尝试联系服务器直至联系到服务器中的至少一个运行中的服务器为止的顺序。

上述通信示例仅是一个非限制性示例,并且如本领域的普通技术人员应该理解的,许多其他应用是可能的。

在另一示例中,属于同一企业的客户端组想要访问工资表。该客户端组对cai达成共识,并且选择可以访问与该组(例如由cai限定)相关的工资表数据的运行中的服务器。在这种情况下,应用服务具有状态(例如工资表信息)和具有通常大于1的因子n的冗余需求。为此,在一些实施方式中,每个工资表应用服务(和/或运行中的服务器的其他部分)在其从特定客户端接收请求/会话时,也接收cai并且计算(或以其他方式生成)hrw排序列表本身。然后,它找到列表上的前n个服务器(例如前n个服务器中的一个服务器是本身),并且将针对该cai的所有工资表信息复制到列表上的其他n-1个服务器。在一些实施方式中,运行中的服务器从请求客户端接收hrw排序列表(或hrw排序列表的一部分),并且不生成hrw排序列表本身。在一些实施方式中,运行中的服务器不将信息复制到列表上的其他n-1个服务器。在稍后的实施方式中,请求客户端可以将信息复制到其他n-1个服务器。

图11是根据一些实施方式的在散列之后并且在排序之前的列表(或其他限定)的图形表示。

参照图11,以具有多个条目例如条目1102至1116的表1100的形式示出列表(或其他限定)。在所示的实施方式中,每个条目与多个服务器12中的特定一个服务器相关联,并且指示:(i)与该条目相关联的服务器的ip地址或其他标识符;服务器的ip地址和cai的组合(例如ip地址和cai的串接);以及(iii)由对服务器的ip地址和cai的组合进行散列而产生的散列值。

例如,第一条目1102指示与第三服务器相关联的ip地址例如ipaddress3、这样的ip地址和cai的组合(例如ipaddress3&cai)以及由对组合进行散列而产生的散列值例如hashout3。在一些实施方式中,每个ip地址包括32位的ip地址,cai包括104位,并且ip地址和cai的组合包括136位。

图12是根据一些实施方式的在基于表1100中的散列值进行排序之后的表1100中所示的ip地址的列表(或其他限定)的图形表示。

参照图12,以具有多个条目例如1202至1216的表1200的形式示出排序列表(或其他限定)。出于说明的目的,假设表1100中的散列值限定散列值的以下递减顺序(从最大到最小):hashout7、hashout3、hashout9、hashout10、hashout6、hashout5、hashout4、hashout8。

在一些实施方式中,客户端发送选择的服务器信息,以识别在其上存储有数据(如果数据正被存储)和/或从其中检索数据(如果正在检索数据)的所选服务器内的(任何大小的)记录。在一些实施方式中,信息包括128位。在一些实施方式中,信息可以包括所选服务器可以用作识别所选服务器内的分区的密钥的cai以及识别所识别的分区内的记录的记录号。在一些实施方式中,用于识别分区的cai可以包括104位,并且用于对存储分区内的记录进行识别的记录号可以包括24位。

如上面所阐述的,排序列表不限于上述形式。根据一些实施方式,排序列表可以包括呈任何形式的任何类型的信息,其限定了尝试联系服务器直至联系到服务器中的至少一个运行中的服务器为止的顺序。

上面的存储示例仅是一个更多的非限制性示例,并且如本领域的普通技术人员应该理解的,许多其他应用是可能的。

图4是根据一些实施方式的处理150的流程图。在步骤152中,系统10电子地(或以其他方式)生成具有由ip地址表示的服务器身份的目录列表。在步骤154中,系统电子地(或以其他方式)使用客户端应用标识符来生成应用特定目录列表,以识别具有期望应用的服务器。在步骤156中,客户端电子地(或以其他方式)在应用特定目录列表上应用hrw方法,以电子地(或以其他方式)生成提供期望应用的服务器的cai特定的排序列表。在步骤158中,一个或更多个客户端尝试联系在服务器的cai特定的排序列表中列出的第一服务器。在步骤160中,确定是否从所选择的服务器接收到答案。如果未接收到答案,那么在步骤162中,客户端尝试联系在服务器的cai特定的排序列表中列出的下一个服务器。如果接收到答案,那么在步骤164中,在一个或更多个客户端与所选服务器之间建立电通信或数据通信。

图13是根据一些实施方式的处理1300的流程图。

根据一些实施方式,方法可以用于服务器故障转移和/或负荷平衡。

方法1300不限于流程图中所示的顺序。而是,方法1300的实施方式可以以可行的任何顺序来执行。就此而言,除非另有说明,否则本文中所公开的任何方法可以以可行的任何顺序来执行。

除非另有说明,否则方法1300(和/或本文中所公开的任何其他方法)可以以任何方式来执行。在一些实施方式中,可以由系统10和/或任何其他处理系统的一个或更多个部分执行该方法(和/或本文中所公开的任何其他方法)或该方法的一个或更多个部分。

在一些实施方式中,非暂态计算机可读介质可以存储有指令,该指令在被机器执行的情况下引起执行方法1300(和/或本文中所公开的任何其他方法)或方法1300的一个或更多个部分。

参照图13,根据一些实施方式,在1302处,方法可以包括由一个或更多个客户端执行引擎,以使用客户端应用标识符从多个服务器中选择目标服务器或服务器子集。

在一些实施方式中,使用相同的客户端应用标识符的两个或更多个客户端选择相同的目标服务器或服务器子集。

在一些实施方式中,引擎包括服务映射子系统,该服务映射子系统被配置成将每个客户端应用标识符映射到目标服务器或服务器子集。

在一些实施方式中,服务映射子系统被配置成使用最高随机权重来映射所述客户端应用标识符。

在一些实施方式中,客户端应用标识符包括大数目。

在一些实施方式中,使用客户端应用标识符执行引擎以从多个服务器中选择目标服务器或服务器子集包括:由一个或更多个客户端中的第一客户端执行引擎,以使用客户端应用标识符来从多个服务器中选择目标服务器或服务器子集;以及由一个或更多个客户端中的第二客户端执行引擎,以使用客户端应用标识符从多个服务器中选择目标服务器或服务器子集。

在一些实施方式中,使用客户端应用标识符执行引擎以从多个服务器中选择目标服务器或服务器子集包括:通过客户端执行的引擎接收以下信息,该信息指示提供期望应用的服务器的标识符;以及至少部分地基于所述信息和客户端应用标识符,通过由客户端执行的引擎来生成提供期望应用的服务器的客户端应用标识符特定的排序列表。

在一些实施方式中,排序列表可以包括呈任何形式的任何类型的信息,其限定尝试联系服务器直至联系到服务器中的至少一个运行中的服务器为止的顺序。

在一些实施方式中,大数目包括至少128位。在一些实施方式中,大数目包括至少512位。

图5是示出根据一些实施方式的架构200的图。在一些实施方式中,本文中所公开的系统和/或装置(和/或其(一个或更多个)部分)中的一个或更多个可以与架构200的一个或更多个部分具有相同和/或相似的架构。在一些实施方式中,服务器故障转移和负荷平衡系统10中的多个服务器12中的一个或更多个服务器和/或服务器故障转移和负荷平衡系统10中的一个或更多个客户端22中的一个或更多个客户端与架构200的一个或更多个部分具有相同和/或相似的架构。

在一些实施方式中,可以由与架构200(或其(一个或更多个)部分)具有相同或相似的架构的系统、设备和/或装置来执行本文中所公开的方法中的一个或更多个(或该方法的(一个或更多个)部分)。

架构可以被实现为分布式架构或非分布式架构。分布式架构可以是完全分布式架构或部分分布式部分非分布式架构。

参照图5,根据一些实施方式,架构200包括处理系统202,该处理系统202可以包括存储装置204、网络接口208、通信总线210、中央处理单元(cpu)(微处理器)212、随机存取存储器(ram)214以及诸如键盘、鼠标的一个或更多个输入装置216等中的一个或更多个。处理系统202还可以包括显示器(例如液晶显示器(lcd)、阴极射线管(crt))等)。在一些实施方式中,存储装置204可以包括任何合适的计算机可读存储介质,例如磁盘、非易失性存储器(例如只读存储器(rom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、快闪存储器、现场可编程门阵列(fpga)等)。在一些实施方式中,处理系统202可以包括联网的计算机系统、个人计算机、智能电话、平板计算机等。在一些实施方式中,服务器故障转移和负荷平衡引擎16可以被实现为计算机可读程序代码,该计算机可读程序代码存储在存储装置204上并且由cpu212使用诸如python、java、c、c++、c#、.net、matlab等的任何合适的高级或低级计算语言执行。在一些实施方式中,网络接口208可以包括以太网网络接口装置、用一个或更多个合适的无线协议可操作的无线网络接口装置或允许服务器202经由网络进行通信的任何其他合适的装置。在一些实施方式中,cpu212可以包括能够实现和运行服务器故障转移和负荷平衡引擎16的任何合适的架构的任何合适的单核或多核微处理器。在一些实施方式中,随机存取存储器214可以包括大多数现代计算机典型的的任何合适的高速随机存取存储器,如动态ram(dram))等。

除非另有说明,否则本文中所公开的任何处理(本文中有时称为方法)不限于流程图中所示的顺序。而是,实施方式可以以可行的任何顺序来执行。

除非另有说明,否则本文中所公开的任何方法可以以任何方式来执行。在一些实施方式中,方法(或方法的一个或更多个部分)可以由系统10的一个或更多个部分来执行。

在一些实施方式中,非暂态计算机可读介质可以存储有指令,该指令在被机器执行的情况下引起执行本文中所公开的任何一种或更多种方法(或方法的一个或更多个部分)。

除非另有说明,否则处理器可以包括任何类型的处理器。例如,处理器可以是可编程或不可编程的、通用或特殊用途的、专用或非专用的、分布式或非分布式的、共享或非共享的和/或其任何组合。处理器可以包括但不限于硬件、软件、固件和/或其任何组合。硬件可以包括但不限于现成集成电路、定制集成电路和/或其任何组合。在一些实施方式中,处理器包括微处理器。软件可以包括但不限于可存储和/或存储在计算机可读介质(诸如磁盘或光盘、磁带或光带、cd-rom、dvd、ram、eprom、rom或其他半导体存储器)上的指令。处理器可以采用连续信号、周期性采样信号和/或其任何组合。如果处理器被分发,则控制/存储电路的两个或更多个部分可以通过通信链路彼此通信。

除非另有说明,否则处理系统是包括至少一个处理器的任何类型的系统。

除非另有说明,否则通信链路可以是任何类型的通信链路,例如但不限于有线(例如导体、光缆)或无线(例如声学链路、电磁链路或其任何组合,包括但不限于例如微波链路、卫星链路、红外链路)和/或其组合,上述通信链路中的每一个可以是公共的或私人的、专用的和/或共享的(例如网络)。通信链路可以是或者也可以不是永久的通信链路。通信链路可以支持呈任何形式的任何类型的信息,例如但不限于呈串行和/或并行形式的模拟和/或数字(例如二进制值的序列,即比特串)信号。信息可以或可以不被分成块。如果被分成块,则块中的信息量可以是预定的或动态确定的,和/或可以是固定的(例如统一的)或可变的。通信链路可以采用协议或协议的组合,包括例如但不限于因特网协议。

除非另有说明,否则术语“接收”是指以任何方式从内部和/或外部的任何源接收。

除非另有说明,否则术语“限定”是指“直接和/或间接限定”。

除非另有说明,否则例如“响应于”和“基于”的术语分别是指“至少响应于”和“至少基于”,以便不排除多于一件事物的响应于和/或基于。

除非另有说明,否则诸如“耦接至”、“发送至”和“从......接收”的术语分别是指“直接地和/或间接地耦接至”、“直接和/或间接地发送至”和“直接地和/或间接地从……接收”。

除非另有说明,否则诸如“包括(comprises)”、“具有(has)”、“包含(includes)”及其所有形式的术语被认为是开放式的,以免排除附加的元素和/或特征。另外,除非另有说明,否则诸如“一(a)”、“一个(one)”、“第一”的术语被认为是开放式的,并不分别意味着“仅一”、“仅一个”和“仅第一”。而且,除非另有说明,否则术语“第一”本身没有要求也存在“第二”。

因此,已经详细地描述了系统和方法,应该理解的是,前面的描述不旨在限制系统和方法的精神或范围。相关领域的普通技术人员将会理解,文中所描述的本公开内容的实施方式仅是示例性的,并且基于本文的教导,本领域技术人员可以在不脱离本公开内容的精神和/或范围的情况下做出任何多种变化和修改。包括上面讨论的那些变化和修改的所有这些变化和修改都旨在被包括在本公开内容的范围内。仅作为示例,本公开内容考虑但不限于具有在上述描述中以相互的任何组合的方式所阐述的特征中的任何一个或更多个特征的实施方式。仅作为另一个示例,本公开内容考虑但不限于不包括以上描述中阐述的特征中的任何一个或更多个特征的实施方式。因此,本文中的实施方式的描述将被视为说明性的而不是限制性的,并且本发明或本公开内容都不限于本文中所描述的特定实施方式或特征的组合。

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