CN108377254A - 负载均衡中的一致流指派 - Google Patents

负载均衡中的一致流指派 Download PDF

Info

Publication number
CN108377254A
CN108377254A CN201710922672.1A CN201710922672A CN108377254A CN 108377254 A CN108377254 A CN 108377254A CN 201710922672 A CN201710922672 A CN 201710922672A CN 108377254 A CN108377254 A CN 108377254A
Authority
CN
China
Prior art keywords
stream
server apparatus
assigned
equipment
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710922672.1A
Other languages
English (en)
Other versions
CN108377254B (zh
Inventor
安亚凡
R·K·达迪
A·P·帕蒂尔
S·拉贾拉斯纳姆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Juniper Networks Inc
Peribit Networks Inc
Original Assignee
Peribit Networks Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Peribit Networks Inc filed Critical Peribit Networks Inc
Publication of CN108377254A publication Critical patent/CN108377254A/zh
Application granted granted Critical
Publication of CN108377254B publication Critical patent/CN108377254B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1017Server selection for load balancing based on a round robin mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1034Reaction to server failures by a load balancer

Abstract

本公开的各实施例涉及负载均衡中的一致流指派。设备可以接收标识多个服务器设备的第一信息和标识多个流的第二信息。设备可以按照第一顺序将多个流指派给多个服务器设备。设备可以将第二信息存储在多个数据结构中,以记录多个流向多个服务器设备的指派。多个数据结构中的数据结构可以对应于多个服务器设备中的相应服务器设备。在存储第二信息之后,设备可以接收服务器设备已被添加到多个服务器设备或被从多个服务器设备移除的指示。设备可以使用标识多个流被指派给多个服务器设备的顺序的第三信息来按照第二顺序重新指派多个流的子集。第二顺序可以与第一顺序不同。

Description

负载均衡中的一致流指派
技术领域
本申请的各实施例涉及负载均衡中的一致流指派。
背景技术
在计算中,负载均衡改善了跨多个计算资源(诸如来自跨多个服务器设备分布的客户端设备的数据流)的工作负载分布。负载均衡旨在优化资源使用,使吞吐量最大化,使响应时间最小化,并避免任何单个资源的过载。
发明内容
根据一些可能的实现方式,一种设备可包括一个或多个处理器,其用于接收标识多个服务器设备的第一信息和标识多个流的第二信息,其中多个流将被指派给多个服务器设备。一个或多个处理器可以基于接收到第一信息和第二信息、并且在不使用模运算的情况下、按照第一顺序来将多个流指派给多个服务器设备。一个或多个处理器可以将第二信息存储在多个数据结构中,以基于向多个服务器设备指派多个流来记录多个流向多个服务器设备的指派。多个数据结构中的数据结构可对应于多个服务器设备中的相应服务器设备。一个或多个处理器可以在存储第二信息之后接收第一服务器设备已被添加到多个服务器设备或被从多个服务器设备移除的指示。基于接收到指示,一个或多个处理器可以使用标识多个流被指派给多个服务器设备的顺序的第三信息、按照第二顺序来重新指派多个流的子集。第二顺序可以与第一顺序不同。
根据一些可能的实现方式,非暂时性计算机可读介质可以存储一个或多个指令,一个或多个指令当被一个或多个处理器执行时,使得一个或多个处理器接收标识多个服务器设备的第一信息和标识去往多个服务器设备的多个流的第二信息,其中多个流将被指派给多个服务器设备或者网络设备与多个服务器设备之间的多个链路。一个或多个指令当被一个或多个处理器执行时可以使得一个或多个处理器基于接收到第一信息和第二信息、按照第一顺序来将多个流指派给多个服务器设备。一个或多个指令当被一个或多个处理器执行时,可以使得一个或多个处理器将第二信息存储在多个数据结构中,以基于向多个服务器设备指派多个流来记录多个流向多个服务器设备的指派。多个数据结构中的数据结构可对应于多个服务器设备中的相应服务器设备。一个或多个指令当被一个或多个处理器执行时,可以使得一个或多个处理器在存储第二信息之后接收第一服务器设备已被添加到多个服务器设备或被从多个服务器设备移除的指示。一个或多个指令当被一个或多个处理器执行时可以使得一个或多个处理器基于接收到指示、使用标识多个流被指派给多个服务器设备的顺序的第三信息、按照第二顺序来重新指派多个流的子集。第二顺序可以与第一顺序相反。
根据一些可能的实现方式,一种方法可包括:由设备接收标识多个服务器设备的第一信息和标识多个流的第二信息,其中多个流将被指派给多个服务器设备。该方法可包括:由设备基于接收到第一信息和第二信息、按照第一顺序来向多个服务器设备指派多个流。该方法可包括由设备将第二信息存储在多个数据结构中,以基于向多个服务器设备指派多个流来记录多个流向多个服务器设备的指派。多个数据结构中的数据结构可对应于多个服务器设备中的相应服务器设备。该方法可包括由设备在存储第二信息之后接收服务器设备已被添加到多个服务器设备或被从多个服务器设备移除的指示。该方法可包括由设备基于接收到该指示、使用标识多个流被指派给多个服务器设备的顺序的第三信息、按照第二顺序来重新指派多个流的子集。第二顺序可以与第一顺序不同。
附图说明
图1A至图1C是本文描述的示例实现方式的概述的示图;
图2是其中可以实现本文描述的系统和/或方法的示例环境的示图;
图3是图2的一个或多个设备的示例组件的示图;以及
图4是用于负载均衡中的一致流指派的示例过程的流程图。
具体实施方式
示例实现方式的以下详细描述参照附图。不同附图中的相同标号可以标识相同或相似的元件。
网络设备可以将来自客户端设备的数据流负载均衡到一组服务器设备上,以防止服务器设备之一变得过载。一种用于负载均衡多个流的方法包括为特定流生成散列值,并且基于散列值和服务器设备的数量的模运算的结果来将流指派给服务器设备。当服务器设备被添加到网络或被从网络移除时,这一方法可能导致大多数流或增加数量的流被重新指派给服务器设备,这是因为当将被指派流的服务器设备的数量有变化时模运算的除数改变。此外,流的中断可能导致与重新启动作业/服务、颠簸和/或类似事件相关的开销,其影响可能随规模而增加(例如,中断的流的数量增加,受影响的客户端设备的数量增加,等等)。
本文描述的实现方式可以按照循环方式或按照另一方式将流指派给服务器设备,可以使用用于每个服务器设备的堆栈数据结构(例如,其跟踪流的指派的顺序)来存储标识被指派给每个服务器设备的流的信息,并且可以使用堆栈数据结构、按照后指派先重新指派的方式将流从一个服务器设备重新指派给另一服务器设备。
以这种方式,本文描述的实现方式使得到当服务器设备被添加到网络或被从网络移除时被重新指派到一组服务器设备的流的数量最小化(例如,而不是重新指派所有流),由此节省了处理资源和/或使客户端服务的服务器设备处理的中断最小化。另外,本文描述的实现方式相对于基于散列的负载均衡更均匀地分布流,由此使服务器设备的处理资源的使用最大化。另外,本文描述的实现方式通过减少需要被再均衡的流的数量和/或通过减少用于使流再均衡所需的时间量来增加当服务器被添加到网络或被从网络移除时使流再均衡的效率。
图1A至图1C是本文描述的示例实现方式100的概述的示图。如图1A中所示,示例实现方式100可包括一个或多个客户端设备(例如,客户端设备1至N)、网络设备、一个或多个服务器设备(例如,服务器设备1至3)以及网络设备与服务器设备之间的链路(例如,到服务器设备1的链路1、到服务器设备2的链路2,以及到服务器设备3的链路3)。
如由标号105所示,网络设备可具有标识来自客户端设备1至N的多个流(例如,流1至流12)的信息。网络设备可具有该信息以便将流指派给服务器设备1至3。如由标号110所示,网络设备可以将流指派给到服务器设备(或者在服务器设备上被实现的虚拟设备)的链路。在这种情况下,网络设备可以使用堆栈数据结构(例如,其跟踪流的指派的顺序)来存储标识哪些流被指派给哪些链路的信息。例如,网络设备可以使用第一数据结构来存储标识被指派给链路1的流的信息,使用第二数据结构来存储标识被指派给链路2的流的信息,诸如此类。
如由标号115所示,网络设备可以按照特定顺序将流指派给链路。例如,网络设备可以将流1指派给链路1,将流2指派给链路2,以及将流3指派给链路3,诸如此类。如由标号115进一步所示,网络设备可以按照循环方式将流指派给链路。例如,在将流3指派给链路3之后,网络设备可以将流4指派给链路1,将流5指派给链路2,将流6指派给链路3,将流7指派给链路1,将流8指派给链路2,诸如此类。以这种方式,网络设备可以向链路指派均衡(例如,相等或接近相等)数量的流。
在一些实现方式中,网络设备可以按照加权循环方式或循环以外的另一方式来指派流。例如,网络设备可以基于被指派给每个流的不同权重来指派流(例如,而不是平等地对待每个流)。被指派给每个流的权重可以基于处置每个流所需的处理能力的量、针对每个流所需的带宽量、每个服务器设备的处理能力和/或容量、每个服务器设备的位置(例如,相对于网络设备和/或客户端设备)、服务器负载(例如,其可以基于被指派给每个服务器设备的流的数量而不同,或者基于服务器设备是否可以接收除了流之外的流量而不同)和/或类似物。当按照加权循环方式指派流时,网络设备可以使流均衡,从而使得流的权重而不是流的数量跨服务器设备被均衡。
网络设备可以在指示流已经被指派给每个链路的顺序的堆栈数据结构中存储信息。例如,网络设备可以将信息存储在指示流已经被指派给每个链路的顺序的堆栈数据结构中,如由标号115进一步所示。继续前面的示例,对于链路1,堆栈数据结构中的信息可以指示流1在流4之前被指派,流4在流7之前被指派,流7在流10之前被指派。网络设备可以存储用于链路2和链路3的类似信息。以这种方式,网络设备可以确定哪个流是针对每个链路被最后指派的流。
如图1B中并且由标号120所示,链路(例如,到服务器设备3的链路3)可能变得不可用来处置网络设备和服务器设备3之间的流。例如,链路3可能中断,服务器设备3可被下线,链路3上可能存在阈值量的拥塞/流量,和/或诸如此类。在这种情况下,如由标号125所示,网络设备可以按照后指派先重新指派的方式将流从链路3重新指派给其他链路。例如,网络设备可以首先重新指派被指派给链路3的最后流(例如,流12)。在这种情况下,基于链路3在相对于图1A中的标号110和115被最初指派流时是接收流的最后链路,基于存储将链路1标识为按照循环方式接收流的下一链路的信息,网络设备可以首先将流重新指派给链路1。
在一些实现方式中,按照后指派先重新指派的方式重新指派流可以增加流一致性,减少当服务器设备被添加到网络或被从网络移除时需要被重新指派的流的数量(例如,相对于使用模运算来重新指派流)和/或诸如此类。例如,使用模运算来重新指派流可能导致超过使流均衡所需的最小数量的流的重新排列,由此增加低效率。此外,使用模运算可能导致特定的流被重新指派给若干不同的服务器设备,由此降低流一致性。另外,使用模运算可能导致不均衡数量的流被指派给服务器设备,或者不具有接近相等数量的流的服务器设备(例如,其中被指派给每个服务器设备的流的数量在一个之内)。
如由标号130所示,网络设备可以继续按照循环方式将流重新指派给链路1和链路2,直到来自链路3的所有流已经被重新指派给链路1和2。例如,网络设备可以将流12指派给链路1,将流9指派给链路2,将流6指派给链路1,以及将流3指派给链路2。以这种方式,网络设备保持均衡(例如,相等或接近相等)数量的流。在一些实现方式中,网络设备可以基于加权循环或另一方式来指派流,如本文其他地方所描述的。在这种情况下,网络设备可以存储将链路2标识为被指派流的最后链路的信息。
如由标号130进一步示出的,最初被指派给链路1的流已经保持被指派给链路1(例如,流1、4、7和10),并且最初被指派给链路2的流已经保持被指派给链路2(例如,流2、5、8和11)。以这种方式,网络设备使重新指派的流的数量最小化,并且使由重新指派引起的破坏的流的数量最小化。例如,如果使用模运算来重新指派流,则网络设备可以重新指派比仅来自移除的服务器设备3的流更多的流。这节省了网络设备的处理资源和/或使客户端服务的服务器设备处理的中断最小化。此外,这节省了将用于重新指派流的网络资源。此外,这使对流的破坏最小化,由此改善客户端设备、网络设备和服务器设备之间的通信。
如图1C中并且由标号135所示,到服务器3的链路3可能变得可用。例如,链路3可能恢复连通,或者服务器设备3可能被恢复在线。如由标号140所示,网络设备可以按照后指派先重新指派的方式将流重新指派给链路3。例如,网络设备可以向链路3首先指派被指派的最后流(例如,流3,其是基于被从链路3重新指派给链路2而被指派的最后流)。
如由标号145所示,网络设备可以继续按照循环方式将流从链路1和链路2重新指派给链路3,直到每个链路具有均衡(例如,相等或接近相等)数量的流。在一些实现方式中,网络设备可以继续重新指派流,直到每个服务器设备具有相等或接近相等的权重的流。以这种方式,网络设备继续维持到链路的均衡数量的流。另外,如由标号145所示,网络设备已经将流指派给相同的链路,并且按照与如在图1A中最初被指派的相同的顺序,由此使对流的破坏最小化。
以这种方式,本文描述的实现方式使当服务器设备被添加到网络或被从网络移除时被重新指派的流的数量最小化,由此节省处理资源。另外,本文描述的实现方式相对于基于散列的负载均衡而言使流更均匀地分布,由此节省了服务器设备的处理资源。另外,本文描述的实现方式通过减少要进行再均衡的流的数量和/或通过减少针对再均衡所需的时间量来提高当服务器被添加到网络或被从网络移除时使流再均衡的效率。
如上所述,图1A至图1C仅作为示例被提供。其他示例是可能的,并且可以与关于图1A至图1C而被描述的不同。例如,尽管关于循环指派和/或重新指派来描述图1A至图1C中示出的实现方式,但是其他示例可以包括不同的指派方式和/或重新指派方式,如本文别处所描述的。作为另一示例,尽管图1A至图1C示出了三个链路,但是其他示例可能包括数十个链路、数百个链路、数千个链路,等等。
图2是其中可以实现本文描述的系统和/或方法的示例环境200的示图。如图2中所示,环境200可包括一组客户端设备210(被统称为“客户端设备210”,并且被单独地称为“客户端设备210”)、网络设备220,以及一组服务器设备230(被统称为“服务器设备230“,并且被单独地称为”服务器设备230“)。环境200中的设备可以经由有线连接、无线连接或有线和无线连接的组合互连。
客户端设备210包括能够接收、生成、存储、处理和/或提供与客户端设备210和服务器设备230之间的流相关联的信息的一个或多个设备。例如,客户端设备210可包括通信和/或计算设备,诸如移动电话(例如,智能电话或无线电电话)、膝上型计算机、平板计算机、游戏设备、可穿戴通信设备(例如,智能手表,一副智能眼镜,或活动带)、自动取款机(ATM)、物联网(IoT)设备、客户端设备210的控制器或类似类型的设备。在一些实现方式中,客户端设备210可以向去往服务器设备230的网络设备220提供流,如本文别处所描述的。附加地或者备选地,客户端设备210可以从服务器设备230接收数据流,如本文别处所描述的。
网络设备220包括能够接收、存储、生成、处理和/或提供与客户端设备210和服务器设备230之间的流相关的信息的一个或多个设备(例如,一个或多个流量转移设备)。例如,网络设备220可包括防火墙、路由器、网关、交换机、集线器、网桥、反向代理、服务器(例如,代理服务器)、安全设备、入侵检测设备、负载均衡器、复用器(mux)、解复用器(demux)、设备通信设备、数据通信设备、因特网交换、数据中心、服务提供商、网络传输技术/设备或类似设备。在一些实现方式中,网络设备220可以向多个服务器设备230指派多个流,如本文所述。附加地或者备选地,当服务器设备230变得可用或不可用时,网络设备220可重新指派多个流,如本文别处所描述的。
服务器设备230包括能够接收、存储、生成、处理和/或提供与客户端设备210和服务器设备230之间的流相关联的信息的一个或多个设备。例如,服务器设备230可包括服务器(例如,在数据中心、服务器机群或云计算环境中)、数据中心(例如,多服务器微数据中心)、工作站计算机、在云计算环境中被提供的虚拟机(VM)、具有一个或多个服务器设备230的机架或类似类型的一个或多个设备。在一些实现方式中,服务器设备230可经由网络设备220和服务器设备230之间的链路从网络设备220接收一个或多个流,如本文别处所描述的。
网络240包括一个或多个有线和/或无线网络。例如,网络240可包括蜂窝网络(例如,长期演进(LTE)网络、码分多址(CDMA)网络、3G网络、4G网络、5G网络,另一种类型的高级生成网络等)、公共陆地移动网络(PLMN)、局域网(LAN)、广域网(WAN)、城域网(MAN)、电话网(例如,公共交换电话网(PSTN))、私有网络、自组织网络、内联网、因特网、基于光纤的网络、云计算网络、Clos网络、内容传送网络、分布式或集群式的网络/系统(例如,可以针对其使用Hadoop)等,和/或这些或其他类型的网络的组合。
图2中所示的设备和网络的数量和布置作为示例被提供。在实践中,与图2中所示的那些相比,可能存在附加的设备和/或网络、更少的设备和/或网络、不同的设备和/或网络、或者被不同布置的设备和/或网络。另外,图2中所示的两个或更多个设备可被实现在单个设备中,或者图2中所示的单个设备可被实现为多个分布式设备。附加地或者备选地,环境200的一组设备(例如,一个或多个设备)可以执行被描述为由环境200的另一组设备执行的一个或多个功能。
图3是设备300的示例组件的示图。设备300可以对应于客户端设备210、网络设备220和/或服务器设备230。在一些实现方式中,客户端设备210、网络设备220和/或服务器设备230可包括一个或多个设备300和/或设备300的一个或多个组件。如图3中所示,设备300可包括一个或多个输入组件305-1至305-B(B≥1)(以下被统称为“输入组件305”,并且被单独地称为“输入组件305”)、交换组件310、一个或多个输出组件315-1至315-C(C≥1)(以下被统称为“输出组件315”,并且被单独地称为“输出组件315”),以及控制器320。
输入组件305可以是用于物理链路的附接点,并且可以是诸如分组之类的传入流量的入口点。输入组件305可以诸如通过执行数据链路层封装或解封装来处理传入流量。在一些实现方式中,输入组件305可以发送和/或接收分组。在一些实现方式中,输入组件305可包括输入线卡,其包括一个或多个分组处理组件(例如,按照集成电路的形式),诸如一个或多个接口卡(IFC)、分组转发组件、线卡控制器组件、输入端口、处理器、存储器和/或输入队列。在一些实现方式中,设备300可包括一个或多个输入组件305。
交换组件310可以使输入组件305与输出组件315互连。在一些实现方式中,可以经由一个或多个交叉开关、经由总线和/或利用共享存储器来实现交换组件310。共享存储器可以用作临时缓冲器,以在分组最终被安排交付给输出组件315之前存储来自输入组件305的分组。在一些实现方式中,交换组件310可以使得输入组件305、输出组件315和/或控制器320能够通信。
输出组件315可以存储分组,并且可以安排分组以用于在输出物理链路上的传输。输出组件315可以支持数据链路层封装或解封装,和/或各种更高级别的协议。在一些实现方式中,输出组件315可以发送分组和/或接收分组。在一些实现方式中,输出组件315可包括输出线卡,其包括一个或多个分组处理组件(例如,按照集成电路的形式),诸如一个或多个IFC、分组转发组件、线卡控制器组件、输出端口、处理器、存储器和/或输出队列。在一些实现方式中,设备300可包括一个或多个输出组件315。在一些实现方式中,输入组件305和输出组件315可以由同一组组件实现(例如,并且输入/输出组件可以是输入组件305和输出组件315的组合)。
控制器320包括按照例如中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、微处理器、微控制器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)和/或可以解释和/或执行指令的另一类型的处理器形式的处理器。处理器在硬件、固件或硬件和软件的组合中被实现。在一些实现方式中,控制器320可包括可以被编程为执行功能的一个或多个处理器。
在一些实现方式中,控制器320可包括随机存取存储器(RAM)、只读存储器(ROM)和/或另一类型的动态或静态存储设备(例如,闪存、磁存储器、光存储器等),其存储供控制器320使用的信息和/或指令。
在一些实现方式中,控制器320可以与被连接到设备300的其他设备、网络和/或系统通信,以交换关于网络拓扑的信息。控制器320可基于网络拓扑信息来创建路由表,基于路由表来创建转发表,以及将转发表转发到输入组件305和/或输出组件315。输入组件305和/或输出组件315可以使用转发表来执行针对传入和/或传出分组的路由查找。
控制器320可执行本文描述的一个或多个过程。控制器320可响应于执行由非暂时性计算机可读介质存储的软件指令来执行这些过程。计算机可读介质在本文中被定义为非暂时性存储器设备。存储器设备包括单个物理存储设备内的存储器空间或跨多个物理存储设备散布的存储器空间。
软件指令可经由通信接口从另一计算机可读介质或从另一设备被读取到与控制器320相关联的存储器和/或存储组件中。当被执行时,被存储在与控制器320相关联的存储器和/或存储组件中的软件指令可使得控制器320执行本文描述的一个或多个过程。附加地或者备选地,硬连线电路可以用于代替软件指令或与软件指令结合被使用,以执行本文描述的一个或多个过程。因此,本文描述的实现方式不限于硬件电路和软件的任何特定组合。
图3中所示的组件的数量和布置作为示例被提供。在实践中,与图3中所示的那些相比,设备300可包括附加的组件、更少的组件、不同的组件或者被不同布置的组件。附加地或者备选地,设备300的一组组件(例如,一个或多个组件)可执行被描述为由设备300的另一组组件执行的一个或多个功能。
图4是用于负载均衡中的一致流指派的示例过程400的流程图。在一些实现方式中,图4的一个或多个过程块可由网络设备220执行。在一些实现方式中,图4的一个或多个过程块可由与网络设备220分离或包括网络设备220的另一设备或一组设备(诸如客户端设备210和服务器设备230)执行。
如图4中所示,过程400可包括接收标识多个服务器设备和/或要被指派给多个服务器设备的多个流的信息(块410)。例如,网络设备220可接收标识多个服务器设备230和/或要被指派给多个服务器设备230的多个流的信息。
在一些实现方式中,网络设备220可从客户端设备210和/或服务器设备230接收信息。在一些实现方式中,网络设备220可基于请求信息根据日程来周期性地接收信息,和/或诸如此类。在一些实现方式中,信息可标识网络设备220与服务器设备230之间的链路(例如,而不是标识服务器设备230)。附加地或者备选地,信息可以标识在服务器设备230上被实现的虚拟机。在一些实现方式中,术语链路可指连接、路径、隧道、传输方法、进程间通信机制、信道和/或类似物。
在一些实现方式中,多个流中的流可包括从客户端设备210到服务器设备230的数据的流、针对数据的请求的流,针对处理资源的请求的流或数据的某些处理、作业、关键作业、任务控制作业、服务、作业的一部分(例如,由于作业花费阈值量的时间完成而被重新指派)和/或类似物。在一些实现方式中,流可表示具有分组字段的相同元组的一组分组。在一些实现方式中,流可表示根据由分组字段的元组形成的散列输入而被计算的一组流,诸如共享相同散列结果或散列结果的一部分的一组流。
在一些实现方式中,网络设备220可使用对应于相应服务器设备230(或到服务器设备230的链路)的数据结构来存储与该相应服务器设备230相关联的信息。在一些实现方式中,网络设备220可使用堆栈数据结构来存储标识哪些流被指派给每个服务器设备230以及指派这些流的顺序的信息。这允许网络设备220确定哪些流被指派给每个服务器设备230以及指派这些流的顺序。此外,使用堆栈数据结构允许网络设备220快速且高效地确定这些流被指派给每个服务器设备230的顺序,由此节省处理资源。
在一些实现方式中,网络设备220可使用链表或双链表来存储标识多个服务器设备230的信息。在一些实现方式中,网络设备220可使用链表来标识要向其指派或重新指派流的特定服务器设备230。例如,当网络设备220正在指派或重新指派流时,网络设备220可以循环访问链表以标识要向其指派或重新指派流的特定服务器设备230以及要向特定服务器设备230指派流的顺序。在一些实现方式中,当指派流时,网络设备220可以按照特定方式(例如,基于用于多个服务器设备230的标识符的字母顺序或数值顺序)来循环访问列表。附加地或者备选地,当重新指派流时,网络设备220可以按照另一方式(例如,反向字母顺序,反向数值顺序,在与指派期间的方向相反的方向上循环访问链表,等等)来循环访问列表。
以这种方式,网络设备220可以接收标识多个服务器设备230和/或多个流的信息。
如图4中进一步所示,过程400可包括按照循环方式向多个服务器设备指派多个流(块420)。例如,网络设备220可以将多个流指派给多个服务器设备230。
在一些实现方式中,网络设备220可以按照特定方式指派多个流。例如,网络设备220可以按照循环方式、加权循环方式或另一方式来指派多个流。作为特定示例,网络设备220可以将第一流指派给第一服务器设备230,将第二流指派给第二服务器设备230,以此类推,直到流已经被指派给每个服务器设备230,并且随后可以将下一个流指派给第一服务器设备230,将其后的下一个流指派给第二服务器设备230,以此类推。以这种方式,网络设备220可以在多个服务器设备230之间使流均衡,从而使得每个服务器设备230已被指派相等或接近相等数量的流。这节省了多个服务器设备230的处理资源,并减少了与任何特定服务器设备230相关联的网络拥塞。
附加地或者备选地,网络设备220可以按照另一方式指派多个流。例如,网络设备220可以按照加权循环方式指派流。在一些实现方式中,权重可以基于迟滞每个流所需的处理能力的量、针对每个流所需的带宽量、一组服务器设备230中的每个服务器设备230的处理能力、一组服务器设备230中的每个服务器设备230的位置(例如,相对于网络设备220和/或客户端设备210)、服务器负载(例如,其可以基于被指派给一组服务器设备230中的每个服务器设备230的流的数量或特定服务器设备230是否可以接收除流之外的流量而不同)和/或类似物。
在一些实现方式中,当按照加权循环方式指派流时,网络设备220可以指派流,从而使得权重跨服务器设备230被均衡(例如,而不是使被指派给每个服务器设备230的流的数量均衡)。例如,假设两个流各自具有1.0的权重并且第三个流量具有2.0的权重,则网络设备220可以将具有1.0权重的两个流指派给第一服务器设备230,并且可以将具有2.0权重的流指派给第二服务器设备230,从而使得被指派给第一和第二服务器设备230中的每一个的流的总权重为2.0。以这种方式,网络设备220可以基于除流的数量之外的因素来使流均衡。
在一些实现方式中,当按照加权循环方式指派流时,网络设备220可以为每个服务器设备230指定不同的权重因数(例如,而不是使被指派给每个服务器设备230的流的数量均衡)。例如,假设第一服务器设备230被指派4.0的权重因数(因为第一服务器设备230的连接链路带宽是40吉比特每秒(gbps)),并且第二服务器设备230被指派1.0的权重因数(因为第二服务器设备230的连接链路带宽是10gbps)。在这种情况下,链表可包含用于第一服务器设备230的四个条目和用于第二服务器设备230的一个条目,因此针对被指派给第二服务器设备230的每个流将向第一服务器设备230指派四个流。
在一些实现方式中,网络设备220可存储标识流和向其指派流的特定服务器设备230的信息。例如,网络设备220可将信息存储在数据结构中。在一些实现方式中,网络设备220可以按照堆叠方式存储信息(例如,当数据结构是按照将信息添加到堆栈数据结构的顺序存储信息的堆栈数据结构时)。例如,网络设备220可以存储信息,从而使得在数据结构的特定端部发生信息的插入或删除。
在一些实现方式中,网络设备220可以确定被存储在数据结构中的最后信息对应于被指派给服务器设备230的最后流。例如,当网络设备220将标识流的信息存储在与服务器设备230相关联的数据结构的末尾处时,网络设备220可将该流标识为被指派给服务器设备230的最后流。以这种方式,网络设备220可以快速且高效地标识被指派给特定服务器设备230的最后流,并且可以标识在特定服务器设备230停机或以其他方式变得不可用的情况下要被重新指派的第一个流。
在一些实现方式中,网络设备220可存储标识多个流被指派给多个服务器设备的顺序的信息。例如,网络设备220可存储标识在将第二流指派给第一服务器设备230之前将第一流指派给第一服务器设备230的信息。在一些实现方式中,这可以通过其中将信息存储在与第一服务器设备230相关联的数据结构中的方式被指示,如上所述。这允许网络设备220以高效方式确定流被指派给特定服务器设备230的顺序。
附加地或者备选地,网络设备220可存储标识哪个服务器设备230是网络设备220向其指派流的最后服务器设备230的信息。例如,网络设备220可存储将第一服务器设备230标识为要被指派流的最后服务器设备230、将第二服务器设备230标识为在第一服务器设备230之前已经被指派流、将第三服务器设备230标识为在第二服务器设备230之前已经被指派流等的信息。这允许网络设备220标识流指派给各种服务器设备230的顺序,以便快速且高效地标识要向其指派流的下一个服务器设备230。
以这种方式,网络设备220可以按照循环方式将多个流指派给多个服务器设备230。在一些实现方式中,网络设备220可以按照另一方式(诸如加权循环、循环域名服务器(DNS)、DNS委托、随机地、基于用户输入,和/或类似方式)来指派多个流。
如图4中进一步所示,过程400可包括接收服务器设备已被添加到多个服务器设备或被从多个服务器设备移除的指示(块430)。例如,网络设备220可接收特定服务器设备230已被添加到多个服务器设备230或被从多个服务器设备230移除的指示(例如,由于服务器设备230或者网络设备220与服务器设备230之间的链路连通/中断、变得可用/不可用,等等)。在一些实现方式中,网络设备220可以基于监视服务器设备230和/或网络设备220与服务器设备230之间的链接来接收指示。附加地或者备选地,网络设备220可以从特定服务器设备230接收指示(例如,当特定服务器设备230变得可用时),或者从另一服务器设备230接收指示(例如,当特定服务器设备230停机时)。
在一些实现方式中,网络设备220可接收特定服务器设备230已被添加到多个服务器设备230的指示。例如,当网络设备220检测到链路具有连通状态、链路已经变得可用、服务器设备230具有开机状态、服务器设备230已经变得可用和/或类似情况时,网络设备220可接收指示。
附加地或者备选地,网络设备220可以接收特定服务器设备230已经被从多个服务器设备230移除的指示。例如,当网络设备220检测到链路已经断开、链路已经变得不可用、服务器设备230已经停机、服务器设备230已经变得不可用和/或类似情况时,网络设备220可接收指示。
以这种方式,网络设备220可以接收特定服务器设备230已被添加到多个服务器设备230或被从多个服务器设备230移除的指示。
如图4中进一步所示,过程400可包括使用标识多个流被指派给多个服务器设备的顺序的信息、按照后指派先重新指派的方式来重新指派多个流(块440)。例如,网络设备220可以按照后指派先重新指派的方式来重新指派流。在一些实现方式中,网络设备220可以使用标识多个流被指派给多个服务器设备230的顺序的信息来重新指派流。
在一些实现方式中,当特定服务器设备230被添加到多个服务器设备230时,网络设备220可以将流从其他服务器设备230重新指派给特定服务器设备230。例如,网络设备220可以按照后指派先重新指派的方式将流从其他服务器设备230重新指派给添加的服务器设备230。在这种情况下,当在第二流之后第一流被指派给服务器设备230时,网络设备220可在重新指派第二流之前重新指派第一流。在一些实现方式中,网络设备220可以使用标识要被指派流的最后服务器设备230的信息来标识从其重新指派流的第一个服务器设备230。例如,假设特定服务器设备230是要被指派流的最后服务器设备230,则网络设备220可以确定使用将特定服务器230标识为要被指派流的最后服务器设备230的信息、在重新指派来自另一服务器设备230的流之前重新指派来自服务器设备230的流。这经由流的有序重新指派而促进流指派一致性,由此使对通信的中断最小化。
在一些实现方式中,当重新指派流时,网络设备220可确定要下一个重新指派的流。在一些实现方式中,网络设备220可使用堆栈数据结构来确定要下一个重新指派的流。例如,网络设备220可以通过标识所指派的最后流来标识要重新指派的下一个流,其中堆栈数据结构中的最后条目标识被指派的最后流。以这种方式,当网络设备220正在重新指派来自多个服务器设备230中的每一个的流时,网络设备220可以通过标识最后指派的流来标识要重新指派的流。
在一些实现方式中,网络设备220可以按照循环方式来重新指派流,或者按照如本文别处所描述的另一方式来重新指派流。例如,在其中当第一服务器设备230被添加到多个服务器设备230时网络设备220将流从第二服务器设备230和第三服务器设备230重新指派给第一服务器设备230的情况下,网络设备220可以将最后指派的流从第二服务器设备230重新指派给第一服务器设备230,将倒数第二个指派的流从第三服务器设备230重新指派给第一服务器设备230,将在倒数第二个指派的流之后指派的流重新指派给第一服务器设备230,诸如此类。
在一些实现方式中,网络设备220可以继续重新指派流,直到每个服务器设备230已经被重新指派相等或接近相等数量的流,诸如当按照循环方式重新指派流时。附加地或者备选地,网络设备220可以重新指派流,直到每个服务器设备230已经被重新指派相等权重的流,诸如当网络设备220基于与流相关联的权重重新指派流时。以这种方式,当特定服务器设备230被添加到多个服务器设备230时,网络设备220可以按照循环方式重新指派流。这使被重新指派的流的数量最小化,由此节省处理资源,使对在网络设备220和服务器设备230之间的流的破坏最小化,并且增加流的指派的一致性(例如,通过使最初被指派给服务器设备230的流的重新指派相对于使用模运算而言最小化,使用模运算可能导致网络设备220好像重新指派是新的指派似的重新指派流)。
在一些实现方式中,网络设备220可以确定当新的服务器设备230被添加到多个服务器设备230时要重新指派的流的数量。例如,网络设备220可以使用等式或公式,诸如:
Q=L/(M+1)(1)
在式1中,项Q可表示要重新指派的流的数量,项L可表示网络设备220与多个服务器设备230之间的流的总数量,并且项M+1可表示包括添加的服务器设备230(例如,由1表示)的多个服务器设备230中包括的服务器设备230的总数量。在一些实现方式中,网络设备220可以使用式1来确定要重新指派给添加的服务器设备230的流的数量。例如,假设多个服务器设备230包括三个服务器设备230,并且附加服务器设备230被添加到多个服务器设备230。进一步例如假设在网络设备220与多个服务器设备230之间存在12个流。在这种情况下,网络设备220可以确定三个流将被重新指派给添加的服务器设备230(例如,基于式1的结果,其中12/(3+1)等于3)。
在一些实现方式中,当特定服务器设备230被从多个服务器设备230移除时,网络设备220可以将流从特定服务器设备230重新指派给其他服务器设备230。例如,网络设备220可以按照后指派先重新指派的方式将流从移除的服务器设备230重新指派给其他服务器设备230。
在一些实现方式中,网络设备220可以使用标识要被指派流的最后服务器设备230的信息来标识要向哪个服务器设备230重新指派流。例如,网络设备220可以使用将第一服务器设备230标识为要被指派流的最后服务器设备230的信息来确定将流重新指派给第二服务器设备230(例如,基于第二服务器设备230是要在第一服务器设备230之后被指派流的下一服务器设备230)。
在一些实现方式中,当重新指派流时,网络设备220可以确定要重新指派哪个流(例如,接下来要重新指派哪个流)。在一些实现方式中,网络设备220可以使用堆栈数据结构(例如,其中堆栈数据结构中的最后条目标识被指派的最后流,并且由此标识要重新指派的下一个流)来确定要重新指派哪个流。在一些实现方式中,网络设备220可以将被指派的最后流标识为要重新指派的下一个流。以这种方式,当网络设备220正在重新指派来自被移除的服务器设备230的流时,网络设备220可以重新指派从最后指派的流开始的流(例如,按照后指派先重新指派的方式)。
在一些实现方式中,网络设备220可以按照循环方式或另一方式来重新指派流。例如,假设第一服务器设备230已经被从多个服务器设备230移除,则网络设备220可以将最后指派的流从第一服务器设备230重新指派给第二服务器设备230,将倒数第二个指派的流从第一服务器设备230重新指派给第三服务器设备230,以此类推,直到来自第一服务器设备230的流已被重新指派。
在一些实现方式中,网络设备220可以按照循环方式或另一方式来重新指派流,该另一方式按照与流被指派给每个服务器设备230的方式相反的方式来重新指派流。例如,如果流在第二服务器设备230(其在第三服务器设备230之前被指派流)之前被指派给第一服务器设备230,则被指派给第三服务器设备230的流可以在被重新指派给第一服务器设备230之前被重新指派给第二服务器设备230。以这种方式,如果第三服务器设备230稍后被添加回到多个服务器设备230,则网络设备220可以维持流的指派的顺序。
在一些实现方式中,网络设备220可以使用链表来确定要将流重新指派给服务器设备230的顺序。例如,链表可以标识要向其重新指派流的服务器设备230。
在一些实现方式中,当第一服务器设备230被添加到多个服务器设备230并且第二服务器设备230同时被从多个服务器设备230移除时,网络设备220在将流重新指派给添加的服务器设备230之前可以首先将流从第二(移除的)服务器设备230重新指派给剩余的服务器设备230。在一些实现方式中,网络设备220然后可以将流从剩余的服务器设备230重新指派给添加的服务器设备230。换句话说,网络设备220可以使与服务器设备230的移除有关的重新指派优先于与服务器设备230的添加有关的重新指派。以这种方式,网络设备220使由于同时添加和移除服务器设备230而被重新指派的流的数量最小化。
在一些实现方式中,网络设备220可以按照先指派先重新指派的方式(例如,而不是如上所述按照后指派先重新指派的方式)来重新指派流。例如,假设第一流是要被指派给第一服务器设备230的第一流,则网络设备220可以在重新指派被指派给第一服务器设备230的第二流之前重新指派第一流。在一些实现方式中,网络设备220在特定上下文中可以按照先指派先重新指派的方式来重新指派流。例如,网络设备220在视频流送上下文中可以按照先指派先重新指派的方式来重新指派流,其中单个客户端设备210上的多个故障相对于一些其他类型的上下文可能更不可容忍。
以这种方式,网络设备220可以使用标识多个流被指派给多个服务器设备230的顺序的信息、按照后指派先重新指派的方式重新指派多个流。
如图4中进一步所示,过程400可包括监视多个服务器设备以检测何时另一服务器设备被添加到多个服务器设备或被从多个服务器设备移除(块450)。例如,网络设备220可以监视多个服务器设备230以检测何时特定服务器设备230被添加到多个服务器设备230或被从多个服务器设备230移除。在一些实现方式中,网络设备220可以按照类似于上述方式的方式来监视多个服务器设备230。在一些实现方式中,在监视多个服务器设备230时,网络设备220可以接收特定服务器设备230已被添加到多个服务器设备230或被从多个服务器设备230移除的指示和/或可以重新指派多个流。换句话说,过程500可包括返回到块430和/或块440。
在一些实现方式中,网络设备220可以在监视多个服务器设备230的同时向多个服务器设备230提供与流相关联的流量或从多个服务器设备230接收流量。在一些实现方式中,网络设备220可以经由网络设备220与多个服务器设备230之间的链路来提供或接收流量。
在一些实现方式中,网络设备220可以执行除了监视多个服务器设备230之外的动作。在一些实现方式中,网络设备220可以生成报告或向另一设备发送消息,该消息标识哪些流被指派给哪些服务器设备230、哪些服务器设备230是启动/停机或可用/不可用和/或类似情况。附加地或者备选地,网络设备220可以向客户端设备210发送消息,以向客户端设备210的用户通知在网络设备220重新指派流时服务可能被中断。附加地或者备选地,网络设备220可以向网络管理员的设备发送消息,以向网络管理员通知特定的服务器设备230已经停机或变得不可用。
以这种方式,网络设备220可以监视多个服务器设备以检测何时特定服务器设备230被添加到多个服务器设备230或被从多个服务器设备230移除。
尽管图4示出了过程400的示例块,在一些实现方式中,与图4中所示的那些相比,过程400可以包括附加块、更少的块、不同的块或被不同布置的块。附加地或者备选地,可以并行地执行过程400中的两个或更多个块。
本文中描述的实现方式可以按照循环方式或另一方式将流指派给服务器设备。此外,实现方式可以使用用于每个服务器设备的堆栈数据结构来存储标识被指派给每个服务器设备的流的信息。另外,实现方式可以使用堆栈数据结构、按照后指派先重新指派的方式来将流从一个服务器设备重新指派给另一服务器设备。
以这种方式,本文描述的实现方式使当服务器设备被添加到网络或被从网络移除时被重新指派的流的数量最小化,由此节省处理资源。另外,本文描述的实现方式相对于基于散列的负载均衡而言使流更均匀地分布,由此节省了服务器设备的处理资源。另外,本文描述的实现方式通过减少要再均衡的流的数量和/或通过减少针对再均衡所需的时间量来增加当服务器设备被添加到网络或被从网络移除时使流再均衡的效率。
尽管关于循环指派和/或重新指派描述了实现方式,但是如本文别处所描述的,其他实现方式可包括不同的指派方式和/或重新指派方式。
根据本申请的一个示例实施例,公开了一种设备,包括:一个或多个处理器,用于:接收标识多个服务器设备的第一信息和标识多个流的第二信息,所述多个流将被指派给所述多个服务器设备;基于接收到所述第一信息和所述第二信息并且不使用模运算,按照第一顺序来将所述多个流指派给所述多个服务器设备;将所述第二信息存储在多个数据结构中,以基于向所述多个服务器设备指派所述多个流来记录所述多个流向所述多个服务器设备的指派,所述多个数据结构中的数据结构对应于所述多个服务器设备中的相应服务器设备;在存储所述第二信息之后,接收第一服务器设备已被添加到所述多个服务器设备或被从所述多个服务器设备移除的指示;以及基于接收到所述指示,使用标识所述多个流被指派给所述多个服务器设备的顺序的第三信息,按照第二顺序来重新指派所述多个流的子集,所述第二顺序与所述第一顺序不同。
在所述设备中,其中所述一个或多个处理器还用于:在重新指派所述多个流的所述子集之后执行动作,所述动作包括发送标识所述多个流的所述子集向或从所述多个服务器设备的所述重新指派的消息。
在所述设备中,其中所述一个或多个处理器在指派所述多个流时用于:使用链表将所述多个流中的第一流指派给所述多个服务器设备中的第二服务器设备,所述链表将所述第二服务器设备标识为所述链表中的第一条目;在指派所述第一流之后,将所述多个流中的第二流指派给所述多个服务器设备中的第三服务器设备,所述链表将所述第三服务器设备标识为所述链表中的第二条目;以及在将第四流指派给第四服务器设备之后,将第三流指派给所述第二服务器设备,所述链表将所述第四服务器设备标识为所述链表中的最后条目。
在所述设备中,其中所述一个或多个处理器还用于:基于接收到所述指示来确定要重新指派的流的数量;并且其中所述一个或多个处理器在重新指派所述多个流的所述子集时用于:基于确定要重新指派的流的所述数量来重新指派所述多个流的所述子集。
在所述设备中,其中所述一个或多个处理器在指派所述多个流时用于:基于接收到所述第一信息和所述第二信息,将所述多个流指派给在所述设备与所述多个服务器设备之间的多个链路,或者基于接收到所述第一信息和所述第二信息,将所述多个流指派给在所述多个服务器设备上被实现的多个虚拟设备。
在所述设备中,其中所述一个或多个处理器还用于:基于接收到所述指示,使用标识所述多个服务器设备中的、将被指派所述多个流中的流的最后服务器设备的信息,来确定所述第三信息,或者基于接收到所述指示、使用所述数据结构来确定所述第三信息;并且其中所述一个或多个处理器在重新指派所述多个流的所述子集时用于:基于确定所述第三信息来重新指派所述多个流的所述子集。
在所述设备中,其中所述第二顺序包括:后指派先重新指派顺序,或者先指派先重新指派顺序。
根据本申请的另一示例实施例,公开了一种存储指令的非暂时性计算机可读介质,所述指令包括:一个或多个指令,其当被一个或多个处理器执行时,使得所述一个或多个处理器:接收标识多个服务器设备的第一信息和标识去往所述多个服务器设备的多个流的第二信息,所述多个流将被指派给所述多个服务器设备或者在网络设备与所述多个服务器设备之间的多个链路;基于接收到所述第一信息和所述第二信息,按照第一顺序来将所述多个流指派给所述多个服务器设备;将所述第二信息存储在多个数据结构中,以基于向所述多个服务器设备指派所述多个流来记录所述多个流向所述多个服务器设备的指派,所述多个数据结构中的数据结构对应于所述多个服务器设备中的相应服务器设备;在存储所述第二信息之后,接收第一服务器设备已被添加到所述多个服务器设备或被从所述多个服务器设备移除的指示;以及基于接收到所述指示,使用标识所述多个流被指派给所述多个服务器设备的顺序的第三信息,按照第二顺序来重新指派所述多个流的子集,所述第二顺序与所述第一顺序相反。
在所述非暂时性计算机可读介质中,其中使得所述一个或多个处理器接收所述指示的所述一个或多个指令使得所述一个或多个处理器:在存储所述第二信息之后接收所述第一服务器设备已被添加到所述多个服务器设备的指示;并且其中所述一个或多个指令在被所述一个或多个处理器执行时,还使得所述一个或多个处理器:基于接收到所述指示,确定要重新指派给第一服务器设备的、与所述多个流的所述子集对应的流的数量。
在所述非暂时性计算机可读介质中,其中使得所述一个或多个处理器接收所述指示的所述一个或多个指令使得所述一个或多个处理器:在存储所述第二信息之后,接收所述第一服务器设备已被从所述多个服务器设备移除的指示;并且其中所述一个或多个指令在被所述一个或多个处理器执行时,还使得所述一个或多个处理器:基于接收到所述指示,确定要重新指派给所述多个服务器设备中的剩余服务器设备的、与所述多个流的所述子集对应的流的数量。
在所述非暂时性计算机可读介质中,其中使得所述一个或多个处理器接收所述指示的所述一个或多个指令使得所述一个或多个处理器:接收所述第一服务器设备已被添加到所述多个服务器设备并且第二服务器设备同时已被从所述多个服务器设备移除的指示;并且其中所述一个或多个指令在被所述一个或多个处理器执行时,还使得所述一个或多个处理器:基于接收到所述指示,确定所述多个流中的要从所述第二服务器设备重新指派给所述多个服务器设备中的剩余服务器设备的流的第一数量;以及在确定所述第一数量之后,确定所述多个流中的要从所述剩余服务器设备重新指派给所述第一服务器设备的流的第二数量。
在所述非暂时性计算机可读介质中,其中所述一个或多个指令在被所述一个或多个处理器执行时,还使得所述一个或多个处理器:使用链表来确定所述多个服务器设备中的要向其指派所述多个流中的流的下一服务器设备,所述下一服务器设备由所述第一信息标识;并且其中使得所述一个或多个处理器指派所述多个流的所述一个或多个指令还使得所述一个或多个处理器:基于确定所述下一服务器设备来将所述流指派给所述下一服务器设备。
在所述非暂时性计算机可读介质中,其中所述一个或多个指令在被所述一个或多个处理器执行时,还使得所述一个或多个处理器:使用所述数据结构来确定所述多个流中的要重新指派的下一流,所述下一流由所述第二信息标识;并且其中使得所述一个或多个处理器重新指派所述多个流的所述子集的所述一个或多个指令还使得所述一个或多个处理器:基于确定要重新指派的所述下一流来重新指派所述下一流。
在所述非暂时性计算机可读介质中,其中所述一个或多个指令在被所述一个或多个处理器执行时,还使得所述一个或多个处理器:使用所述第一信息来确定被包括在所述多个服务器设备中的、将被指派所述多个流的服务器设备的总数量;使用所述第二信息来确定被包括在所述多个流中的、将被指派给所述多个服务器设备的流的总数量;以及基于确定服务器设备的所述总数量和流的所述总数量,确定要指派给所述多个服务器设备中的每个服务器设备的流的数量。
根据本申请的又一示例实施例,公开了一种方法,包括:由设备接收标识多个服务器设备的第一信息和标识多个流的第二信息,所述多个流将被指派给所述多个服务器设备;基于接收到所述第一信息和所述第二信息,由所述设备按照第一顺序将所述多个流指派给所述多个服务器设备;由所述设备将所述第二信息存储在多个数据结构中,以基于向所述多个服务器设备指派所述多个流来记录所述多个流向所述多个服务器设备的所述指派,所述多个数据结构中的数据结构对应于所述多个服务器设备中的相应服务器设备;在存储所述第二信息之后,由所述设备接收服务器设备已被添加到所述多个服务器设备或被从所述多个服务器设备移除的指示;以及基于接收到所述指示,由所述设备使用标识所述多个流被指派给所述多个服务器设备的顺序的第三信息、按照第二顺序来重新指派所述多个流的子集,所述第二顺序与所述第一顺序不同。
在所述方法中,其中指派所述多个流包括:按照循环顺序将所述多个流指派给所述多个服务器设备,或者按照加权循环顺序将所述多个流指派给所述多个服务器设备。
在所述方法中,其中重新指派所述多个流的所述子集包括:按照后指派先重新指派顺序重新指派所述多个流的所述子集。
在所述方法中,还包括:使用被存储在所述数据结构的末尾处的所述第二信息来标识所述多个流中的要重新指派的流,所述第二信息标识所述流;并且其中重新指派所述多个流的所述子集包括:基于标识所述流来重新指派所述流;以及基于重新指派所述流,从所述数据结构的所述末尾移除标识所述流的所述第二信息。
在所述方法中,还包括:使用所述第二信息来标识所述多个流中的要指派的流;并且其中指派所述多个流包括:基于标识所述流来将所述流指派给所述多个服务器设备中的特定服务器设备;以及基于将所述流指派给所述特定服务器设备,将标识所述流的所述第二信息存储在所述数据结构的末尾处,所述数据结构对应于所述特定服务器设备。
在所述方法中,还包括:在不使用模运算的情况下,确定所述多个服务器设备中的要向其指派所述多个流中的流的特定服务器设备;并且其中指派所述多个流包括:基于确定要向其指派所述流的所述特定服务器设备,将所述流指派给所述特定服务器设备。
前述公开内容提供了说明和描述,但并不旨在穷尽无疑或将实现方式限制为所公开的精确形式。修改和变更鉴于上述公开内容是可能的,或者可以从对实现方式的实践被获得。
如本文所使用的,术语组件旨在被广泛地解释为硬件、固件和/或硬件和软件的组合。
本文结合阈值描述了一些实现方式。如本文所使用的,满足阈值可以指的是值大于阈值、多于阈值、高于阈值、大于或等于阈值、小于阈值、少于阈值、低于阈值、小于或等于阈值、等于阈值,等等。
将会显然的是,本文描述的系统和/或方法可以按照不同形式的硬件、固件或硬件和软件的组合而被实现。用于实现这些系统和/或方法的实际专用控制硬件或软件代码并不限制实现方式。因此,本文在不参考特定软件代码的情况下描述了系统和/或方法的操作和行为——理解软件和硬件可以被设计为基于本文的描述来实现系统和/或方法。
虽然在权利要求中记载和/或在说明书中公开了特征的特定组合,这些组合也不旨在限制可能的实现方式的公开内容。事实上,这些特征中的许多可以按照未在权利要求书中具体记载和/或未在说明书中公开的方式被组合。虽然下面列出的每个从属权利要求可以直接从属于仅一个权利要求,但是可能的实现方式的公开内容包括结合权利要求组中的每个其他权利要求的每个从属权利要求。
本文使用的元件、动作或指令不应被解释为关键或必要的,除非被明确地这样描述。此外,如本文所使用的,冠词“一”旨在包括一个或多个项目,并且可以与“一个或多个”可互换地被使用。另外,如本文所使用的,术语“组”旨在包括一个或多个项目(例如,相关项目、不相关项目、相关和不相关项目的组合,等等),并且可以与“一个或多个”可互换地被使用。如果目的是仅一个项目,则术语“一个”或类似的语言被使用。此外,如本文所使用的,术语“具有”等旨在是开放式术语。另外,短语“基于”旨在表示“至少部分地基于”,除非另有明确说明。

