CN113220491A - 远程调用自适应负载均衡方法、装置、***及计算机装备 - Google Patents
远程调用自适应负载均衡方法、装置、***及计算机装备 Download PDFInfo
- Publication number
- CN113220491A CN113220491A CN202110765420.9A CN202110765420A CN113220491A CN 113220491 A CN113220491 A CN 113220491A CN 202110765420 A CN202110765420 A CN 202110765420A CN 113220491 A CN113220491 A CN 113220491A
- Authority
- CN
- China
- Prior art keywords
- service node
- load
- service
- adaptive
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种保证整个集群的资源最合理利用的远程调用自适应负载均衡方法、装置、***及计算机装备。本发明提供的远程调用自适应负载均衡方法,包括如下步骤:获取并更新各服务节点的负载信息;根据所述负载信息发送RPC请求。本发明提供的远程调用自适应负载均衡方法可以获取各服务节点的负载信息,能够保证了解各个服务节点的负载状态,根据得到的负载信息对服务节点发送RPC请求,实现能够较好的在服务节点间选择合适的服务节点提供服务,避免出现服务短板,使得整个RPC集群的资源达到合理利用。
Description
技术领域
本发明涉及信息***技术领域,尤其涉及一种远程调用自适应负载均衡方法、装置、***及计算机装备。
背景技术
远程过程调用(RPC,Remote Procedure Call)是指在客户机上通过网络的方式将一个请求(含调用的方法名称、输入参数等)发送到服务端,在服务端经过运算处理后,由服务端再将请求传送回客户端的技术。根据客户端和服务端的开发语言是否一样,可以分为同语言的远程调用,如Java RMI(Remote Method Invocation);及跨语言远程调用,如gRPC和Thrift。
目前已有的远程过程调用在单节点模式下均能很好地工作。在大并发分布式环境下面,为了解决大量请求投入而造成的单节点负担过重,一般都会采用负载均衡的方法让多个远程服务节点去并发地处理客户端请求。
目前的负载均衡手段主要是通过负载均衡器去对客户端传入的RPC请求进行分发,常见的负载均衡器有软件实现(如Nginx),也有硬件实现(如F5、A10)。
这些负载均衡器能满足大部分的RPC场景,但也存在着局限:
(1)当负载均衡器后方的RPC服务提供者资源不对称时,性能差的服务器将成为整个服务的短板,而性能优越的服务器性能又得不到充分的发挥。其原因是负载均衡器对后方服务提供者的性能并不感知,一般采用随机的方式,或对请求进行哈希散列的方式把RPC请求分布到RPC提供者,而这些方式基本上是均分的。对性能差的RPC提供者而言,在负载重的情况下将积压大量的请求,响应时间变长,从而成为整个服务的短板。
(2)新引入的负载均衡器其自身在很多场景下就是一个单点故障点,虽然可以通过虚拟IP(VIP)等方式解决此问题,但负载均衡器的引入将延长RPC调用链路,增加服务响应时间。
发明内容
基于此,有必要提供一种保证整个集群的资源最合理利用的远程调用自适应负载均衡方法、装置、***及计算机装备。
本发明提供一种远程调用自适应负载均衡方法,包括如下步骤:
获取并更新各服务节点的负载信息;
根据所述负载信息发送RPC请求。
优选地,所述获取并更新各服务节点的负载信息具体为:在其中一个服务节点获取各个服务节点的负载信息,或,
所述获取并更新各服务节点的负载信息具体为:各个服务节点定时向其他服务节点发送本服务节点的负载信息,各个服务节点具有记载各节点负载信息的拓扑表,并在获取其他服务节点的负载信息后,更新其拓扑表,在其中一个服务节点获取各个服务节点的负载信息。
优选地,所述负载信息包括负载值,所述发送RPC请求之前还包括如下步骤:
根据所述负载值的大小将所述将各服务节点依次分为多个区间;
随机生成一个随机数值,并判断所述随机数值落入的区间;
根据所述各服务节点的负载信息发送RPC请求具体为:对随机数值落入的区间的负载值最小值对应的服务节点发送RPC请求;
所述随机数值的范围满足如下关系式:0≤随机数值<负载值n,所述负载值n为各服务节点的负载值最小值;
或,
所述发送RPC请求之前还包括如下步骤:
根据所述各服务节点的负载值,得到各服务节点的累积可用指标;
根据所述各服务节点的累积可用指标的顺序,将所述将各服务节点依次分为多个区间;
随机生成一个随机数值,并判断所述随机数值落入的区间,
所述根据所述各服务节点的负载信息发送RPC请求具体为:对随机数值落入的区间的累积可用指标最大值对应的服务节点发送RPC请求;
所述随机数值的范围满足如下关系式:0≤随机数值<累积可用指标n,所述累积可用指标n为各服务节点的累积可用指标的最大值。
优选地,所述累积可用指标满足如下关系式:
所述accui为服务节点i的累积可用指标,所述avail为可用性指标;所述可用性指标满足如下关系式:
所述availi为服务节点i的可用性指标;
和/或,
所述负载值满足如下关系式:
负载值=(负载因子×服务节点当前所处理请求的队列长度×操作***最近1分钟内的平均负载值)/服务节点的CPU核数。
优选地,所述还获取各服务节点的负载信息之后包括如下步骤:对负载信息异常的服务节点进行标记;
所述根据所述各服务节点的负载信息发送RPC请求具体为:根据所述各服务节点的负载信息对未标记的服务节点发送RPC请求。
本发明还提供一种远程调用自适应负载均衡方法,包括如下步骤:
将各节点的负载信息发送;
接收RPC请求。
优选地,将各节点的负载信息发送,还包括如下步骤:各个服务节点定时向其他服务节点发送本服务节点的负载信息。
本发明还提供一种远程调用自适应负载均衡装置,包括自适应调度器发起端,所述自适应调度器发起端用于定时获取并更新各个服务节点的负载信息,以及根据所述负载信息发送RPC请求。
优选地,所述远程调用自适应负载均衡装置还包括自适应调度器服务端,所述自适应调度器服务端用于将各个服务节点的负载信息发送给自适应调度器发起端,以及接收所述自适应调度器发起端发送的RPC请求,所述自适应调度器服务端包括负载采集模块和心跳发送机制模块。
本发明还提供一种远程调用自适应负载均衡***,包括所述的远程调用自适应负载均衡装置、Java应用、RPC服务提供框架,所述自适应调度器发起端嵌入所述Java应用中,所述自适应调度器服务端集成到所述RPC服务提供框架的每个服务节点中。
本发明还提供一种计算机装备,所述计算机装备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现所述的远程调用自适应负载均衡方法。
本发明提供的远程调用自适应负载均衡方法可以获取各服务节点的负载信息,能够保证了解各个服务节点的负载状态,根据得到的负载信息对服务节点发送RPC请求,实现能够较好的在服务节点间选择合适的服务节点提供服务,避免出现服务短板,使得整个RPC集群的资源达到合理利用。
附图说明
通过附图中所示的本发明优选实施例更具体说明,本发明上述及其它目的、特征和优势将变得更加清晰。在全部附图中相同的附图标记指示相同的部分,且并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本的主旨。
图1为本发明实施例提供的远程调用负载均衡调度装置的跨语言远程过程调用的逻辑示意图。
图2为本发明实施例提供RPC调用发起模块与RPC服务提供模块之间的网络连接示意图。
图3为本发明实施例提供的远程调用自适应负载均衡装置结构示意图。
图4为本发明实施例提供的远程调用自适应负载均衡***结构示意图。
图5为本发明实施例提供的远程调用自适应负载均衡方法。
具体实施方式
下面结合附图和具体实施例对本发明技术方案作进一步的详细描述,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
请参考图1至图4,本发明实施例提供一种远程调用自适应负载均衡***,其包括远程调用自适应负载均衡装置(PySched)、Java应用3、RPC服务提供框架,远程调用自适应负载均衡装置(PySched)包括自适应调度器发起端1和自适应调度器服务端2。
远程过程调用(RPC,Remote Procedure Call)是指在客户机上通过网络的方式将一个请求(含调用的方法名称、输入参数等)发送到服务端,在服务端经过运算处理后,由服务端再将请求传送回客户端的技术。
参考图1-4,Java应用3是用Java语言开发的应用程序,可以包括多个发起节点,在Java应用3也就是Java SDK中嵌入自适应调度器发起端1得到RPC调用发起方100,它可以通过合适的参数发起远程调用。
参考图1-4,RPC服务提供框架是一个用Python语言开发RPC服务提供框架,并由多个服务节点4(PyNode)组成一个自适应调度服务框架集群,集群中的每个服务节点都集成有自适应调度器服务端2,得到RPC服务提供方200。集群中的每个服务节点都可以以模块的形式加载多个Python算法模块300,并通过具体的算法模块提供具体的远程过程实现。
本实施例提供的自适应调度器发起端1用于定时获取各个服务节点的负载信息。RPC服务调用方100的发起节点除正常的去请求RPC提供方提供的远程调用外,还通过集成在Java SDK中的自适应调度器发起端1去对服务端集群定时进行拓扑发现,以便获取服务端集群中的所有服务节点及各服务节点的负载信息,后续的每次RPC远程调用,RPC服务调用方将根据最新的拓扑情况,通过自适应负载均衡算法从服务端集群中选取合适的节点发送请求。Java SDK每次在进行拓扑发现时,将从一个RPC服务提供方的服务节点中获取整个服务框架集群的网络拓扑,包括负载值(load)和lut(最后更新时间)。自适应调度器发起端1在每次发送RPC请求时将会从集群所有服务节点中挑选一个合适服务节点进行实际的请求发送。
参考图2,本发明实施例提供的远程调用自适应负载均衡装置和远程调用自适应负载均衡***解决了远程过程调用中的性能问题,特别是在高并发分布式跨开发语言场景下的远程过程调用,尤其适合发起节点多个和服务节点多个的场景,例如RPC调用发起方100及RPC服务提供方200均由多个节点组成。
本实施例提供的远程调用自适应负载均衡装置分布式自适应负载调度装置,其分成了RPC服务提供部分(RPC服务提供方200)和RPC调用部分(RPC调用发起方100)。两部分协调运作,让RPC调用发起方可以感知RPC服务提供方各个服务节点的负载,并通过自适应算法去选择合适的RPC服务节点进行请求,从而保证整个集群的资源最合理利用。
本实施例提供的远程调用自适应负载均衡装置的自适应调度器服务端2包含了负载采集11和心跳发送机制12,RPC服务提供方中的各个服务节点定时向其它服务节点发送本节点的心跳信息,因此服务端的各个服务节点最终均可获得整个服务端全网的负载情况。
本实施例提供的远程调用自适应负载均衡装置的自适应调度器发起端1对服务端集群定时进行拓扑发现及负载信息更新,以便获取服务端集群中的所有服务节点及各服务节点的负载情况,后续的每次RPC远程调用,调用方将根据最新的拓扑及负载信息情况,通过自适应负载均衡算法从服务端集群中选取合适的服务节点发送请求。
本实施例提供的远程调用自适应负载均衡装置和远程调用自适应负载均衡***,由各个RPC调用发起方智能地在各个RPC服务提供方提供的服务节点间选择合适的服务节点提供服务,避免出现服务短板,使得整个RPC集群的资源达到合理利用。
在优选实施例中,自适应调度器服务端2包括管理模块,具有模块管理功能,以便做到RPC服务提供方远程过程方法的模块化管理。也就是说,整个服务端集群只是个框架,具体的远程方法的功能实现由具体的功能模块实现,具体远程方法的增删和修改并不会影响到框架本身。
本发明实施例还提供一种远程调用自适应负载均衡方法,包括如下步骤:
获取并更新各服务节点的负载信息;
根据所述负载信息发送RPC请求。
本实施例中的远程调用自适应负载均衡方法可由自适应调度器发起端1或RPC调用发起方执行得到。
本实施例提供的远程调用自适应负载均衡方法,先获取并更新各服务节点的负载信息,然后根据更新的负载信息发送RPC请求,从而实现根据各服务节点的负载信息选取合适的服务节点发送请求,避免出现服务短板,使得整个RPC集群的资源达到合理利用。
在优选实施例中,自适应调度器发起端1获取并更新各服务节点的负载信息具体为:在其中一个服务节点获取各个服务节点的负载信息。
在优选实施例中,负载信息包括负载值,负载值满足如下关系式:
负载值=(负载因子×服务节点当前所处理请求的队列长度×操作***最近1分钟内的平均负载值)/服务节点的CPU核数。
在优选实施例中,自适应调度器发起端1获取并更新各服务节点的负载信息具体为:各个服务节点定时向其他服务节点发送本服务节点的负载信息,各个服务节点具有记载各节点负载信息的拓扑表,拓扑表记录有各服务节点的负载信息,该负载进行包括负载值(load)和lut(最后更新时间),各个服务节点在获取其他服务节点的负载信息后,更新其拓扑表中各个服务节点对应的load(负载值)和lut(最后更新时间)。自适应调度器发起端1或RPC调用发起方可从其中一个服务节点获取各个服务节点的负载信息。例如节点j在收到节点i的心跳信息时,将更新其拓扑表中loadi和luti,其中loadi为节点i的负载值,luti为节点i的最后更新时间。
参考图2,在优选实施例中,自适应调度器服务端2包括负载采集模块11和心跳发送机制模块12,RPC服务提供方中的各个服务节点(PyNode)定时向其它服务节点发送本服务节点的心跳信息(里面包含有本节点的负载信息),因此RPC服务提供方中的各个服务节点最终均可获得整个服务端全网的负载情况。例如节点j在收到节点i的心跳信息时,将更新其拓扑表中loadi和luti,其中loadi为节点i的负载值,luti为节点i的最后更新时间。loadi的计算公式为:
其中(1)factori是负载因子,它可以在各个RPC服务提供者之间按实际情况进行调节,以便解决服务提供节点因机器性能差异引起的短板效应。(2)qsizei为RPC服务提供节点当前所处理请求(含处理中及排队等待处理)的队列长度。(3)loadavgi为操作***最近1分钟内的平均负载值(在Linux操作***中可通过/proc/loadavg查得)。(4)coresi为RPC服务提供节点的CPU核数。
在优选实施例中,自适应调度器发起端1在发送RPC请求的步骤之前还包括如下步骤:
根据所述负载值的大小将所述将各服务节点依次分为多个区间;例如服务框架集群中的服务节点数为n,按照负载值大小排序时,相邻两个服务节点组成一个区间。
成一个均匀分布的随机生rand,也就是随机生成一个随机数值,并判断所述随机数值落入哪个区间。所述随机数值的范围满足如下关系式:0≤随机数值<负载值n,所述负载值n为各服务节点的负载值最小值;
本实施例中,根据所述各服务节点的负载信息发送RPC请求具体为:向随机数值落入的区间的负载值最小值对应的服务节点发送RPC请求。例如当随机数值落入服务节点n-1和服务节点n之间的区间,若服务节点n-1的负载值小于服务节点n的负载值,则向服务节点n-1发送RPC请求。
RPC调用发起方在请求调用服务节点的时候并没有使用负载值最小的服务节点,而是使用随机的方法去挑选服务节点,这是因为拓扑发现及负载信息更新是有间隔时间的,为了防止两次更新的间隔时间里所有请求都被调到负载值最轻的服务节点,从而造成该服务节点在此期间接收大量的请求,所以采用了本实施例的随机挑选方法,该随机挑选方法能保证负载重的节点被挑中的概率小,负载轻的节点被挑中的概率大,从而做到自适应的负载均衡。
在另一优选实施例中,自适应调度器发起端1发送RPC请求之前还包括如下步骤:
根据所述各服务节点的负载值,计算得到各服务节点的累积可用指标;
所述累积可用指标满足如下关系式:
所述accui为服务节点i的累积可用指标,所述avail为可用性指标;所述可用性指标满足如下关系式:
所述availi为服务节点i的可用性指标;
根据所述各服务节点的累积可用指标(accui)的顺序,将所述将各服务节点依次分为多个区间;例如服务框架集群中的服务节点数为n,按照累积可用指标大小排序时,相邻两个服务节点组成一个区间。例如,[accu0,accu1)、[accu1,accu2)、……、[accun-1,accun)(其中accu0=0)。
随机生成一个随机数值,并判断所述随机数值落入的区间,
根据各服务节点的负载信息发送RPC请求,具体为:对随机数值落入的区间的累积可用指标最大值对应的服务节点发送RPC请求。例如假设rand最终落在区间[accum-1,accum)中,则向服务节点m发送RPC请求。
所述随机数值的范围满足如下关系式:0≤随机数值<累积可用指标n,所述累积可用指标n为各服务节点的累积可用指标的最大值。
本实施例提供的远程调用自适应负载均衡方法,在请求调用节点的时候并没有使用负载最小的节点,而是使用随机的方法去挑选节点,这是因为拓扑发现及负载更新是有间隔时间的,为了防止两次更新的间隔时间里所有请求都被调到负载最轻的节点,从而造成该节点在此期间接收大量的请求,所以采用了上述的随机挑选方法,但该随机挑选方法能保证负载重的节点被挑中的概率小,负载轻的节点被挑中的概率大,从而做到自适应的负载均衡。
在优选实施例中,自适应调度器发起端1获取各服务节点的负载信息之后包括如下步骤:对负载信息异常的服务节点进行标记; 自适应调度器发起端1的拓扑发现是为防止RPC服务框架中的服务节点在服务过程中出现的节点异常,如服务节点关机、下线或网络异常等。所述根据所述各服务节点的负载信息发送RPC请求具体为:根据所述各服务节点的负载信息对未标记的服务节点发送RPC请求。
服务节点异常的发现分两部分:
(1)如果服务节点在发送心跳的时候发现对端服务节点(如PyNodep)有异常,则把loadp设为-1,在下一次SDK请求拓扑的时候,把这个信息推送到SDK等,SDK在挑选服务节点的时候自动把load=-1的节点排除在外。因为服务节点的心跳网络也是一个全连接的网络,所以一个服务节点的下线最终将被扩散到全网。
(2)如果调用节点在进行RPC请求或拓扑请求的时候出现异常,则SDK认为当前请求的节点已下线,将其load设为-1,并进入下一轮重试挑选流程,在重试流程中把load=-1的节点排除在外。
本发明实施例还提供一种远程调用自适应负载均衡方法,该远程调用自适应负载均衡方法由自适应调度器服务端2或RPC服务提供方执行,包括如下步骤:
各个服务节点定时向其他服务节点发送本服务节点的负载信息;
获取各服务节点的负载信息;
接收RPC请求。
本实施例中,自适应调度器服务端2包含了负载采集模块11和心跳发送机制模块12,RPC服务提供方中的各个服务节点定时向其它服务节点发送本节点的心跳信息,因此服务端的各个服务节点最终均可获得整个服务端全网的负载情况。
参考图5,本发明实施例还提供一种远程调用自适应负载均衡方法,包括如下步骤:
S1:从某个服务节点获取并更新各服务节点的负载信息;
S2:对负载信息异常的服务节点进行标记;
S3:根据所述各服务节点的负载信息计算未标记的各服务节点的累积可用指标;
S4:根据累积可用指标的大小,将未标记的各服务节点依次分为多个区间;
S5:随机生成一个随机数值,并判断所述随机数值落入的区间范围;
S6:对随机数值落入的区间的累积可用指标最大值对应的服务节点发送RPC请求。
本发明实施例还提供一种计算机装备,计算机装备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现上述任一项实施例提到的远程调用自适应负载均衡方法。其中,该计算机可读存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random AcceSSMemory,随即存储器)、EPROM(EraSable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically EraSable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,存储设备包括由设备(例如,计算机、手机)以能够读的形式存储或传输信息的任何介质,可以是只读存储器,磁盘或光盘等。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现的远程调用自适应负载均衡方法。该计算机装备可以是可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机装备至少包括但不限于:可通过***总线相互通信连接的存储器、处理器。
处理器在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器通常用于控制计算机装备的总体操作。本实施例中,处理器用于运行存储器中存储的程序代码或者处理数据,以实现上述实施例的业绩归属方法。
为了对本发明的技术方案能有更进一步的了解和认识,现列举较佳实施例对其做进一步详细说明。
实施例1
假设RPC服务框架集群中有4台服务节点,其中服务节点1(PyNode1)的CPU主频比较低,其余3台主频比较高,它们的核数都为16,为防止出现短板,根据经验把服务节点1的负载因子factor1设为0.1,其余服务节点的负载因子均为0.08,服务节点4在服务过程中被其余节点发现心跳不正常,其load4被设成了-1。服务端所得到的各个信息如表1所示:
表1
指标值 | 服务节点1 | 服务节点2 | 服务节点3 | 服务节点4 |
factor | 0.1 | 0.08 | 0.08 | 0.08 |
qsize | 15 | 30 | 20 | - |
loadavg | 8.1 | 9.5 | 5.2 | - |
cores | 16 | 16 | 16 | 16 |
load(≈) | 0.7594 | 1.425 | 0.52 | -1 |
在RPC调用发起方的SDK节点去调用RPC服务提供方的时候,SDK中所计算出的各个信息如表2所示。
表2
指标值 | 服务节点1 | 服务节点2 | 服务节点3 | 服务节点4 |
avail | 0.4679 | 0.2405 | 0.5945 | - |
accu | 0.4679 | 0.7804 | 1.3029 | - |
SDK将在[0,1.3029)间生成一个均匀分布的随机数,假设为1.235,那么PyNode3将被挑选作为本次请求的节点。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种远程调用自适应负载均衡方法,其特征在于,包括如下步骤:
获取并更新各服务节点的负载信息;
根据所述负载信息发送RPC请求;
所述负载信息包括负载值,所述发送RPC请求之前还包括如下步骤:
根据所述负载值的大小,将所述各服务节点依次分为多个区间;
随机生成一个随机数值,并判断所述随机数值落入的区间;
根据所述各服务节点的负载信息发送RPC请求具体为:对随机数值落入的区间的负载值最小值对应的服务节点发送RPC请求;
所述随机数值的范围满足如下关系式:0≤随机数值<负载值n,所述负载值n为各服务节点的负载值最小值;
或,
所述发送RPC请求之前还包括如下步骤:
根据所述各服务节点的负载值,得到各服务节点的累积可用指标;
根据所述各服务节点的累积可用指标的顺序,将所述将各服务节点依次分为多个区间;
随机生成一个随机数值,并判断所述随机数值落入的区间,
所述根据所述各服务节点的负载信息发送RPC请求具体为:对随机数值落入的区间的累积可用指标最大值对应的服务节点发送RPC请求;
所述随机数值的范围满足如下关系式:0≤随机数值<累积可用指标n,所述累积可用指标n为各服务节点的累积可用指标的最大值;
所述累积可用指标满足如下关系式:
所述accui为服务节点i的累积可用指标,所述avail为可用性指标;所述可用性指标满足如下关系式:
所述availi为服务节点i的可用性指标;
和/或,
所述负载值满足如下关系式:
负载值=(负载因子×服务节点当前所处理请求的队列长度×操作***最近1分钟内的平均负载值)/服务节点的CPU核数。
2.如权利要求1所述的远程调用自适应负载均衡方法,其特征在于,所述获取并更新各服务节点的负载信息具体为:在其中一个服务节点获取各个服务节点的负载信息,或,
所述获取并更新各服务节点的负载信息具体为:各个服务节点定时向其他服务节点发送本服务节点的负载信息,各个服务节点具有记载各节点负载信息的拓扑表,并在获取其他服务节点的负载信息后,更新其拓扑表,在其中一个服务节点获取各个服务节点的负载信息。
3.如权利要求1所述的远程调用自适应负载均衡方法,其特征在于,获取各服务节点的负载信息之后还包括如下步骤:对负载信息异常的服务节点进行标记;
所述根据所述各服务节点的负载信息发送RPC请求具体为:根据所述各服务节点的负载信息对未标记的服务节点发送RPC请求。
4.一种远程调用自适应负载均衡装置,其特征在于,包括自适应调度器发起端,所述自适应调度器发起端用于执行如权利要求1-3任一项所述的远程调用自适应负载均衡方法。
5.如权利要求4所述的远程调用自适应负载均衡装置,其特征在于,所述远程调用自适应负载均衡装置还包括自适应调度器服务端,所述自适应调度器服务端用于将各个服务节点的负载信息发送给自适应调度器发起端,以及接收所述自适应调度器发起端发送的RPC请求,所述自适应调度器服务端包括负载采集模块和心跳发送机制模块。
6.一种远程调用自适应负载均衡***,其特征在于,包括如权利要求5所述的远程调用自适应负载均衡装置、Java应用、RPC服务提供框架,所述自适应调度器发起端嵌入所述Java应用中,所述自适应调度器服务端集成到所述RPC服务提供框架的每个服务节点中。
7.一种计算机装备,其特征在于,所述计算机装备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-3中任一所述的远程调用自适应负载均衡方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110765420.9A CN113220491B (zh) | 2021-07-07 | 2021-07-07 | 远程调用自适应负载均衡方法、装置、***及计算机装备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110765420.9A CN113220491B (zh) | 2021-07-07 | 2021-07-07 | 远程调用自适应负载均衡方法、装置、***及计算机装备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113220491A true CN113220491A (zh) | 2021-08-06 |
CN113220491B CN113220491B (zh) | 2021-10-29 |
Family
ID=77081615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110765420.9A Active CN113220491B (zh) | 2021-07-07 | 2021-07-07 | 远程调用自适应负载均衡方法、装置、***及计算机装备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113220491B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030014469A1 (en) * | 2001-07-12 | 2003-01-16 | Suresh Ramaswamy | Corba load balancer |
US20090241176A1 (en) * | 2008-03-21 | 2009-09-24 | Microsoft Corporation | Load balancing in server computer systems |
CN102394931A (zh) * | 2011-11-04 | 2012-03-28 | 北京邮电大学 | 一种基于云的用户访问请求调度方法 |
CN102541655A (zh) * | 2010-12-31 | 2012-07-04 | ***股份有限公司 | 一种实现动态负载均衡的方法和装置 |
CN109120715A (zh) * | 2018-09-21 | 2019-01-01 | 华南理工大学 | 一种云环境下动态负载均衡方法 |
CN111193778A (zh) * | 2019-12-16 | 2020-05-22 | 武汉思为同飞网络技术股份有限公司 | 一种web服务负载均衡的方法、装置、设备及介质 |
CN112350973A (zh) * | 2019-08-07 | 2021-02-09 | 广州虎牙科技有限公司 | 远程过程调用负载均衡方法、装置及数据处理*** |
-
2021
- 2021-07-07 CN CN202110765420.9A patent/CN113220491B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030014469A1 (en) * | 2001-07-12 | 2003-01-16 | Suresh Ramaswamy | Corba load balancer |
US20090241176A1 (en) * | 2008-03-21 | 2009-09-24 | Microsoft Corporation | Load balancing in server computer systems |
CN102541655A (zh) * | 2010-12-31 | 2012-07-04 | ***股份有限公司 | 一种实现动态负载均衡的方法和装置 |
CN102394931A (zh) * | 2011-11-04 | 2012-03-28 | 北京邮电大学 | 一种基于云的用户访问请求调度方法 |
CN109120715A (zh) * | 2018-09-21 | 2019-01-01 | 华南理工大学 | 一种云环境下动态负载均衡方法 |
CN112350973A (zh) * | 2019-08-07 | 2021-02-09 | 广州虎牙科技有限公司 | 远程过程调用负载均衡方法、装置及数据处理*** |
CN111193778A (zh) * | 2019-12-16 | 2020-05-22 | 武汉思为同飞网络技术股份有限公司 | 一种web服务负载均衡的方法、装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
郭建金: "云平台下负载均衡集群中会话保持的研究与实现", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113220491B (zh) | 2021-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109949111B (zh) | 电子票据标识分配方法、电子票据生成方法、装置及*** | |
CN109246229B (zh) | 一种分发资源获取请求的方法和装置 | |
CN107465767B (zh) | 一种数据同步的方法和*** | |
CN108696374B (zh) | 更新客户端配置的方法和装置 | |
CN111131058B (zh) | 访问量控制方法和装置 | |
CN111277639B (zh) | 一种保持数据一致性的方法和装置 | |
CN110336848B (zh) | 一种访问请求的调度方法及调度***、设备 | |
CN112118315A (zh) | 数据处理***、方法、装置、电子设备和存储介质 | |
WO2019237594A1 (zh) | 会话保持方法、装置、计算机设备及存储介质 | |
CN108933829A (zh) | 一种负载均衡方法及装置 | |
CN113691611B (zh) | 一种区块链的分布式高并发事务处理方法及***、设备、存储介质 | |
CN111541762B (zh) | 数据处理的方法、管理服务器、设备及存储介质 | |
CN104866339A (zh) | Fota数据的分布式持久化管理方法、***和装置 | |
CN108833588B (zh) | 会话处理方法及装置 | |
CN111181765A (zh) | 一种任务处理方法和装置 | |
CN112653632A (zh) | 一种流量控制实现方法和装置 | |
EP3961415B1 (en) | Transaction confirmation methods and apparatuses in blockchain network | |
EP3672203A1 (en) | Distribution method for distributed data computing, device, server and storage medium | |
CN113064740A (zh) | 一种消息处理方法和装置 | |
CN113220491B (zh) | 远程调用自适应负载均衡方法、装置、***及计算机装备 | |
CN111131367B (zh) | 一种分布式接入服务处理方法及装置 | |
CN114666411A (zh) | 请求处理方法、装置、服务器、存储介质及产品 | |
CN113364615B (zh) | 滚动升级的方法、装置、设备和计算机可读介质 | |
CN110855787A (zh) | 基于Consul实现OpenResty动态负载均衡的方法 | |
CN113296982B (zh) | 一种接口调用方法和装置 |
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 |