CN113923166B - 负载均衡方法和分布式集群系统 - Google Patents
负载均衡方法和分布式集群系统 Download PDFInfo
- Publication number
- CN113923166B CN113923166B CN202111233077.XA CN202111233077A CN113923166B CN 113923166 B CN113923166 B CN 113923166B CN 202111233077 A CN202111233077 A CN 202111233077A CN 113923166 B CN113923166 B CN 113923166B
- Authority
- CN
- China
- Prior art keywords
- server
- request
- node
- downstream node
- load 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 169
- 230000008569 process Effects 0.000 claims description 23
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 230000000694 effects Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 206010033799 Paralysis Diseases 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/534—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及一种负载均衡方法和分布式集群系统。该方法包括:上游节点接收待处理请求,并获取各下游节点的第一当前负载信息和第一请求分配计数;第一请求分配计数是上游节点中记录的已分配至下游节点的请求的数量;上游节点基于每个下游节点的第一当前负载信息和第一请求分配计数,确定相应下游节点的第一负载校正值;上游节点将最小第一负载校正值对应的下游节点确定为目标下游节点;上游节点将待处理请求分配至目标下游节点,并更新目标下游节点的第一请求分配计数。根据本公开实施例,提高了第一负载校正值计算的准确性,降低了各下游节点的实际负载差异,从而提高了各下游节点的负载均衡性。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种负载均衡方法和分布式集群系统。
背景技术
为了提高业务处理能力以及避免单节点导致的服务崩溃问题,目前诸多业务启用分布式集群系统,并采用一定的负载均衡策略,以将用户请求尽可能均衡地分配给分布式集群系统中的各处理节点进行处理。
目前常用的负载均衡策略是:每个处理节点按一定间隔上报自己的负载情况和运行状态信息等给执行负载均衡策略的节点(称为负载均衡节点)。负载均衡节点根据每个处理节点的负载情况和运行状态信息计算出相应处理节点的负载均衡的指标值,并根据这些指标值来分配用户请求。
但是,上述负载均衡策略中,如果处理节点上报其负载相关信息不及时,会造成计算的负载均衡的指标值不准确,使得用户请求被不断堆积在某一处理节点上,从而导致各处理节点的实际负载不均衡,降低分布式集群系统的处理效率。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种负载均衡方法和分布式集群系统。
第一方面,本公开提供了一种负载均衡方法,该方法包括:
上游节点接收待处理请求,并获取各下游节点的第一当前负载信息和第一请求分配计数;其中,所述第一请求分配计数是所述上游节点中记录的已分配至所述下游节点的请求的数量;
所述上游节点基于每个所述下游节点的所述第一当前负载信息和所述第一请求分配计数,确定相应下游节点的第一负载校正值;
所述上游节点将各所述第一负载校正值中最小第一负载校正值对应的所述下游节点确定为目标下游节点;
所述上游节点将所述待处理请求分配至所述目标下游节点,并更新所述目标下游节点的所述第一请求分配计数。
第二方面,本公开还提供了一种负载均衡方法,应用于游戏分布式集群系统,该方法包括:
管理服务器接收游戏登录请求,并获取所述管理服务器下辖的各网关服务器的第二当前负载信息和第二请求分配计数;其中,所述第二请求分配计数是所述管理服务器中记录的已分配至所述网关服务器的请求的数量;
所述管理服务器基于每个所述网关服务器的所述第二当前负载信息和所述第二请求分配计数,确定每个所述网关服务器的第二负载校正值;
所述管理服务器将各所述第二负载校正值中最小第二负载校正值对应的所述网关服务器确定为目标网关服务器;
所述管理服务器更新所述目标网关服务器的所述第二请求分配计数。
第三方面,本公开还提供了一种负载均衡方法,应用于游戏分布式集群系统,该方法包括:
路由服务器接收战斗房间创建请求,并获取所述路由服务器下辖的各战斗服务器的第四当前负载信息和第四请求分配计数;其中,所述第四请求分配计数是所述路由服务器中记录的已分配至所述战斗服务器的请求的数量;
所述路由服务器基于每个所述战斗服务器的所述第四当前负载信息和所述第四请求分配计数,确定每个所述战斗服务器的第四负载校正值;
所述路由服务器将各所述第四负载校正值中最小第四负载校正值对应的所述战斗服务器确定为目标战斗服务器;
所述路由服务器更新所述目标战斗服务器的所述第四请求分配计数;
所述路由服务器将所述战斗房间创建请求分配至所述目标战斗服务器,以使所述目标战斗服务器创建战斗房间。
第四方面,本公开还提供了一种分布式集群系统,该分布式集群系统包括至少两个上游节点和至少两个下游节点;
上游节点用于:
接收待处理请求,并获取各下游节点的第一当前负载信息和第一请求分配计数;其中,第一请求分配计数是上游节点中记录的已分配至下游节点的请求的数量;
基于每个下游节点的第一当前负载信息和第一请求分配计数,确定相应下游节点的第一负载校正值;
将各第一负载校正值中最小第一负载校正值对应的下游节点确定为目标下游节点;
将待处理请求分配至目标下游节点,并更新所述目标下游节点的所述第一请求分配计数。
第五方面,本公开还提供了游戏分布式集群系统,所述游戏分布式集群系统包括管理服务器和至少两个网关服务器;
所述管理服务器用于:
接收游戏登录请求,并获取所述管理服务器下辖的各网关服务器的第二当前负载信息和第二请求分配计数;其中,所述第二请求分配计数是所述管理服务器中记录的已分配至所述网关服务器的请求的数量;
基于每个所述网关服务器的所述第二当前负载信息和所述第二请求分配计数,确定每个所述网关服务器的第二负载校正值;
将各所述第二负载校正值中最小第二负载校正值对应的所述网关服务器确定为目标网关服务器;
更新所述目标网关服务器的所述第二请求分配计数。
第六方面,本公开还提供了一种游戏分布式集群系统,所述游戏分布式集群系统包括路由服务器和至少两个战斗服务器;
所述路由服务器用于:
接收战斗房间创建请求,并获取所述路由服务器下辖的各战斗服务器的第四当前负载信息和第四请求分配计数;其中,所述第四请求分配计数是所述路由服务器中记录的已分配至所述战斗服务器的请求的数量;
基于每个所述战斗服务器的所述第四当前负载信息和所述第四请求分配计数,确定每个所述战斗服务器的第四负载校正值;
将各所述第四负载校正值中最小第四负载校正值对应的所述战斗服务器确定为目标战斗服务器;
更新所述目标战斗服务器的所述第四请求分配计数;
将所述战斗房间创建请求分配至所述目标战斗服务器,以使所述目标战斗服务器创建战斗房间。
本公开实施例的负载均衡方案,能够在分布式集群系统的负载均衡过程中,根据每个下游节点的第一当前负载信息和上游节点中记录的已分配至相应下游节点的第一请求分配计数,计算相应下游节点的第一负载校正值,并将具有最小第一负载校正值的下游节点确定为目标节点来处理待处理请求。实现了新增第一请求分配计数来解决下游节点的负载信息上报不及时而造成的负载均衡效果差的问题,提高了第一负载校正值计算的准确性,从而降低了各下游节点的实际负载差异,提高了各下游节点的负载均衡性,进而提高了分布式集群系统的处理效率。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1为本公开实施例提供的一种分布式集群系统的架构图;
图2为本公开实施例提供的一种负载均衡方法的流程示意图;
图3为本公开实施例提供的另一种负载均衡方法的流程示意图;
图4为本公开实施例提供的一种负载均衡实现示例的过程示意图;
图5为本公开实施例提供的另一种负载均衡实现示例的过程示意图;
图6为本公开实施例提供的一种游戏分布式集群系统的架构图;
图7为本公开实施例提供的一种应用于游戏分布式集群系统的负载均衡方法的流程示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
目前的分布式集群系统的负载均衡策略主要是负载均衡节点(可称为上游节点)根据各处理节点(可称为相对于负载均衡节点的下游节点)上报的负载和运行状态等相关信息来计算各下游节点的负载均衡的指标值,进而根据该负载均衡的指标值进行用户请求的分配。但是,该方案存在下游节点因负载过大产生消息阻塞或上报周期过长等原因而无法及时上报负载信息的问题,其导致上游节点进行错误的请求分配决策,使得用户请求堆积在某一下游节点,进而导致各下游节点的实际负载并不均衡,降低了分布式集群系统的处理效率。
基于上述情况,本公开实施例提供一种负载均衡方案,以在分布式集群系统的负载均衡过程中,在各下游节点上报的负载信息的基础上,增加各下游节点中已分配的请求的计数(即第一请求分配计数)来校正负载信息未重新上报期间的下游节点的负载信息,提高负载均衡的指标值计算的准确性,从而提高各下游节点的负载均衡性,进而提高分布式集群系统的处理效率。
图1是本公开实施例提供的一种分布式集群系统的架构图。如图1所示,该分布式集群系统100中包含至少两个上游节点110和至少两个下游节点120。上游节点110和下游节点120之间通信连接。上游节点110和下游节点120均可以是电子设备,该电子设备例如可以是笔记本电脑、台式电脑和服务器等。
每个下游节点120都可以对分配下来的待处理请求进行处理。每个上游节点110均可接收上游下发的待处理请求,并通过执行本公开任意实施例所说明的负载均衡方法的步骤来将该待处理请求分配至某一下游节点120。本公开实施例提供的分布式集群系统中,可将每个上游节点作为负载均衡器来实现负载均衡,无需新增独立的负载均衡器,且确保执行负载均衡策略的上游节点的数量为至少两个,避免单一节点崩溃而造成的系统瘫痪,提高了分布式集群系统的负载均衡效率和系统的处理效率。
下面结合图2-5对本公开实施例提供的负载均衡方法进行说明。
图2示出了本公开实施例提供的一种负载均衡方法的流程示意图。如图2所示,该负载均衡方法可以包括如下步骤:
S210、上游节点接收待处理请求,并获取各下游节点的第一当前负载信息和第一请求分配计数。
其中,待处理请求是指分布式集群系统的上游节点的上游下发的、需要下游节点处理的请求,其可以是用户触发生成的用户侧请求,也可以是其他业务模块生成的中间请求。根据上述说明,上游节点和下游节点是相对概念,下游节点是负责执行具体的业务功能的某一类节点,而上游节点是能够管理下游节点的节点、或者是能够为下游节点中转消息的节点等。
负载信息是表征下游节点的核心负载的指标的值,其不包含下游节点的运行状态和处理能力等信息。例如,对于游戏业务,负载信息可以是下游节点承载的参与游戏的玩家数量;对于直播业务,负载信息可以是下游节点已创建的直播房间实例的直播房间数量等。第一当前负载信息是指当前时刻上游节点中存储的下游节点的负载信息,而不是下游节点的实际负载信息。上游节点中存储的负载信息是对应的下游节点按照一定的规则(如定时周期到达,或预先设置的操作被触发等)上报至上游节点的负载信息。
第一请求分配计数是上游节点中记录的已分配至下游节点的请求的数量,即第一请求分配计数是上游节点中记录的、该上游节点已经向某一下游节点分配的请求的数量。例如,该上游节点未向该下游节点分配过请求,那么该下游节点的第一请求分配计数为0;该上游节点已向该下游节点分配了3个请求,那么该下游节点的第一请求分配计数为3。
具体地,根据上述说明,下游节点会因为负载过大或上报周期过长等原因无法及时地向上游节点上报其实际负载信息,使得上游节点中存储的该下游节点的第一当前负载信息不准确。所以,为了校正上游节点中存储的各下游节点的负载信息,本公开实施例中在计算每个下游节点的负载均衡的指标值(即第一负载校正值)时,除了考虑下游节点的负载信息之外,新增了相应下游节点的第一请求分配计数,以在上游节点中暂时记录下游节点的负载变化信息。
具体实施时,上游节点接收待处理请求后,获取该上游节点中记录的各个下游节点的第一当前负载信息和第一请求分配计数,例如从上游节点的存储器或外部存储器中读取每个下游节点对应的第一当前负载信息和第一请求分配计数。
S220、上游节点基于每个下游节点的第一当前负载信息和第一请求分配计数,确定相应下游节点的第一负载校正值。
其中,第一负载校正值是在各个下游节点中均衡地分配待处理请求时所依据的指标的值,其是对第一当前负载信息进行校正后所得的下游节点的实际负载信息的近似值。
具体地,针对每个下游节点,上游节点根据第一请求分配计数对该下游节点的第一当前负载信息进行校正,便可获得该下游节点的第一负载校正值。例如,因第一当前负载信息是上报时刻下游节点中已经承载的负载的量,而第一请求分配计数是上报时刻之后上游节点记录的分配给下游节点的负载的量,所以,可以将第一当前负载信息和第一请求分配计数相加,所得的和便为该下游节点的第一负载校正值。
S230、上游节点将各第一负载校正值中最小第一负载校正值对应的下游节点确定为目标下游节点。
具体地,下游节点的第一负载校正值越小,表示该下游节点中已经承载的负载越小。在假设各下游节点所承载的总负载相同以及各下游节点的处理能力相同的基础上,下游节点的第一负载校正值越小,也就表示该下游节点可继续承载的负载越大,其被分配待处理请求的可能性就越大。所以,上游节点从各第一负载校正值中选择数值最小的第一负载校正值。然后,将该最小的第一负载校正值对应的下游节点确定为本次请求分配的最优下游节点(即目标下游节点)。
S240、上游节点将待处理请求分配至目标下游节点,并更新目标下游节点的第一请求分配计数。
具体地,上游节点将待处理请求分配给目标下游节点,以便目标下游节点接收并处理该待处理请求。另外,上游节点中需要更新该目标下游节点对应的第一请求分配计数,即将待处理请求分配之前的第一请求分配计数累加1,得到更新后的第一请求分配计数。该更新后的第一请求分配计数将继续用于后续的负载均衡过程。
上述各实施例的负载均衡方案,能够在分布式集群系统的负载均衡过程中,根据每个下游节点的第一当前负载信息和上游节点中记录的已分配至相应下游节点的第一请求分配计数,计算相应下游节点的第一负载校正值,并将具有最小第一负载校正值的下游节点确定为目标节点来处理待处理请求。实现了新增第一请求分配计数来解决下游节点的负载信息上报不及时而造成的负载均衡效果差的问题,提高了第一负载校正值计算的准确性,从而降低了各下游节点的实际负载差异,提高了各下游节点的负载均衡性,进而提高了分布式集群系统的处理效率。
在上述技术方案的基础上,在将待处理请求分配至目标下游节点之后,该负载均衡方法还包括:上游节点在接收到任一下游节点重新上报的负载信息时,利用重新上报的负载信息覆盖相应下游节点的第一当前负载信息,以完成第一当前负载信息的更新,并将相应下游节点的第一请求分配计数调整为0。
具体地,对于某一个下游节点,上游节点中存储的该下游节点的第一当前负载信息和第一请求分配计数的有效期是该下游节点的一个上报周期。即在下游节点上报了其负载信息,到该下游节点下一次上报其负载信息期间,上游节点中存储的第一当前负载信息保持不变,而第一请求分配计数根据是否向该下游节点分配请求来确定,未分配请求则第一请求分配计数不变,分配n个请求,则第一请求分配计数在初始计数0的基础上累加n。在该下游节点下一次上报其负载信息时,上游节点要用重新上报的负载信息覆盖掉原有的负载信息,即将重新上报的负载信息作为新的第一当前负载信息。并且,因为重新上报的负载信息是当前时刻下游节点的实际负载信息,所以上游节点中的第一当前负载信息是正确的,则要将该下游节点对应的第一请求分配计数归零,即第一请求分配计数重新赋值为0。这样可以实现下游节点的负载信息的更新及对第一请求分配计数的重置,一定程度上能够减弱第一请求分配计数的误差对请求均衡分配的影响,从而进一步提高上游节点计算的第一负载校正值的准确性,进而进一步提高负载分配的均衡性。
图3是本公开实施例提供的另一种负载均衡方法的流程图。参见图3,该负载均衡方法可以包括如下步骤:
S310、上游节点接收待处理请求,并获取各下游节点的第一当前负载信息和第一请求分配计数。
S320、上游节点基于每个下游节点的第一当前负载信息、第一请求分配计数和上游节点数量,确定相应下游节点的第一负载校正值。
其中,上游节点数量是指分布式集群系统中包含的上游节点的数量。
具体地,对于上述各实施例提供的负载均衡方案,如果有两个上游节点均向同一下游节点分配了待处理请求,那么该下游节点的实际负载是增加了2,但是每个上游节点中对应的第一请求分配计数均只累加了1,这样就使得该下游节点的实际负载信息(即第一当前负载信息+2)和上游节点中记录的第一负载校正值(第一当前负载信息+1)之间存在差异。经过分析可发现,这种差异会随着请求下发的集中度和上游节点数量的增加而成倍增加。基于此,本公开实施例中在下游节点的负载信息进行校正时,又增加了上游节点数量,以校正多个上游节点向同一下游节点分配待处理请求后引起的第一请求分配计数的差异。即上游节点需要同时获取任一下游节点的第一当前负载信息、第一请求分配计数和上游节点数量,并对这三个量进行一定方式的计算,便可得到相应下游节点的第一负载校正值。
在一些实施例中,S320可实现为:针对每个下游节点,上游节点确定下游节点的第一请求分配计数和上游节点数量的乘积,并将乘积和下游节点的第一当前负载信息的相加结果确定为下游节点的第一负载校正值。
具体地,根据上述说明,下游节点的实际负载信息和上游节点计算的第一负载校正值之间的差异是因为多个上游节点均向该下游节点分配了待处理请求,导致了上游节点中的第一请求分配计数的数值错误。例如,2个上游节点均向下游节点分配了请求,每个上游节点中记录的第一请求分配计数应当+1,实际负载应当+2;3个上游节点均向下游节点分配了请求,每个上游节点中记录的第一请求分配计数应当+1,实际负载应当+3。所以,将第一请求分配计数与上游节点数量相乘,来得到尽可能地与实际相符的第一请求分配计数结果。即针对每个下游节点,下游节点的第一负载校正值=第一当前负载信息+第一请求分配计数*上游节点数量。这样能够直接利用上游节点数量校正第一请求分配计数,提高第一请求分配计数的准确性,从而进一步提高第一负载校正值的准确性,进而进一步提高负载分配均衡性。
S330、上游节点将各第一负载校正值中最小第一负载校正值对应的下游节点确定为目标下游节点。
S340、上游节点将待处理请求分配至目标下游节点,并更新目标下游节点的第一请求分配计数。
S350、上游节点在接收到任一下游节点重新上报的负载信息时,利用重新上报的负载信息覆盖相应下游节点的第一当前负载信息,以完成第一当前负载信息的更新,并将相应下游节点的第一请求分配计数调整为0。
上述各实施例提供的负载均衡方案,能够在负载均衡过程中,利用下游节点对应的第一请求分配计数和上游节点数量,对该下游节点的第一当前负载信息进行校正,一定程度上解决了多个上游节点均向该下游节点分配请求的情况下,各上游节点中记录的第一请求分配计数不准确而导致的第一负载校正值不准确的问题,进一步提高了第一负载校正值的准确性,进一步减小了各下游节点的实际负载的差异,从而进一步提高了各下游节点的负载分配的均衡性。
针对图3所示的负载均衡方法进行举例说明。假设分布式集群系统中包含2个上游节点A1、A2和三个下游节点B1、B2、B3,对3个待处理请求进行分配。
在一示例中,三个下游节点之间的初始负载差异较小。如初始状态下,B1负载为100,B2负载为101,B3负载为102。该示例中3个待处理请求的分配过程如图4所示:
S410、下游节点B1、下游节点B2和下游节点B3分别将其初始负载信息上报至上游节点A1和上游节点A2。此时,上游节点A1中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=0;第一当前负载信息[B2]=101,第一请求分配计数[B2]=0;第一当前负载信息[B3]=102,第一请求分配计数[B3]=0。上游节点A2中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=0;第一当前负载信息[B2]=101,第一请求分配计数[B2]=0;第一当前负载信息[B3]=102,第一请求分配计数[B3]=0。
S420、当待处理请求1下发至上游节点A1后,上游节点A1根据下游节点的第一负载校正值=第一当前负载信息+第一请求分配计数*上游节点数量,分别计算得下游节点B1、下游节点B2和下游节点B3的第一负载校正值,分别为100、101和102。并将第一负载校正值为100的下游节点B1确定为目标下游节点。
S430、上游节点A1将待处理请求1分配至下游节点B1。分配完成后,上游节点A1中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=1;第一当前负载信息[B2]=101,第一请求分配计数[B2]=0;第一当前负载信息[B3]=102,第一请求分配计数[B3]=0。分配完成后,上游节点A2中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=0;第一当前负载信息[B2]=101,第一请求分配计数[B2]=0;第一当前负载信息[B3]=102,第一请求分配计数[B3]=0。分配完成后,三个下游节点的实际负载信息为:实际负载信息[B1]=101、实际负载信息[B2]=101、实际负载信息[B3]=102。
S440、当待处理请求2下发至上游节点A2后,上游节点A2根据下游节点的第一负载校正值=第一当前负载信息+第一请求分配计数*上游节点数量,分别计算得下游节点B1、下游节点B2和下游节点B3的第一负载校正值,分别为100、101和102。并将第一负载校正值为100的下游节点B1确定为目标下游节点。
S450、上游节点A2将待处理请求2分配至下游节点B1。分配完成后,上游节点A1中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=1;第一当前负载信息[B2]=101,第一请求分配计数[B2]=0;第一当前负载信息[B3]=102,第一请求分配计数[B3]=0。分配完成后,上游节点A2中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=1;第一当前负载信息[B2]=101,第一请求分配计数[B2]=0;第一当前负载信息[B3]=102,第一请求分配计数[B3]=0。分配完成后,三个下游节点的实际负载信息为:实际负载信息[B1]=102、实际负载信息[B2]=101、实际负载信息[B3]=102。
S460、当待处理请求3下发至上游节点A1后,上游节点A1根据下游节点的第一负载校正值=第一当前负载信息+第一请求分配计数*上游节点数量,分别计算得下游节点B1、下游节点B2和下游节点B3的第一负载校正值,分别为102、101和102。并将第一负载校正值为101的下游节点B2确定为目标下游节点。
S470、上游节点A1将待处理请求3分配至下游节点B2。分配完成后,上游节点A1中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=1;第一当前负载信息[B2]=101,第一请求分配计数[B2]=1;第一当前负载信息[B3]=102,第一请求分配计数[B3]=0。分配完成后,上游节点A2中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=1;第一当前负载信息[B2]=101,第一请求分配计数[B2]=0;第一当前负载信息[B3]=102,第一请求分配计数[B3]=0。分配完成后,三个下游节点的实际负载信息为:实际负载信息[B1]=102、实际负载信息[B2]=102、实际负载信息[B3]=102。至此,三个下游节点的实际负载处于均衡状态。
S480、当三个下游节点的上报周期到达后,下游节点B1、下游节点B2和下游节点B3分别将其实际负载信息上报至上游节点A1和上游节点A2。此时,上游节点A1中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=102,第一请求分配计数[B1]=0;第一当前负载信息[B2]=102,第一请求分配计数[B2]=0;第一当前负载信息[B3]=102,第一请求分配计数[B3]=0。上游节点A2中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=102,第一请求分配计数[B1]=0;第一当前负载信息[B2]=102,第一请求分配计数[B2]=0;第一当前负载信息[B3]=102,第一请求分配计数[B3]=0。后续可按照上述各步骤继续分配待处理请求。
在另一示例中,三个下游节点之间的初始负载差异较大。如初始状态下,B1负载为100,B2负载为103,B3负载为110。该示例中3个待处理请求的分配过程如图5所示:
S510、下游节点B1、下游节点B2和下游节点B3分别将其初始负载信息上报至上游节点A1和上游节点A2。此时,上游节点A1中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=0;第一当前负载信息[B2]=103,第一请求分配计数[B2]=0;第一当前负载信息[B3]=110,第一请求分配计数[B3]=0。上游节点A2中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=0;第一当前负载信息[B2]=103,第一请求分配计数[B2]=0;第一当前负载信息[B3]=110,第一请求分配计数[B3]=0。
S520、当待处理请求1下发至上游节点A1后,上游节点A1根据下游节点的第一负载校正值=第一当前负载信息+第一请求分配计数*上游节点数量,分别计算得下游节点B1、下游节点B2和下游节点B3的第一负载校正值,分别为100、103和110。并将第一负载校正值为100的下游节点B1确定为目标下游节点。
S530、上游节点A1将待处理请求1分配至下游节点B1。分配完成后,上游节点A1中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=1;第一当前负载信息[B2]=103,第一请求分配计数[B2]=0;第一当前负载信息[B3]=110,第一请求分配计数[B3]=0。分配完成后,上游节点A2中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=0;第一当前负载信息[B2]=103,第一请求分配计数[B2]=0;第一当前负载信息[B3]=110,第一请求分配计数[B3]=0。分配完成后,三个下游节点的实际负载信息为:实际负载信息[B1]=101、实际负载信息[B2]=103、实际负载信息[B3]=110。
S540、当待处理请求2下发至上游节点A1后,上游节点A1根据下游节点的第一负载校正值=第一当前负载信息+第一请求分配计数*上游节点数量,分别计算得下游节点B1、下游节点B2和下游节点B3的第一负载校正值,分别为102、103和110。并将第一负载校正值为102的下游节点B1确定为目标下游节点。
S550、上游节点A1将待处理请求2分配至下游节点B1。分配完成后,上游节点A1中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=2;第一当前负载信息[B2]=103,第一请求分配计数[B2]=0;第一当前负载信息[B3]=110,第一请求分配计数[B3]=0。分配完成后,上游节点A2中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=0;第一当前负载信息[B2]=103,第一请求分配计数[B2]=0;第一当前负载信息[B3]=110,第一请求分配计数[B3]=0。分配完成后,三个下游节点的实际负载信息为:实际负载信息[B1]=102、实际负载信息[B2]=103、实际负载信息[B3]=110。
S560、当待处理请求3下发至上游节点A1后,上游节点A1根据下游节点的第一负载校正值=第一当前负载信息+第一请求分配计数*上游节点数量,分别计算得下游节点B1、下游节点B2和下游节点B3的第一负载校正值,分别为104、103和110。并将第一负载校正值为103的下游节点B2确定为目标下游节点。
S570、上游节点A1将待处理请求3分配至下游节点B2。分配完成后,上游节点A1中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=2;第一当前负载信息[B2]=103,第一请求分配计数[B2]=1;第一当前负载信息[B3]=110,第一请求分配计数[B3]=0。分配完成后,上游节点A2中存储的第一当前负载信息和第一请求分配计数分别为:第一当前负载信息[B1]=100,第一请求分配计数[B1]=0;第一当前负载信息[B2]=103,第一请求分配计数[B2]=0;第一当前负载信息[B3]=110,第一请求分配计数[B3]=0。分配完成后,三个下游节点的实际负载信息为:实际负载信息[B1]=102、实际负载信息[B2]=104、实际负载信息[B3]=110。
对于待处理请求3的分配,按照各下游节点的实际负载信息,其应当被分配至下游节点B1,但是上述过程将其分配至下游节点B2。也就是说,本公开实施例图3提供的负载均衡方法仍会使得各下游节点之间存在实际负载差异,也没有达到完全的负载均衡。但是,其相对于图2所示的负载均衡方法,能够明显降低实际负载差异。
上述图3所提供的负载均衡方法造成的各下游节点之间的实际负载差异是可控的,其最大实际负载差异(即各下游节点的实际负载信息之间的最大负载差异)分别为如下A和B两种情况。
A、若各下游节点的初始负载信息相同,则各下游节点的实际负载信息之间的最大负载差异为n,n为上游节点数量。
对于各下游节点的初始负载信息相同的情况。n个上游节点在各下游节点刚上报过负载信息的状态下,会产生最大负载差异。此时,n个上游节点均要分配待处理请求时,按照上述过程,各上游节点均会将其待处理请求分配给第一个下游节点,此时第一个下游节点的实际负载信息为初始负载信息+n,而其他下游节点的实际负载信息仍为初始负载信息,故该情况下的最大负载差异为n。
B、若各下游节点的初始负载信息不同,则各下游节点的实际负载信息之间的最大负载差异为(n-1)*x/n,x为各初始负载信息的最大差值。
对于各下游节点的初始负载信息不同的情况,假设各下游节点的初始负载信息的最大初始负载差异为x,其由具有最小初始负载信息b1的下游节点B1和具有最大初始负载信息b2的下游节点B2计算得到,即b2-b1=x。
在各下游节点刚上报过负载信息的状态下,上游节点A1中第一当前负载信息[B1]=b1、第一当前负载信息[B2]=b1+x,且第一请求分配计数[B1]=0、第一请求分配计数[B2]=0。
当连续(x/n)+1个待处理请求都下发到上游节点A1时,根据下游节点的第一负载校正值=第一当前负载信息+第一请求分配计数*上游节点数量,均计算出下游节点B1的第一负载校正值最小,所以上游节点A1会将它们都分配到下游节点B1,此时第一请求分配计数[B1]=(x/n)+1、第一请求分配计数[B2]=0。
再下发1个新的待处理请求到上游节点A1时,根据上述可计算第一负载校正值[B1]=b1+x+n、第一负载校正值[B2]=b1+x,那么上游节点A1将该新的待处理请求分配到下游节点B2,以避免各上游节点都将新的待处理请求分配给下游节点B1,而使得下游节点B1的负载信息飙升。此时,上游节点A1中第一当前负载信息[B1]=b1、第一当前负载信息[B2]=b1+x,且第一请求分配计数[B1]=(x/n)+1、第一请求分配计数[B2]=1。而实际负载信息[B1]=b1+(x/n)+1、实际负载信息[B2]=b1+x+1。
再下发1个新的待处理请求到上游节点A1时,根据上述可计算第一负载校正值[B1]=b1+x+n、第一负载校正值[B2]=b1+x+n,且根据相同负载时轮询的方式,上游节点A1会将新的待处理请求分配给下游节点B1,以此类推。这样,保持下游节点B1与下游节点B2的实际负载信息的最大负载差值减少为(n-1)*x/n。
可以发现,当x增加或n增加时,差值(n-1)*x/n会保持在一个较大的数值。但是,这个最大负载差值比初始负载信息的最大差值x更小,并且这个最大负载差值不会再增大(图2所示的负载均衡方案产生的最大负载差值为(n-1)*x,其是比初始负载信息的最大差值x成倍放大的)。
综上,图3所提供的负载均衡方案不仅能够适用于多个上游节点的情况,而且适用于待处理请求集中爆发的情况,且均不会使得各下游节点的实际负载信息的最大负载差异超过上述A或B的结果,很大程度上提高了负载分配的均衡性。另外,该负载均衡方案未引入额外的消息同步和请求处理应答等内容,简化负载均衡逻辑,提高负载均衡效率。
将上述各实施例所提供的负载均衡方案应用至运行游戏的分布式集群系统(即游戏分布式集群系统)中,也取得较好的负载均衡效果。
图6是本公开实施例提供的一种游戏分布式集群系统的架构图。如图6所示,该游戏分布式集群系统600中包含互相之间通信连接的管理服务器610(可以是多个,图6以一个示例)、多个网关服务器620(图6以两个示例)和多个游戏服务器630(图6以三个示例)。
其中,管理服务器610至少用于管理和维护集群中的各网关服务器620和各游戏服务器630,以及接收上游消息(如用户的游戏登录请求)并执行负载均衡策略,以选择合适的网关服务器620和游戏服务器630来分配上游消息。游戏服务器630至少用于执行部分游戏任务,如登录游戏、游戏运行的主要业务功能等。
上述管理服务器610中可以执行本公开任意实施例所说明的负载均衡方法,以均衡式地选择网关服务器620来处理和分配上游消息。进一步地,管理服务器610中可以继续执行本公开任意实施例所说明的负载均衡方法,以均衡式地选择游戏服务器630来处理上游消息。
通过上述游戏分布式集群系统的设置,能够使得管理服务器将上游消息更加均衡地分配至网关服务器和游戏服务器,实现网关服务器和游戏服务器的负载均衡,提高游戏分布式集群系统的处理效率,从而提高游戏运行流畅度。
在上述游戏分布式集群架构的基础上,该游戏分布式集群系统600中还可以包括多个路由服务器640(图6以三个示例,与游戏服务器630的数量一致)和多个战斗服务器650(图6以四个示例)。其中,路由服务器640至少用于接收游戏服务器630下发的消息,并选择合适的战斗服务器650来转发该消息。战斗服务器650至少用于创建游戏战斗所需的战斗房间。上述路由服务器640可以执行本公开任意实施例所说明的负载均衡方法,以均衡式地选择战斗服务器650。
通过上述游戏分布式集群系统的设置,能够使得路由服务器将游戏服务器下发的消息更加均衡地分配至战斗服务器,实现战斗服务器的负载均衡,进一步提高游戏分布式集群系统的处理效率,从而进一步提高游戏运行流畅度。
图7是本公开实施例提供的一种应用于游戏分布式集群系统的负载均衡方法的流程示意图。如图7所示,该负载均衡方法包括:
S701、管理服务器接收游戏登录请求,并获取管理服务器下辖的各网关服务器的第二当前负载信息和第二请求分配计数。
其中,第二请求分配计数是管理服务器中记录的已分配至网关服务器的请求的数量。
具体地,当用户需要登录游戏时,其通过客户端71发出游戏登录请求。该游戏登录请求会被轮询式地分配至游戏对应的指定小区72下辖的管理服务器73。管理服务器73接收到游戏登录请求后,便获取其对应的各网关服务器74的当前负载信息(即第二当前负载信息)和请求分配计数(即第二请求分配计数)。该第二当前负载信息是登录游戏的玩家数量。
S702、管理服务器基于每个网关服务器的第二当前负载信息和第二请求分配计数,确定每个网关服务器的第二负载校正值。
具体地,管理服务器73根据每个网关服务器74的第二当前负载信息和第二请求分配计数,按照公式(负载校正值=第二当前负载信息+第二请求分配计数),或者公式(负载校正值=第二当前负载信息+第二请求分配计数*网关服务器数量),计算出每个网关服务器74的负载校正值(即第二负载校正值)。
S703、管理服务器将各第二负载校正值中最小第二负载校正值对应的网关服务器确定为目标网关服务器。
具体地,管理服务器73从各第二负载校正值中选择数值最小的第二负载校正值,并将其对应的网关服务器74确定为处理上述游戏登录请求的目标网关服务器。
S704、管理服务器更新目标网关服务器的第二请求分配计数。
具体地,管理服务器73将游戏登录请求分配至目标网关服务器。同时,将管理服务器73中维护的目标网关服务器的第二请求分配计数累加1。
在一些实施例中,S703或S704之后,管理服务器73可以从目标网关服务器管辖的各游戏服务器75中以随机方式或轮询方式选择一个游戏服务器75作为目标游戏服务器,并将该目标游戏服务器的服务器信息发送至目标网关服务器,以便目标网关服务器根据上述游戏登录请求,登录目标游戏服务器。
在另一些实施例中,S703或S704之后,管理服务器73可以再次执行上述负载均衡方法,以更加均衡地确定目标游戏服务器,即执行S705。
S705、目标网关服务器响应于游戏登录请求,向管理服务器发送分配游戏服务器的分配请求。
具体地,管理服务器73将游戏登录请求分配至目标网关服务器74。目标网关服务器74响应于该游戏登录请求,生成请求分配游戏服务器的分配请求,并将其发送至管理服务器73。
S706、管理服务器基于分配请求,获取目标网关服务器下辖的各游戏服务器的第三当前负载信息和第三请求分配计数。
其中,第三请求分配计数是管理服务器中记录的已分配至游戏服务器的请求的数量。
具体地,管理服务器73解析分配请求,获取目标网关服务器及其对应的各游戏服务器75的信息,进而根据这些信息来获取这些游戏服务器75的当前负载信息(即第三当前负载信息)和请求分配计数(即第三请求分配计数)。该第三当前负载信息是登录游戏的玩家数量。
S707、管理服务器基于每个游戏服务器的第三当前负载信息和第三请求分配计数,确定每个游戏服务器的第三负载校正值。
具体地,管理服务器73根据每个游戏服务器75的第三当前负载信息和第三请求分配计数,按照公式(负载校正值=第三当前负载信息+第三请求分配计数),或者公式(负载校正值=第三当前负载信息+第三请求分配计数*游戏服务器数量),计算出每个游戏服务器75的负载校正值(即第三负载校正值)。
S708、管理服务器将各第三负载校正值中最小第三负载校正值对应的游戏服务器确定为目标游戏服务器。
具体地,管理服务器73从各第三负载校正值中选择数值最小的第三负载校正值,并将其对应的游戏服务器75确定为处理上述游戏登录请求的目标游戏服务器。
S709、管理服务器将目标游戏服务器的服务器信息发送至目标网关服务器,并更新目标游戏服务器的第三请求分配计数。
具体地,管理服务器73将目标游戏服务器75的服务器信息发送至目标网关服务器74。同时,将管理服务器73中维护的目标游戏服务器的第三请求分配计数累加1。
S710、目标网关服务器基于服务器信息和游戏登录请求登录目标游戏服务器。
具体地,目标网关服务器74根据游戏登录请求,登录服务器信息对应的目标游戏服务器75,完成对游戏登录请求的处理。
用户登录游戏之后,如果触发了游戏中的战斗逻辑,那么游戏服务器75可以为其选择合适的路由服务器76,再由路由服务器76从大区的各战斗服务器77中选择合适的战斗服务器来执行战斗逻辑计算和战斗房间的创建与运行,即继续执行S711。从大区中选择战斗服务器76可以使所有小区共享相同的一组战斗服务器,达到战斗服务器资源更好的复用。
S711、路由服务器接收战斗房间创建请求,并获取路由服务器下辖的各战斗服务器的第四当前负载信息和第四请求分配计数。
其中,第四请求分配计数是路由服务器中记录的已分配至战斗服务器的请求的数量。
具体地,目标游戏服务器75接收到用户通过其客户端71发送的战斗请求后,生成战斗房间创建请求。然后,目标游戏服务器75通过对战斗房间创建请求中的战斗房间的相关信息进行一致性哈希方式来选择一个路由服务器76,并将战斗房间创建请求发送至路由服务器76。之后,路由服务器76获取其对应的各战斗服务器77的当前负载信息(即第四当前负载信息)和请求分配计数(即第四请求分配计数)。该第四当前负载信息为已创建的战斗房间数量。
S712、路由服务器基于每个战斗服务器的第四当前负载信息和第四请求分配计数,确定每个战斗服务器的第四负载校正值。
具体地,路由服务器76根据每个战斗服务器77的第四当前负载信息和第四请求分配计数,按照公式(负载校正值=第四当前负载信息+第四请求分配计数),或者公式(负载校正值=第四当前负载信息+第四请求分配计数*战斗服务器数量),计算出每个战斗服务器77的负载校正值(即第四负载校正值)。
S713、路由服务器将各第四负载校正值中最小第四负载校正值对应的战斗服务器确定为目标战斗服务器。
具体地,路由服务器76从各第四负载校正值中选择数值最小的第四负载校正值,并将其对应的战斗服务器77确定为处理上述战斗房间创建请求的目标战斗服务器。
S714、路由服务器更新目标战斗服务器的第四请求分配计数。
具体地,路由服务器76将其维护的目标战斗服务器的第四请求分配计数累加1。
S715、路由服务器将战斗房间创建请求分配至目标战斗服务器,以使目标战斗服务器创建战斗房间。
具体地,路由服务器76将战斗房间创建请求发送给目标战斗服务器77。目标战斗服务器77便基于该请求创建战斗房间,并将创建结果反馈至路由服务器76。路由服务器76再将目标战斗服务器77的服务器信息及其创建战斗房间的创建结果发送至游戏服务器75。
通过上述游戏登录过程的负载均衡方案,缩小了各网关服务器之间的负载差异以及各游戏服务器之间的负载差异,较好地实现各网关服务器和各游戏服务器的负载均衡。
例如,对于2万人登录游戏、游戏分布式集群系统中包含3个网关服务器和3个游戏服务器的示例,期望的负载均衡目标是每个网关服务器和每个游戏服务器均分摊6660个左右的玩家登录的承载量。那么经过上述登录过程的负载均衡处理,实际达到的运行效果是每个网关服务器和每个游戏服务器的实际负载信息均保持在6600-6750的范围内,达到了较好的负载均衡效果。
通过上述游戏战斗房间创建过程的负载均衡方案,很好的避免了存在大批量路由服务器的情况下,因各路由服务器中记录的战斗服务器的第四请求分配计数不同步而放大的最大负载差值,且避免了各游戏战斗服务器上报负载信息不及时而引起的负载误差,较好的覆盖了战斗房间的频繁开始创建与结束销毁,取得了良好的负载均衡效果。
本公开附图中的流程图和框图,图示了按照本公开各种实施例的方法和系统的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (11)
1.一种负载均衡方法,其特征在于,包括:
上游节点接收待处理请求,并获取各下游节点的第一当前负载信息和第一请求分配计数;其中,所述第一请求分配计数是所述上游节点中记录的已分配至所述下游节点的请求的数量;
所述上游节点基于每个所述下游节点的所述第一当前负载信息和所述第一请求分配计数进行加和处理,确定相应下游节点的第一负载校正值;
所述上游节点将各所述第一负载校正值中最小第一负载校正值对应的所述下游节点确定为目标下游节点;
所述上游节点将所述待处理请求分配至所述目标下游节点,并更新所述目标下游节点的所述第一请求分配计数。
2.根据权利要求1所述的方法,其特征在于,所述上游节点基于每个所述下游节点的所述第一当前负载信息和所述第一请求分配计数进行加和处理,确定相应下游节点的第一负载校正值包括:
所述上游节点基于每个所述下游节点的所述第一当前负载信息、所述第一请求分配计数和上游节点数量进行加和处理,确定相应下游节点的所述第一负载校正值。
3.根据权利要求2所述的方法,其特征在于,所述上游节点基于每个所述下游节点的所述第一当前负载信息、所述第一请求分配计数和上游节点数量进行加和处理,确定相应下游节点的所述第一负载校正值包括:
针对每个所述下游节点,所述上游节点确定所述下游节点的所述第一请求分配计数和所述上游节点数量的乘积,并将所述乘积和所述下游节点的所述第一当前负载信息的相加结果确定为所述下游节点的所述第一负载校正值。
4.根据权利要求1所述的方法,其特征在于,在所述上游节点将所述待处理请求分配至所述目标下游节点之后,所述方法还包括:
所述上游节点在接收到任一所述下游节点重新上报的负载信息时,利用所述重新上报的负载信息覆盖相应下游节点的所述第一当前负载信息,以完成所述第一当前负载信息的更新,并将相应下游节点的所述第一请求分配计数调整为0。
5.根据权利要求2所述的方法,其特征在于,若各所述下游节点的初始负载信息相同,则各所述下游节点的实际负载信息之间的最大负载差异为n,n为上游节点数量;
若各所述下游节点的所述初始负载信息不同,则各所述下游节点的所述实际负载信息之间的最大负载差异为(n-1)*x/n,x为各所述初始负载信息的最大差值。
6.一种负载均衡方法,其特征在于,应用于游戏分布式集群系统,包括:
管理服务器接收游戏登录请求,并获取所述管理服务器下辖的各网关服务器的第二当前负载信息和第二请求分配计数;其中,所述第二请求分配计数是所述管理服务器中记录的已分配至所述网关服务器的请求的数量;
所述管理服务器基于每个所述网关服务器的所述第二当前负载信息和所述第二请求分配计数进行加和处理,确定每个所述网关服务器的第二负载校正值;
所述管理服务器将各所述第二负载校正值中最小第二负载校正值对应的所述网关服务器确定为目标网关服务器;
所述管理服务器更新所述目标网关服务器的所述第二请求分配计数。
7.根据权利要求6所述的方法,其特征在于,在所述管理服务器将各所述第二负载校正值中最小第二负载校正值对应的所述网关服务器确定为目标网关服务器之后,所述方法还包括:
所述目标网关服务器响应于所述游戏登录请求,向所述管理服务器发送分配游戏服务器的分配请求;
所述管理服务器基于所述分配请求,获取所述目标网关服务器下辖的各所述游戏服务器的第三当前负载信息和第三请求分配计数;其中,所述第三请求分配计数是所述管理服务器中记录的已分配至所述游戏服务器的请求的数量;
所述管理服务器基于每个所述游戏服务器的所述第三当前负载信息和所述第三请求分配计数进行加和处理,确定每个所述游戏服务器的第三负载校正值;
所述管理服务器将各所述第三负载校正值中最小第三负载校正值对应的所述游戏服务器确定为目标游戏服务器;
所述管理服务器将所述目标游戏服务器的服务器信息发送至所述目标网关服务器,并更新所述目标游戏服务器的所述第三请求分配计数;
所述目标网关服务器基于所述服务器信息和所述游戏登录请求登录所述目标游戏服务器。
8.一种负载均衡方法,其特征在于,应用于游戏分布式集群系统,包括:
路由服务器接收战斗房间创建请求,并获取所述路由服务器下辖的各战斗服务器的第四当前负载信息和第四请求分配计数;其中,所述第四请求分配计数是所述路由服务器中记录的已分配至所述战斗服务器的请求的数量;
所述路由服务器基于每个所述战斗服务器的所述第四当前负载信息和所述第四请求分配计数进行加和处理,确定每个所述战斗服务器的第四负载校正值;
所述路由服务器将各所述第四负载校正值中最小第四负载校正值对应的所述战斗服务器确定为目标战斗服务器;
所述路由服务器更新所述目标战斗服务器的所述第四请求分配计数;
所述路由服务器将所述战斗房间创建请求分配至所述目标战斗服务器,以使所述目标战斗服务器创建战斗房间。
9.一种分布式集群系统,其特征在于,所述分布式集群系统包括至少两个上游节点和至少两个下游节点;
所述上游节点用于:
接收待处理请求,并获取各所述下游节点的第一当前负载信息和第一请求分配计数;其中,所述第一请求分配计数是所述上游节点中记录的已分配至所述下游节点的请求的数量;
基于每个所述下游节点的所述第一当前负载信息和所述第一请求分配计数进行加和处理,确定相应下游节点的第一负载校正值;
将各所述第一负载校正值中最小第一负载校正值对应的所述下游节点确定为目标下游节点;
将所述待处理请求分配至所述目标下游节点,并更新所述目标下游节点的所述第一请求分配计数。
10.一种游戏分布式集群系统,其特征在于,所述游戏分布式集群系统包括管理服务器和至少两个网关服务器;
所述管理服务器用于:
接收游戏登录请求,并获取所述管理服务器下辖的各网关服务器的第二当前负载信息和第二请求分配计数;其中,所述第二请求分配计数是所述管理服务器中记录的已分配至所述网关服务器的请求的数量;
基于每个所述网关服务器的所述第二当前负载信息和所述第二请求分配计数进行加和处理,确定每个所述网关服务器的第二负载校正值;
将各所述第二负载校正值中最小第二负载校正值对应的所述网关服务器确定为目标网关服务器;
更新所述目标网关服务器的所述第二请求分配计数。
11.一种游戏分布式集群系统,其特征在于,所述游戏分布式集群系统包括路由服务器和至少两个战斗服务器;
所述路由服务器用于:
接收战斗房间创建请求,并获取所述路由服务器下辖的各战斗服务器的第四当前负载信息和第四请求分配计数;其中,所述第四请求分配计数是所述路由服务器中记录的已分配至所述战斗服务器的请求的数量;
基于每个所述战斗服务器的所述第四当前负载信息和所述第四请求分配计数进行加和处理,确定每个所述战斗服务器的第四负载校正值;
将各所述第四负载校正值中最小第四负载校正值对应的所述战斗服务器确定为目标战斗服务器;
更新所述目标战斗服务器的所述第四请求分配计数;
将所述战斗房间创建请求分配至所述目标战斗服务器,以使所述目标战斗服务器创建战斗房间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111233077.XA CN113923166B (zh) | 2021-10-22 | 2021-10-22 | 负载均衡方法和分布式集群系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111233077.XA CN113923166B (zh) | 2021-10-22 | 2021-10-22 | 负载均衡方法和分布式集群系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113923166A CN113923166A (zh) | 2022-01-11 |
CN113923166B true CN113923166B (zh) | 2024-02-23 |
Family
ID=79242395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111233077.XA Active CN113923166B (zh) | 2021-10-22 | 2021-10-22 | 负载均衡方法和分布式集群系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113923166B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014180418A1 (zh) * | 2013-12-06 | 2014-11-13 | 中兴通讯股份有限公司 | 负载均衡方法和装置 |
US10055262B1 (en) * | 2015-12-11 | 2018-08-21 | Amazon Technologies, Inc. | Distributed load balancing with imperfect workload information |
CN109120715A (zh) * | 2018-09-21 | 2019-01-01 | 华南理工大学 | 一种云环境下动态负载均衡方法 |
CN109819057A (zh) * | 2019-04-08 | 2019-05-28 | 科大讯飞股份有限公司 | 一种负载均衡方法及系统 |
CN111611228A (zh) * | 2020-05-27 | 2020-09-01 | 北京学之途网络科技有限公司 | 一种基于分布式数据库的负载均衡调整方法及装置 |
CN113377539A (zh) * | 2021-06-10 | 2021-09-10 | 中国工商银行股份有限公司 | 实现负载均衡的处理方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050038890A1 (en) * | 2003-08-11 | 2005-02-17 | Hitachi., Ltd. | Load distribution method and client-server system |
CN106919622B (zh) * | 2015-12-28 | 2021-10-15 | 伊姆西Ip控股有限责任公司 | 用于分布式数据处理的方法和设备 |
US10237339B2 (en) * | 2016-08-19 | 2019-03-19 | Microsoft Technology Licensing, Llc | Statistical resource balancing of constrained microservices in cloud PAAS environments |
-
2021
- 2021-10-22 CN CN202111233077.XA patent/CN113923166B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014180418A1 (zh) * | 2013-12-06 | 2014-11-13 | 中兴通讯股份有限公司 | 负载均衡方法和装置 |
US10055262B1 (en) * | 2015-12-11 | 2018-08-21 | Amazon Technologies, Inc. | Distributed load balancing with imperfect workload information |
CN109120715A (zh) * | 2018-09-21 | 2019-01-01 | 华南理工大学 | 一种云环境下动态负载均衡方法 |
CN109819057A (zh) * | 2019-04-08 | 2019-05-28 | 科大讯飞股份有限公司 | 一种负载均衡方法及系统 |
CN111611228A (zh) * | 2020-05-27 | 2020-09-01 | 北京学之途网络科技有限公司 | 一种基于分布式数据库的负载均衡调整方法及装置 |
CN113377539A (zh) * | 2021-06-10 | 2021-09-10 | 中国工商银行股份有限公司 | 实现负载均衡的处理方法及装置 |
Non-Patent Citations (3)
Title |
---|
Simranjit Kaur ; Tejinder Sharma.Efficient load balancing using improved central load balancing technique.2018 2nd International Conference on Inventive Systems and Control (ICISC).2018,全文. * |
一种可变周期反馈的动态负载均衡算法;李鸿健;豆育升;唐红;孙世新;;电子测量与仪器学报(第11期);全文 * |
基于负载权值的负载均衡算法;张玉芳;魏钦磊;赵膺;;计算机应用研究(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113923166A (zh) | 2022-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210194810A1 (en) | Method and system for transmitting data resource acquisition request | |
US11316792B2 (en) | Method and system of limiting traffic | |
EP2515504B1 (en) | Content delivery method, system and schedule server | |
US20060129684A1 (en) | Apparatus and method for distributing requests across a cluster of application servers | |
US20200104177A1 (en) | Resource allocation system, management device, method, and program | |
WO2016091029A1 (zh) | 一种堆叠系统的流量转发的方法及装置 | |
CN105515977B (zh) | 获取网络中传输路径的方法、装置和系统 | |
CN105991660B (zh) | 一种多云存储系统间资源共享的系统 | |
CN108696364B (zh) | 请求消息处理方法、聊天室消息服务器及聊天室系统 | |
CN112583715B (zh) | 设备节点连接调整方法及装置 | |
CN111245924A (zh) | 负载均衡方法及装置、计算机存储介质 | |
CN112543145A (zh) | 发送数据的设备节点通信路径选择方法及装置 | |
CN113923166B (zh) | 负载均衡方法和分布式集群系统 | |
WO2024113956A1 (zh) | 节点选取方法、装置、第一节点、存储介质及程序产品 | |
CN1625109A (zh) | 虚拟化网络资源的方法和装置 | |
Zhang et al. | Dynamic controller assignment problem in software‐defined networks | |
CN107682265B (zh) | 支付系统的报文路由方法及装置 | |
CN108200185B (zh) | 一种实现负载均衡的方法及装置 | |
CN115118666B (zh) | 一种负载重新分配方法及装置 | |
WO2018171423A1 (zh) | 一种构建视频多播虚拟网的方法和装置 | |
CN114039840B (zh) | 软件定义网络中可配置的动态高可靠服务链架构及方法 | |
CN112600753B (zh) | 根据设备接入量的设备节点通信路径选择方法及装置 | |
CN115118635A (zh) | 一种时延检测方法、装置、设备及存储介质 | |
CN110431824B (zh) | 通过对等消息彼此通信的节点的计算机网络以及关联的用于使节点之间互连的方法 | |
CN111935100A (zh) | Flowspec规则下发方法、装置、设备及介质 |
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 |