Claims (13)

1.一种设备,包括:
用于接收标识多个服务器设备的第一信息和标识多个流的第二信息的装置,
所述多个流将被指派给所述多个服务器设备;
用于基于接收到所述第一信息和所述第二信息并且在不使用模运算的情况下、按照第一顺序将所述多个流指派给所述多个服务器设备的装置;
用于将所述第二信息存储在多个数据结构中、以基于向所述多个服务器设备指派所述多个流来记录所述多个流向所述多个服务器设备的指派的装置,
所述多个数据结构中的数据结构对应于所述多个服务器设
备中的相应服务器设备;
用于在存储所述第二信息之后、接收第一服务器设备已被添加到所述多个服务器设备或被从所述多个服务器设备移除的指示的装置;以及
用于基于接收到所述指示、使用标识所述多个流被指派给所述多个服务器设备的顺序的第三信息、按照第二顺序来重新指派所述多个流的子集的装置,
所述第二顺序与所述第一顺序不同。
2.根据权利要求1所述的设备,还包括:
用于在重新指派所述多个流的所述子集之后执行动作的装置,
所述动作包括发送标识所述多个流的所述子集向或从所述
多个服务器设备的所述重新指派的消息。
3.根据权利要求1所述的设备,其中用于指派所述多个流的所述装置包括:
用于使用链表来将所述多个流中的第一流指派给所述多个服务器设备中的第二服务器设备的装置,
所述链表将所述第二服务器设备标识为所述链表中的第一
条目;
用于在指派所述第一流之后、将所述多个流中的第二流指派给所述多个服务器设备中的第三服务器设备的装置,
所述链表将所述第三服务器设备标识为所述链表中的第二
条目;以及
用于在将第四流指派给第四服务器设备之后、将第三流指派给所述第二服务器设备的装置,
所述链表将所述第四服务器设备标识为所述链表中的最后
条目。
4.根据权利要求1所述的设备,还包括:
用于基于接收到所述指示来确定要重新指派的流的数量的装置;并且
其中用于重新指派所述多个流的所述子集的所述装置包括:
用于基于确定要重新指派的流的所述数量来重新指派所述
多个流的所述子集的装置。
5.根据权利要求1所述的设备,其中用于指派所述多个流的所述装置包括:
用于基于接收到所述第一信息和所述第二信息来将所述多个流指派给在所述设备与所述多个服务器设备之间的多个链路的装置,或者
用于基于接收到所述第一信息和所述第二信息来将所述多个流指派给在所述多个服务器设备上被实现的多个虚拟设备的装置。
6.根据权利要求1所述的设备,还包括:
用于基于接收到所述指示、使用标识所述多个服务器设备中的、将被指派所述多个流中的流的最后服务器设备的信息、来确定所述第三信息的装置,或者
用于基于接收到所述指示、使用所述数据结构来确定所述第三信息的装置;并且
其中用于重新指派所述多个流的所述子集的所述装置包括:
用于基于确定所述第三信息来重新指派所述多个流的所述
子集的装置。
7.根据权利要求1所述的设备,其中所述第二顺序包括:
后指派先重新指派顺序,或者
先指派先重新指派顺序。
8.一种方法,包括:
由设备接收标识多个服务器设备的第一信息和标识多个流的第二信息,
所述多个流将被指派给所述多个服务器设备;
基于接收到所述第一信息和所述第二信息,由所述设备按照第一顺序将所述多个流指派给所述多个服务器设备;
由所述设备将所述第二信息存储在多个数据结构中,以基于向所述多个服务器设备指派所述多个流来记录所述多个流向所述多个服务器设备的所述指派,
所述多个数据结构中的数据结构对应于所述多个服务器设
备中的相应服务器设备;
在存储所述第二信息之后,由所述设备接收服务器设备已被添加到所述多个服务器设备或被从所述多个服务器设备移除的指示;以及
基于接收到所述指示,由所述设备使用标识所述多个流被指派给所述多个服务器设备的顺序的第三信息、按照第二顺序来重新指派所述多个流的子集,
所述第二顺序与所述第一顺序不同。
9.根据权利要求8所述的方法,其中指派所述多个流包括:
按照循环顺序将所述多个流指派给所述多个服务器设备,或者
按照加权循环顺序将所述多个流指派给所述多个服务器设备。
10.根据权利要求9所述的方法,其中重新指派所述多个流的所述子集包括:
按照后指派先重新指派顺序重新指派所述多个流的所述子集。
11.根据权利要求8所述的方法,还包括:
使用被存储在所述数据结构的末尾处的所述第二信息来标识所述多个流中的要重新指派的流,
所述第二信息标识所述流;并且
其中重新指派所述多个流的所述子集包括:
基于标识所述流来重新指派所述流;以及
基于重新指派所述流,从所述数据结构的所述末尾移除标识所述流的所述第二信息。
12.根据权利要求8所述的方法,还包括:
使用所述第二信息来标识所述多个流中的要指派的流;并且
其中指派所述多个流包括:
基于标识所述流来将所述流指派给所述多个服务器设备中的特定服务器设备;以及
基于将所述流指派给所述特定服务器设备,将标识所述流的所述第二信息存储在所述数据结构的末尾处,
所述数据结构对应于所述特定服务器设备。
13.根据权利要求8所述的方法,还包括:
在不使用模运算的情况下,确定所述多个服务器设备中的、要向其指派所述多个流中的流的特定服务器设备;并且
其中指派所述多个流包括:
基于确定要向其指派所述流的所述特定服务器设备,将所述流指派给所述特定服务器设备。
CN201710922672.1A 2017-02-01 2017-09-30 负载均衡中的一致流指派的方法及设备 Active CN108377254B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/421,950 2017-02-01
US15/421,950 US10476945B2 (en) 2017-02-01 2017-02-01 Consistent flow assignment in load balancing

