CN115580618A - 一种负载均衡方法、装置、设备及介质 - Google Patents
一种负载均衡方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115580618A CN115580618A CN202211259568.6A CN202211259568A CN115580618A CN 115580618 A CN115580618 A CN 115580618A CN 202211259568 A CN202211259568 A CN 202211259568A CN 115580618 A CN115580618 A CN 115580618A
- Authority
- CN
- China
- Prior art keywords
- target
- request
- instance
- response time
- time length
- 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.)
- Pending
Links
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种负载均衡方法、装置、设备及介质,涉及服务器技术领域,应用于sidecar代理,包括:获取第一目标服务发送的目标请求,并基于所述目标请求确定出第二目标服务中的若干数量个实例;确定每一所述实例在预设历史时间段内针对请求的平均响应时长,并对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值;基于所述响应时长得分值从若干数量个所述实例中筛选出目标实例,并将所述目标请求转发至所述目标实例。通过利用sidecar代理的统计能力能够确定出各个实例针对请求的响应时长,并对响应时长进行加权随机处理以确定出用于响应目标请求的目标实例,从而实现了负载均衡。
Description
技术领域
本发明涉及服务器技术领域,特别涉及一种负载均衡方法、装置、设备及介质。
背景技术
Sidecar模式用于将应用程序的功能划分为单独的进程,通过将应用程序的组件部署到单独的进程或容器中,以提供隔离和封装。在sidecar模式中,sidecar服务被附加到主应用程序中,并为应用程序提供其所支持的特性。sidecar也与主应用程序有相同的生命周期,与主应用程序一起创建和退出。通过sidecar,来自单个服务的所有传入和传出网络流量均通过Sidecar代理,完成微服务之间的流量管理、遥测数据收集以及策略的执行等等。从某种意义上来说,服务对于网络是无感知的,只知道所附加的sidecar代理。
负载均衡是将网络请求,或者其他形式的负载“均摊”到不同的机器上,避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载,在为高负载服务器分流的同时,还可以避免资源浪费,一举两得。负载均衡可分为软件负载均衡和硬件负载均衡,负载均衡器一般根据两个因素来决定要将请求转发到哪个服务器。首先,确保所选择的服务器能够对请求做出响应,然后根据预先配置的规则从健康服务器池(healthy pool)中进行选择。负载均衡的常见算法包括Round Robin(即轮询)、Least Connections(即最小连接)等。
目前大多数利用sidecar模式的服务网格技术实现负载均衡方法主要有三种:(1)随机,请求以随机的方式转到池中的实例;(2)权重:请求根据指定的百分比转到实例;(3)最少请求:请求被转到最少被访问的实例。实际上这样的负载均衡仅仅能保证流量转发到后端实例的比例大体相当,但却无法保证尽量把请求转发到响应最快的后端实例上,甚至当后端的某一个实例因为各种各样的原因,例如内存耗尽、网络抖动响应很慢的时候,流量还是会被转发到这个实例上。
综上,如何使得请求能够尽可能得到最快的响应,并实现负载均衡是目前有待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种负载均衡方法、装置、设备及介质,能够使得请求能够尽可能得到最快的响应,并实现负载均衡。其具体方案如下:
第一方面,本申请公开了一种负载均衡方法,应用于sidecar代理,包括:
获取第一目标服务发送的目标请求,并基于所述目标请求确定出第二目标服务中的若干数量个实例;
确定每一所述实例在预设历史时间段内针对请求的平均响应时长,并对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值;
基于所述响应时长得分值从若干数量个所述实例中筛选出目标实例,并将所述目标请求转发至所述目标实例。
可选的,所述基于所述目标请求确定出第二目标服务中的若干数量个实例,包括:
获取所述目标请求的目的地址;
基于所述目的地址确定出第二目标服务中相应的若干数量个实例。
可选的,所述基于所述目标请求确定出第二目标服务中的若干数量个实例之后,还包括:
若所述第二目标服务为处于首次服务请求状态,则从若干数量个所述实例中随机确定出目标实例;
将所述目标请求转发至所述目标实例。
可选的,所述确定每一所述实例在预设历史时间段内针对请求的平均响应时长之后,还包括:
判断每一所述实例的平均响应时长是否均相同;
若否,则执行所述对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值的步骤。
可选的,所述判断每一所述实例的平均响应时长是否均相同之后,还包括:
若每一所述实例的平均响应时长均相同,则从若干数量个所述实例中随机确定出目标实例;
将所述目标请求转发至所述目标实例。
可选的,所述负载均衡方法,还包括:
记录获取请求的第一时间,并记录将请求转发至所述第二目标服务中相应实例的第二时间;
基于所述第一时间和所述第二时间确定出每一实例的请求响应时长,以便基于所述请求响应时长确定出每一实例在预设历史时间段内的平均响应时长。
可选的,所述基于所述响应时长得分值从若干数量个所述实例中筛选出目标实例,包括:
从每一所述实例的响应时长得分值中筛选出最小得分值,并将与所述最小得分值对应的实例确定为用于响应所述目标请求的目标实例。
第二方面,本申请公开了一种负载均衡装置,应用于sidecar代理,包括:
实例确定模块,用于获取第一目标服务发送的目标请求,并基于所述目标请求确定出第二目标服务中的若干数量个实例;
加权随机模块,用于确定每一所述实例在预设历史时间段内针对请求的平均响应时长,并对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值;
请求转发模块,用于基于所述响应时长得分值从若干数量个所述实例中筛选出目标实例,并将所述目标请求转发至所述目标实例。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的负载均衡方法的步骤。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的负载均衡方法的步骤。
可见,本申请公开了一种应用于sidecar代理的负载均衡方法,包括:获取第一目标服务发送的目标请求,并基于所述目标请求确定出第二目标服务中的若干数量个实例;确定每一所述实例在预设历史时间段内针对请求的平均响应时长,并对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值;基于所述响应时长得分值从若干数量个所述实例中筛选出目标实例,并将所述目标请求转发至所述目标实例。由此可见,本申请在获取到第一目标服务发送的目标请求后,则基于获取到的目标请求确定出第二目标服务中的若干数量个实例,在确定出每一实例在预设历史时间段内的针对请求的平均响应时长,然后对平均响应时长进行加权随即将处理以获取每一实例的响应时长得分值,最后基于该响应时长得分值筛选出目标实例,并将目标请求转发至该目标实例。上述技术方案通过利用sidecar代理的统计能力能够确定出各个实例针对请求的响应时长,并实现了基于响应时长的负载均衡策略,根据响应时长得分值进行实例选择,能够让请求的响应时长更短。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种负载均衡方法流程图;
图2为本申请公开的一种负载均衡流程示意图;
图3为本申请公开的一种具体的sidecar代理流量拦截示意图;
图4为本申请公开的一种具体的负载均衡方法流程图;
图5为本申请公开的一种负载均衡装置结构示意图;
图6为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前大多数利用sidecar模式的服务网格技术实现负载均衡方法主要有三种:(1)随机,请求以随机的方式转到池中的实例;(2)权重:请求根据指定的百分比转到实例;(3)最少请求:请求被转到最少被访问的实例。实际上这样的负载均衡仅仅能保证流量转发到后端实例的比例大体相当,但却无法保证尽量把请求转发到响应最快的后端实例上,甚至当后端的某一个实例因为各种各样的原因,例如内存耗尽、网络抖动响应很慢的时候,流量还是会被转发到这个实例上。为此,本申请实施例公开了一种负载均衡方法、装置、设备及介质,能够使得请求能够尽可能得到最快的响应,并实现负载均衡。
参见图1和图2所示,本申请实施例公开了一种负载均衡方法,应用于sidecar代理,该方法包括:
步骤S11:获取第一目标服务发送的目标请求,并基于所述目标请求确定出第二目标服务中的若干数量个实例。
本实施例中,由第一目标服务向第二目标服务发生请求,在这个过程中,首先由sidecar代理获取到第一目标服务发生的目标请求,再基于获取到的目标请求从第二目标服务的所有实例中确定出对应的若干数量个实例。
进一步的,需要指出的是,上述基于所述目标请求确定出第二目标服务中的若干数量个实例之后,还包括:若所述第二目标服务为处于首次服务请求状态,则从若干数量个所述实例中随机确定出目标实例;将所述目标请求转发至所述目标实例。可以理解的是,如果第二目标服务为首次用于服务请求,也即为第一次调用服务接口,则此时无法确定第二目标服务中的实例响应请求的时间,那么则从若干数量个实例中随机确定出目标实例,并将目标请求转发至该目标实例。例如,假设第一目标服务记为服务A(即serviceA),第二目标服务记为服务B(即serviceB),服务B下有三个实例与服务A发送的目标请求相对应,且服务B为处于首次服务请求状态,那么则从这三个实例中随机选出一个实例作为目标实例,并将目标请求转发至这个目标实例。
步骤S12:确定每一所述实例在预设历史时间段内针对请求的平均响应时长,并对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值。
本实施例中,确定每一实例在预设历史时间段内针对请求的平均响应时长,其中,预设历史时间段具体可以设置为5分钟,也即对过去5分钟时间内的请求响应时长进行统计,计算出每一实例针对请求的平均响应时长,再对每一实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值,需要指出的是,在计算最终得分值的过程中,还可以结合其他因素进行综合计算。另外,在执行本方法之前需要对sidecar代理进行开发,并编写sidecar代理的负载均衡算法程序,以便sidecar代理能对过去一定时间内的请求响应时长进行统计,并计算出请求的平均响应时长,在具体实施方式中还可以将程序编译为多种架构的镜像,并且制作成manifest,从而实现对多种架构的同时支持。另外,还需要指出的是,加权随机算法用于实现负载均衡,由于访问概率大致相同,所以如果部分服务器性能不一致,则容易导致性能差的服务器压力过大,因此根据服务器性能不一致的情况,可以给性能较好的服务器多分配请求,而给性能较差的服务器少分配请求,因此加权随机算法通过在随机算法的基础上为每台服务器设置权重,从而实现负载均衡,同理,本实施例中所用到原理也与之类似。
可以理解的是,sidecar代理技术具备统计响应时间的能力。具体的,可以参加图3中所示,在软件架构中,Sidecar附加到主应用,也可以理解为父应用上,以扩展/增强功能特性,同时Sidecar与主应用是松耦合的。比如服务网格软件istio,其使用的sidecar代理叫做envoy,请求进入到服务A后,首先会被拦截进入到sidecar代理中,然后经过代理的处理再进入到服务A容器里,同样的流量从服务A出去的时候也会被sidecar代理拦截,进入到代理中,代理会根据设置把流量转发到对应的服务B中。其中,需要将sidecar代理和业务容器部署到一个pod(即容器组)中,以达到sidecar拦截流量的目的。也就是说代理可以拦截流入和流出的流量,在这个过程中,sidecar代理会对请求的响应时间进行统计,但是这个响应时间的统计在现有技术中仅仅被用做是监控以及运维使用,而本实施例利用sidecar代理统计到的响应时长数据作为负载均衡算法的原始数据。
在具体实施方式中,上述确定请求响应时长的步骤具体可以包括:记录获取请求的第一时间,并记录将请求转发至所述第二目标服务中相应实例的第二时间;基于所述第一时间和所述第二时间确定出每一实例的请求响应时长,以便基于所述请求响应时长确定出每一实例在预设历史时间段内的平均响应时长。也即,从前述公开的内容可以得出,sidecar可以拦截流入和流出的流量,那么在获取到请求时,则可以记录下此时的第一时间,当请求被第二目标服务中的实例响应时,则记录下第二时间,那么第一时间至第二时间之间的时间段则为该实例的请求响应时长,如此一来即可基于请求响应时长确定出过去5分钟内每个实例的平均响应时长。
步骤S13:基于所述响应时长得分值从若干数量个所述实例中筛选出目标实例,并将所述目标请求转发至所述目标实例。
本实施例中,基于加权随机处理后得到的响应时长得分值从若干数量个实例中筛选出最佳实例作为目标实例,并将目标请求转发至该目标实例。如此一来,一个根据响应时间的负载均衡过程就完成了。
可见,本申请公开了一种应用于sidecar代理的负载均衡方法,包括:获取第一目标服务发送的目标请求,并基于所述目标请求确定出第二目标服务中的若干数量个实例;确定每一所述实例在预设历史时间段内针对请求的平均响应时长,并对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值;基于所述响应时长得分值从若干数量个所述实例中筛选出目标实例,并将所述目标请求转发至所述目标实例。由此可见,本申请在获取到第一目标服务发送的目标请求后,则基于获取到的目标请求确定出第二目标服务中的若干数量个实例,在确定出每一实例在预设历史时间段内的针对请求的平均响应时长,然后对平均响应时长进行加权随即将处理以获取每一实例的响应时长得分值,最后基于该响应时长得分值筛选出目标实例,并将目标请求转发至该目标实例。上述技术方案通过利用sidecar代理的统计能力能够确定出各个实例针对请求的响应时长,并实现了基于响应时长的负载均衡策略,根据响应时长得分值进行实例选择,能够让请求的响应时长更短。
参见图4所示,本申请实施例公开了一种具体的负载均衡方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体包括:
步骤S21:获取第一目标服务发送的目标请求,并获取所述目标请求的目的地址,以便基于所述目的地址确定出第二目标服务中相应的若干数量个实例。
本实施例中,第一目标服务发送目标请求后,sidecar代理对其进行拦截以获取该发送的目标请求,然后进一步获取目标请求中携带的目的地址,以便sidecar代理基于该目标地址从第二目标服务中确定出对应的若干数量个实例,也即本实施例具体为根据目标请求的目的地址从第二目标服务中找到符合的实例。
步骤S22:确定每一所述实例在预设历史时间段内针对请求的平均响应时长,并判断每一所述实例的平均响应时长是否均相同;
本实施例中,在确定出每一实例在预设历史时间段内针对请求的平均响应时长后,需要进一步判断各个实例的平均响应时长是否均相同。
步骤S23:若否,则对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值。
在一种具体实施方式中,若各个实例的平均响应时长不均相同,则对每一实例的平均响应时长进行加权随机处理,以获取与每一实例对应的响应时长得分值。可以理解的是,各个实例的平均响应时长不均相同,可以包括各个平均响应时长均不相同,以及其中某几个实例的平均响应时长相同,但仍存在与之不相同的实例。
在另一种具体实施方式中,上述判断每一所述实例的平均响应时长是否均相同之后,还包括:若每一所述实例的平均响应时长均相同,则从若干数量个所述实例中随机确定出目标实例;将所述目标请求转发至所述目标实例。可以理解的是,如果各个实例的平均响应时长均相同,则说明各个实例针对请求的响应速度大致相同,那么可以从若干数量个实例中随机筛选出一个实例作为目标实例,再将目标请求转发至目标实例即可。
步骤S24:从每一所述实例的响应时长得分值中筛选出最小得分值,并将与所述最小得分值对应的实例确定为用于响应所述目标请求的目标实例,然后将所述目标请求转发至所述目标实例。
本实施例中,从各个实例的响应时长得分值中筛选出最小得分值,并将与最小得分值对应的实例确定为用于响应目标请求的目标实例,然后将目标请求转发至目标实例。通过上述方案能够将目标请求转发至响应时长最短的实例中,以实现负载均衡。
其中,关于上述步骤S22更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本申请实施例获取第一目标服务发送的目标请求,并获取所述目标请求的目的地址,以便基于所述目的地址确定出第二目标服务中相应的若干数量个实例;确定每一所述实例在预设历史时间段内针对请求的平均响应时长,并判断每一所述实例的平均响应时长是否均相同;若否,则对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值;从每一所述实例的响应时长得分值中筛选出最小得分值,并将与所述最小得分值对应的实例确定为用于响应所述目标请求的目标实例,然后将所述目标请求转发至所述目标实例。由此可见,通过目标请求的目的地址可以从第二目标服务中确定出对应的若干数量个实例,再通过sidecar代理统计每个实例的平均响应时长,并判断各个实例的平均响应时长是否均相同,若否,则对每一实例的平均响应时长进行加权随机处理,以获取对应的响应时长得分值,再将响应时长得分值中最小得分值对应的实例作为用于服务目标请求的目标实例,以便让请求的响应时长更短,从而实现了基于响应时长的负载均衡。若各个实例的平均响应时长均相同,则说明各个实例针对请求的响应速度大致相同,那么可以从若干数量个实例中随机筛选出一个实例作为目标实例,再将目标请求转发至目标实例。
下面以第一目标服务为serviceA,第二目标服务为serviceB为例,对本申请中的负载均衡方法进行详细说明:
目标请求从serviceA发送至serviceB,目标请求从serviceA发出后首先被sidecar代理进行拦截,拦截后sidecar代理根据目标请求中的目的地址,筛选出serviceB中的三个实例,分别记为serviceB-1、serviceB-2、serviceB-3,然后sidecar代理获取到过去五分钟时间内serviceB-1、serviceB-2、serviceB-3这三个实例的平均响应时长,并进一步判断这三个平均响应时长是否均相同,若否,则对这三个实例的平均响应时长进行加权随机处理,以获取对应的响应时长得分值,再将响应时长得分值中最小得分值对应的实例作为用于服务目标请求的目标实例,从而让请求的响应更短,实现负载均衡,例如最后的计算结果为serviceB-2的响应时长得分值最小,则将serviceB-2作为最终的目标实例,并将目标请求转发至serviceB-2。
在具体的实施方式中,若serviceB-1、serviceB-2、serviceB-3这三个实例的平均响应时长均相同,则说明serviceB-1、serviceB-2、serviceB-3这三个实例针对请求的响应速度大致相同,那么可以从这三个实例中随机筛选出一个实例作为目标实例,再将目标请求转发至目标实例,例如随机筛选出的目标实例可以为serviceB-1,则将目标请求转发至serviceB-1。
在具体的实施方式中,若serviceB为处于首次服务请求状态,也即serviceB为首次用于服务请求,那么则从serviceB-1、serviceB-2、serviceB-3这三个实例中随机选出一个实例作为目标实例,并将目标请求转发至这个目标实例。例如随机筛选出的目标实例可以为serviceB-3,则将目标请求转发至serviceB-3。
参加图5所示,本申请实施例公开了一种负载均衡装置,应用于sidecar代理,该装置包括:
实例确定模块11,用于获取第一目标服务发送的目标请求,并基于所述目标请求确定出第二目标服务中的若干数量个实例;
加权随机模块12,用于确定每一所述实例在预设历史时间段内针对请求的平均响应时长,并对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值;
请求转发模块13,用于基于所述响应时长得分值从若干数量个所述实例中筛选出目标实例,并将所述目标请求转发至所述目标实例。
可见,本申请公开了一种应用于sidecar代理的负载均衡装置,包括:实例确定模块,用于获取第一目标服务发送的目标请求,并基于所述目标请求确定出第二目标服务中的若干数量个实例;加权随机模块,用于确定每一所述实例在预设历史时间段内针对请求的平均响应时长,并对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值;请求转发模块,用于基于所述响应时长得分值从若干数量个所述实例中筛选出目标实例,并将所述目标请求转发至所述目标实例。由此可见,本申请在获取到第一目标服务发送的目标请求后,则基于获取到的目标请求确定出第二目标服务中的若干数量个实例,在确定出每一实例在预设历史时间段内的针对请求的平均响应时长,然后对平均响应时长进行加权随即将处理以获取每一实例的响应时长得分值,最后基于该响应时长得分值筛选出目标实例,并将目标请求转发至该目标实例。上述技术方案通过利用sidecar代理的统计能力能够确定出各个实例针对请求的响应时长,并实现了基于响应时长的负载均衡策略,根据响应时长得分值进行实例选择,能够让请求的响应时长更短。
在一些具体实施例中,所述实例确定模块11,具体可以包括:
目的地址获取模块,用于获取所述目标请求的目的地址;
实例筛选单元,用于基于所述目的地址确定出第二目标服务中相应的若干数量个实例。
在一些具体实施例中,所述实例确定模块11之后,还可以包括:
第一随机确定单元,用于若所述第二目标服务为处于首次服务请求状态,则从若干数量个所述实例中随机确定出目标实例;
第一转发单元,用于将所述目标请求转发至所述目标实例。
在一些具体实施例中,所述加权随机模块12的过程中,还可以包括:
判断单元,用于判断每一所述实例的平均响应时长是否均相同;
加权随机处理单元,用于若否,则执行所述对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值的步骤。
在一些具体实施例中,所述判断单元之后,还可以包括:
第二随机确定单元,用于若每一所述实例的平均响应时长均相同,则从若干数量个所述实例中随机确定出目标实例;
第二转发单元,用于将所述目标请求转发至所述目标实例。
在一些具体实施例中,所述负载均衡装置,还可以包括:
请求时间记录单元,用于记录获取请求的第一时间,并记录将请求转发至所述第二目标服务中相应实例的第二时间;
平均响应时长确定单元,用于基于所述第一时间和所述第二时间确定出每一实例的请求响应时长,以便基于所述请求响应时长确定出每一实例在预设历史时间段内的平均响应时长。
在一些具体实施例中,所述请求转发模块13,具体可以包括:
目标实例确定单元,用于从每一所述实例的响应时长得分值中筛选出最小得分值,并将与所述最小得分值对应的实例确定为用于响应所述目标请求的目标实例。
图6为本申请实施例提供的一种电子设备的结构示意图。具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现以下步骤:
获取第一目标服务发送的目标请求,并基于所述目标请求确定出第二目标服务中的若干数量个实例;
确定每一所述实例在预设历史时间段内针对请求的平均响应时长,并对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值;
基于所述响应时长得分值从若干数量个所述实例中筛选出目标实例,并将所述目标请求转发至所述目标实例。
一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,具体可以实现以下步骤:
获取所述目标请求的目的地址;
基于所述目的地址确定出第二目标服务中相应的若干数量个实例。
一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,具体可以实现以下步骤:
若所述第二目标服务为处于首次服务请求状态,则从若干数量个所述实例中随机确定出目标实例;
将所述目标请求转发至所述目标实例。
一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,具体可以实现以下步骤:
判断每一所述实例的平均响应时长是否均相同;
若否,则执行所述对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值的步骤。
一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,具体可以实现以下步骤:
若每一所述实例的平均响应时长均相同,则从若干数量个所述实例中随机确定出目标实例;
将所述目标请求转发至所述目标实例。
一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,具体可以实现以下步骤:
记录获取请求的第一时间,并记录将请求转发至所述第二目标服务中相应实例的第二时间;
基于所述第一时间和所述第二时间确定出每一实例的请求响应时长,以便基于所述请求响应时长确定出每一实例在预设历史时间段内的平均响应时长。
一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,具体可以实现以下步骤:
从每一所述实例的响应时长得分值中筛选出最小得分值,并将与所述最小得分值对应的实例确定为用于响应所述目标请求的目标实例。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的负载均衡方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223除了可以包括电子设备接收到的由外部设备传输进来的数据,也可以包括由自身输入输出接口25采集到的数据等。
进一步的,本申请实施例还公开了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的由负载均衡过程中执行的方法步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种负载均衡方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种负载均衡方法,其特征在于,应用于sidecar代理,包括:
获取第一目标服务发送的目标请求,并基于所述目标请求确定出第二目标服务中的若干数量个实例;
确定每一所述实例在预设历史时间段内针对请求的平均响应时长,并对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值;
基于所述响应时长得分值从若干数量个所述实例中筛选出目标实例,并将所述目标请求转发至所述目标实例。
2.根据权利要求1所述的负载均衡方法,其特征在于,所述基于所述目标请求确定出第二目标服务中的若干数量个实例,包括:
获取所述目标请求的目的地址;
基于所述目的地址确定出第二目标服务中相应的若干数量个实例。
3.根据权利要求1所述的负载均衡方法,其特征在于,所述基于所述目标请求确定出第二目标服务中的若干数量个实例之后,还包括:
若所述第二目标服务为处于首次服务请求状态,则从若干数量个所述实例中随机确定出目标实例;
将所述目标请求转发至所述目标实例。
4.根据权利要求1所述的负载均衡方法,其特征在于,所述确定每一所述实例在预设历史时间段内针对请求的平均响应时长之后,还包括:
判断每一所述实例的平均响应时长是否均相同;
若否,则执行所述对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值的步骤。
5.根据权利要求4所述的负载均衡方法,其特征在于,所述判断每一所述实例的平均响应时长是否均相同之后,还包括:
若每一所述实例的平均响应时长均相同,则从若干数量个所述实例中随机确定出目标实例;
将所述目标请求转发至所述目标实例。
6.根据权利要求1所述的负载均衡方法,其特征在于,还包括:
记录获取请求的第一时间,并记录将请求转发至所述第二目标服务中相应实例的第二时间;
基于所述第一时间和所述第二时间确定出每一实例的请求响应时长,以便基于所述请求响应时长确定出每一实例在预设历史时间段内的平均响应时长。
7.根据权利要求1至6任一项所述的负载均衡方法,其特征在于,所述基于所述响应时长得分值从若干数量个所述实例中筛选出目标实例,包括:
从每一所述实例的响应时长得分值中筛选出最小得分值,并将与所述最小得分值对应的实例确定为用于响应所述目标请求的目标实例。
8.一种负载均衡装置,其特征在于,应用于sidecar代理,包括:
实例确定模块,用于获取第一目标服务发送的目标请求,并基于所述目标请求确定出第二目标服务中的若干数量个实例;
加权随机模块,用于确定每一所述实例在预设历史时间段内针对请求的平均响应时长,并对每一所述实例的平均响应时长进行加权随机处理,以获取每一所述实例的响应时长得分值;
请求转发模块,用于基于所述响应时长得分值从若干数量个所述实例中筛选出目标实例,并将所述目标请求转发至所述目标实例。
9.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的负载均衡方法的步骤。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的负载均衡方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211259568.6A CN115580618A (zh) | 2022-10-14 | 2022-10-14 | 一种负载均衡方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211259568.6A CN115580618A (zh) | 2022-10-14 | 2022-10-14 | 一种负载均衡方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115580618A true CN115580618A (zh) | 2023-01-06 |
Family
ID=84584450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211259568.6A Pending CN115580618A (zh) | 2022-10-14 | 2022-10-14 | 一种负载均衡方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115580618A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116107760A (zh) * | 2023-04-07 | 2023-05-12 | 浪潮电子信息产业股份有限公司 | 一种负载均衡方法、装置、设备及介质 |
-
2022
- 2022-10-14 CN CN202211259568.6A patent/CN115580618A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116107760A (zh) * | 2023-04-07 | 2023-05-12 | 浪潮电子信息产业股份有限公司 | 一种负载均衡方法、装置、设备及介质 |
CN116107760B (zh) * | 2023-04-07 | 2023-07-14 | 浪潮电子信息产业股份有限公司 | 一种负载均衡方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240069942A1 (en) | Centralized networking configuration in distributed systems | |
EP3637733B1 (en) | Load balancing engine, client, distributed computing system, and load balancing method | |
CN108039975B (zh) | 容器集群管理系统及其应用方法 | |
US11888756B2 (en) | Software load balancer to maximize utilization | |
CN109618002B (zh) | 一种微服务网关优化方法、装置及存储介质 | |
CN105743962A (zh) | 端对端数据中心性能控制 | |
CN110896373A (zh) | 用于动态选择虚拟交换的资源的技术 | |
EP3547625B1 (en) | Method and system for sending request for acquiring data resource | |
US20180321981A1 (en) | System and method for self organizing data center | |
US20150006630A1 (en) | Decentralized request routing | |
CN107872402A (zh) | 全局流量调度的方法、装置及电子设备 | |
US10439901B2 (en) | Messaging queue spinning engine | |
CN112187864B (zh) | 负载均衡方法、装置、存储介质及电子设备 | |
CN108933829A (zh) | 一种负载均衡方法及装置 | |
CN113765980A (zh) | 一种限流方法、装置、系统、服务器和存储介质 | |
CN106445473A (zh) | 一种容器部署方法及装置 | |
CN111258851A (zh) | 一种集群的告警方法、装置、设置及存储介质 | |
CN105247834B (zh) | 虚拟网络功能中网络资源的分配方法、编排器及管理器 | |
CN115580618A (zh) | 一种负载均衡方法、装置、设备及介质 | |
CN113608751B (zh) | 推理服务平台的运行方法、装置、设备及存储介质 | |
CN108810042A (zh) | 一种任务处理方法、相关设备及系统 | |
CN115129463A (zh) | 算力调度方法及装置、系统及存储介质 | |
US20220278944A1 (en) | Method for allocating resources of a network infrastructure | |
CN107659511B (zh) | 一种过载控制方法、主机和存储介质以及程序产品 | |
CN110636149A (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 |