Publications (2)

Publication Number Publication Date
CN108377254A true CN108377254A (zh) 2018-08-07
CN108377254B CN108377254B (zh) 2021-06-29

Family

ID=60119795

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710922672.1A Active CN108377254B (zh) 2017-02-01 2017-09-30 负载均衡中的一致流指派的方法及设备

Country Status (3)

Country Link
US (1) US10476945B2 (zh)
EP (1) EP3358464A1 (zh)
CN (1) CN108377254B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6327622B1 (en) * 1998-09-03 2001-12-04 Sun Microsystems, Inc. Load balancing in a network environment
US20030236888A1 (en) * 2002-06-20 2003-12-25 International Business Machines Corporation Method for improving network server load balancing
US20040243709A1 (en) * 2003-05-27 2004-12-02 Sun Microsystems, Inc. System and method for cluster-sensitive sticky load balancing
EP1832085A1 (en) * 2004-12-13 2007-09-12 Intel Corporation Flow assignment
US20130155902A1 (en) * 2011-12-16 2013-06-20 Cisco Technology, Inc. System and method for non-disruptive management of servers in a network environment
EP2629490A1 (en) * 2012-02-14 2013-08-21 Telefonaktiebolaget L M Ericsson (Publ) Optimizing traffic load in a communications network
CN103841041A (zh) * 2012-11-23 2014-06-04 中兴通讯股份有限公司 一种多流业务并发传输控制方法及装置
CN104519125A (zh) * 2013-09-27 2015-04-15 英特尔公司 对于拓扑变化有弹性的分布式按次序负载分布
CN104935524A (zh) * 2015-06-17 2015-09-23 华中科技大学 一种多径网络基于链路时延控制的软负载均衡方法
EP2940580A1 (en) * 2014-04-30 2015-11-04 Alcatel Lucent Method for performing load balancing, distributed computing environment, cluster and computer program product
CN105933232A (zh) * 2016-03-29 2016-09-07 东北大学 支持多业务数据传输需求的多径传输控制终端及方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779039B1 (en) * 2000-03-31 2004-08-17 Avaya Technology Corp. System and method for routing message traffic using a cluster of routers sharing a single logical IP address distinct from unique IP addresses of the routers
US7266079B2 (en) * 2000-09-18 2007-09-04 Broadcom Corporation Dynamic network load balancing over heterogeneous link speed
US7636917B2 (en) * 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US7693050B2 (en) * 2005-04-14 2010-04-06 Microsoft Corporation Stateless, affinity-preserving load balancing
US7990847B1 (en) * 2005-04-15 2011-08-02 Cisco Technology, Inc. Method and system for managing servers in a server cluster
US20080228926A1 (en) * 2007-03-13 2008-09-18 Asher Shiratzky Methods, media, and systems for balancing session initiation protocol server load
US8825867B2 (en) * 2012-05-04 2014-09-02 Telefonaktiebolaget L M Ericsson (Publ) Two level packet distribution with stateless first level packet distribution to a group of servers and stateful second level packet distribution to a server within the group
US9680764B2 (en) * 2013-04-06 2017-06-13 Citrix Systems, Inc. Systems and methods for diameter load balancing
US10069903B2 (en) * 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
US9461922B2 (en) * 2013-09-13 2016-10-04 Aol Inc. Systems and methods for distributing network traffic between servers based on elements in client packets
US9923827B2 (en) * 2014-09-05 2018-03-20 At&T Intellectual Property I, L.P. Load balancing and migration of transport connections
US9497123B2 (en) * 2014-12-18 2016-11-15 Telefonaktiebolaget L M Ericsson (Publ) Method and system for load balancing in a software-defined networking (SDN) system upon server reconfiguration
US10348812B2 (en) * 2015-06-22 2019-07-09 Vmware Inc. Sticky session data migration
US10142407B2 (en) * 2016-06-30 2018-11-27 Nokia Of America Corporation Centralized load balancer with weighted hash function

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6327622B1 (en) * 1998-09-03 2001-12-04 Sun Microsystems, Inc. Load balancing in a network environment
US20030236888A1 (en) * 2002-06-20 2003-12-25 International Business Machines Corporation Method for improving network server load balancing
US20040243709A1 (en) * 2003-05-27 2004-12-02 Sun Microsystems, Inc. System and method for cluster-sensitive sticky load balancing
EP1832085A1 (en) * 2004-12-13 2007-09-12 Intel Corporation Flow assignment
US20130155902A1 (en) * 2011-12-16 2013-06-20 Cisco Technology, Inc. System and method for non-disruptive management of servers in a network environment
EP2629490A1 (en) * 2012-02-14 2013-08-21 Telefonaktiebolaget L M Ericsson (Publ) Optimizing traffic load in a communications network
CN103841041A (zh) * 2012-11-23 2014-06-04 中兴通讯股份有限公司 一种多流业务并发传输控制方法及装置
CN104519125A (zh) * 2013-09-27 2015-04-15 英特尔公司 对于拓扑变化有弹性的分布式按次序负载分布
EP2940580A1 (en) * 2014-04-30 2015-11-04 Alcatel Lucent Method for performing load balancing, distributed computing environment, cluster and computer program product
CN104935524A (zh) * 2015-06-17 2015-09-23 华中科技大学 一种多径网络基于链路时延控制的软负载均衡方法
CN105933232A (zh) * 2016-03-29 2016-09-07 东北大学 支持多业务数据传输需求的多径传输控制终端及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LINGXU KONG: ""Adaptive relay chain routing with load balancing and high energy efficiency"", 《IEEE SENSORS JOURNAL》 *
欧阳一鸣: ""基于故障粒度划分的Noc链路自适应容错方法"", 《电子测量与仪器学报》 *

Also Published As

Publication number Publication date
EP3358464A1 (en) 2018-08-08
US10476945B2 (en) 2019-11-12
US20180219941A1 (en) 2018-08-02
CN108377254B (zh) 2021-06-29

Similar Documents

Publication Publication Date Title
US10965586B2 (en) Resilient network communication using selective multipath packet flow spraying
JP6169251B2 (ja) 分散型ロードバランサにおける非対称パケットフロー
Al-Fares et al. A scalable, commodity data center network architecture
CN1875585B (zh) 利用mac限制来控制动态未知l2泛滥的方法和系统
CN107995123A (zh) 一种基于交换机的负载均衡系统及方法
US9596179B2 (en) Optimizing private virtual local area networks (VLANS)
Cui et al. Difs: Distributed flow scheduling for data center networks
CN107547661A (zh) 一种高性能且高可用的容器负载均衡实现方法
US20150312153A1 (en) Systems and methods for load-balancing in a data center
Xia et al. Reasonably migrating virtual machine in NFV-featured networks
Zaher et al. Sieve: A flow scheduling framework in SDN based data center networks
Xiaolong et al. MTSS: multi-path traffic scheduling mechanism based on SDN
Buyakar et al. Prototyping and load balancing the service based architecture of 5G core using NFV
Zhu et al. EdgePlace: availability‐aware placement for chained mobile edge applications
Aljoby et al. On SDN-enabled online and dynamic bandwidth allocation for stream analytics
Zahid et al. A weighted fat-tree routing algorithm for efficient load-balancing in infini band enterprise clusters
Rashid Sorted-GFF: An efficient large flows placing mechanism in software defined network datacenter
US9491098B1 (en) Transparent network multipath utilization through encapsulation
CN113709220B (zh) 虚拟负载均衡器的高可用实现方法、系统及电子设备
CN104704788A (zh) 确定针对分组检查设备处的数据单元的负载分配
Zahid et al. Partition-aware routing to improve network isolation in infiniband based multi-tenant clusters
Ma et al. A comprehensive study on load balancers for vnf chains horizontal scaling
CN109889530B (zh) Web应用防火墙系统及计算机存储介质
CN108377254A (zh) 负载均衡中的一致流指派
AlShammari et al. BL‐Hybrid: A graph‐theoretic approach to improving software‐defined networking‐based data center network performance

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant