负载均衡概念理解和相关算法

这篇具有很好参考价值的文章主要介绍了负载均衡概念理解和相关算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是负载均衡

负载均衡(Load balance,LB),是一种计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。

通俗点理解有点类似于常说的一句话,一碗水端平。如果我们只有一个碗,那么无论有多少水,那么我们只能装一碗水。在单服务器的应用场景,碗就是服务器,而水就是流量。所以我们知道,一旦水(流量)过大时,一个碗肯定是不够用的。这时候就需要多来几个碗(服务器)来支撑更多的水(流量)。但是不能让这个碗接的水满满的,而有的碗没有水,或者水少,水就是负载,而这种就是负载不均衡了。负载均衡就是为了让所有碗里的水都尽量一样多,不至于让有的服务器压力大,而有的服务器压力小甚至用不上。

那么我们知道尽管有很多的碗,能够装得下足够多的水,但是这么多碗,哪个先用,哪个后用呢?这时候我们可以想象以前读书的时候的洗衣池,一个池子上面有n个水龙头,这时候每个水龙头下都放这一个碗,这样就能够保证这些碗基本是同时被使用到的,而这种就是分布式服务器集群的基本概念了。

那么这些碗如何能够达到负载均衡呢?因为会有有得水龙头流量大,有得水龙头流量小的情况,这样的话流量大的地方的碗的负载压力就大。那么这时候,如果我们把所有的碗都打通,然后再用一个水管把他们连起来,这样是不是就能够基本保证,所有的碗的水都一样多了?因为水多的碗里面的水也很流到水少的碗里。这样就能够达到负载均衡的目的了。这里面用来连接碗之间的水管就是连通器的概念,但是连通器其实只是用于解决服务器之间的通信问题,其并不是减轻服务器性能的算法。负载均衡就是通过分流算法,合理的分摊服务器压力,达到服务器性能的最大优化。但是这里也不能简单地理解为分配给所有实际服务器一样多的工作量,因为不同的服务器在硬件配置、网络带宽的不同,导致它们具体的承载能力也不相同,这里的“均衡”,其实就是尽可能地使得所有的服务器都不要过载,并且能够最大程序地发挥作用。

总结:负载均衡(Load Balance),就是是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行,用来解决高性能,单点故障(高可用),扩展性(水平伸缩)的场景需求!

转自:https://www.zhihu.com/tardis/bd/art/390877240?source_id=1001

负载均衡算法

如何将负载分配到某个操作单元上,实践过程中有如下的一些算法,实际上生活中也有很多类似的例子。 也是实际不断的优化算法的过程

1. 轮询调度(👍)

轮询调度(Round Robin 简称’RR’)算法就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是实现简单。轮询算法假设所有的服务器处理请求的能力都一样的,调度器会将所有的请求平均分配给每个真实服务器。

2. 加权轮询调度

加权轮询(Weight Round Robin 简称’WRR’)算法主要是对轮询算法的一种优化与补充,LVS会考虑每台服务器的性能,并给每台服务器添加一个权值,如果服务器A的权值为1,服务器B的权值为2,则调度器调度到服务器B的请求会是服务器A的两倍。权值越高的服务器,处理的请求越多。

3. 最小连接调度

最小连接调度(Least Connections 简称’LC’)算法是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态的调度算法,它通过服务器当前活跃的连接数来估计服务器的情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中断或者超时,其连接数减1。

(集群系统的真实服务器具有相近的系统性能,采用最小连接调度算法可以比较好地均衡负载。)

4. 加权最小连接调度

加权最少连接(Weight Least Connections 简称’WLC’)算法是最小连接调度的超集,各个服务器相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权值。加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

5. 基于局部的最少连接

基于局部的最少连接调度(Locality-Based Least Connections 简称’LBLC’)算法是针对请求报文的目标IP地址的 负载均衡调度,目前主要用于Cache集群系统,因为在Cache集群客户请求报文的目标IP地址是变化的。这里假设任何后端服务器都可以处理任一请求,算法的设计目标是在服务器的负载基本平衡情况下,将相同目标IP地址的请求调度到同一台服务器,来提高各台服务器的访问局部性和Cache命中率,从而提升整个集群系统的处理能力。LBLC调度算法先根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则使用’最少连接’的原则选出一个可用的服务器,将请求发送到服务器。

6. 带复制的基于局部性的最少连接(👍)

带复制的基于局部性的最少连接(Locality-Based Least Connections with Replication 简称’LBLCR’)算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统,它与LBLC算法不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。按’最小连接’原则从该服务器组中选出一一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按’最小连接’原则从整个集群中选出一台服务器,将该服务器加入到这个服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

7. 目标地址散列调度

目标地址散列调度(Destination Hashing 简称’DH’)算法先根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空。

8. 源地址散列调度U

源地址散列调度(Source Hashing 简称’SH’)算法先根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空。它采用的散列函数与目标地址散列调度算法的相同,它的算法流程与目标地址散列调度算法的基本相似。

9. 最短的期望的延迟

最短的期望的延迟调度(Shortest Expected Delay 简称’SED’)算法基于WLC算法。举例: ABC三台服务器的权重分别为1、2、3 。那么如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用SED算法后会进行一个运算

A:(1+1)/ 1=2
B:(1+2)/ 2=3/2
C:(1+3)/ 3=4/3
就把请求交给得出运算结果最小的服务器。

10. 最少队列调度

最少队列调度(Never Queue 简称’NQ’)算法,无需队列。如果有realserver的连接数等于0就直接分配过去,不需要在进行SED运算。文章来源地址https://www.toymoban.com/news/detail-627532.html

到了这里,关于负载均衡概念理解和相关算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 对负载均衡的全面理解

    对 负载均衡 服务(LBS)大名入行不多久就一直听闻,后来的工作中,也了解到 软件负载均衡器 ,如被合入Linux内核的章文嵩的LVS,还有以应用程序形式出现的HAProxy、KeepAlived,以及更熟悉的Nginx 等 也知道价格高昂的硬件负载均衡器如F5,A10 (甚至搬运过报废的F5) 但长期以来,也

    2024年02月10日
    浏览(47)
  • “深入理解Nginx的负载均衡与动静分离“

    在现代互联网应用中,高性能和可扩展性是至关重要的。Nginx作为一款高性能的Web服务器和反向代理服务器,被广泛应用于各种规模的网站和应用程序中。本文将深入探讨Nginx的负载均衡和动静分离的原理与实践,帮助读者更好地理解和应用这些功能。 Nginx是一款轻量级的高性

    2024年02月06日
    浏览(34)
  • 小白到运维工程师自学之路 第三十九集 (HAproxy 负载均衡) 一、概述

            HAProxy是一款高性能的负载均衡软件,可以将来自客户端的请求分发到多个服务器上,以提高系统的可用性和性能。HAProxy支持多种负载均衡算法,包括轮询、加权轮询、最少连接数等。同时,HAProxy还支持会话保持、健康检查、SSL终止等功能,可以满足不同场景下的

    2024年02月09日
    浏览(35)
  • 深入理解API网关Kong:动态负载均衡配置

    在 NGINX 中,负载均衡的配置主要在 upstream 指令中进行。 upstream 指令用于定义一个服务器群组和负载均衡方法。客户端请求在这个服务器群组中进行分发。 NGINX 提供了以下几种负载均衡方法: 轮询(round-robin) :这是默认的负载均衡方法,每个请求按照时间分发,从第一个

    2024年02月07日
    浏览(43)
  • 第五次作业 运维高级 构建 LVS-DR 集群和配置nginx负载均衡

    1、基于 CentOS 7 构建 LVS-DR 群集。 LVS-DR模式工作原理 首先,来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客户端计算机(不经过direct

    2024年02月14日
    浏览(37)
  • Kong工作原理 - 负载均衡 - 负载均衡算法

    负载均衡器支持以下负载均衡算法: 1. 轮询(Round-robin) 2. 一致性哈希(Consistent Hashing) 3. 最少连接(Least Connections) 4. 延迟(Latency) 这些算法仅在使用upstream实体时可用,详见高级负载均衡。 注意:对于所有这些算法,重要的是要了解如何设置每个后端的权重和端口。

    2024年01月25日
    浏览(29)
  • Nginx配置整合:基本概念、命令、反向代理、负载均衡、动静分离、高可用

    Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理server。其特点是占有内存少。并发能力强,其并发能力确实在同类型的网页server中表现较好。 Web服务器是指驻留于因特网上某种类型计算机的程序。当Web浏览器(客户端)连到服务器上并请求文件时,服务器

    2024年02月16日
    浏览(33)
  • Ngnix负载均衡和高可用集群及搭建与相关理论

    要搭建 Nginx 高可用集群,您可以遵循以下步骤: 安装 Nginx:在每个服务器上安装 Nginx。 安装 keepalived:安装 keepalived 负责 IP 地址管理和服务器的故障检测。 配置 keepalived:配置 keepalived 来设置虚拟 IP(VIP)。VIP 是在集群中所有节点之间共享的 IP 地址,当一个节点失效时它

    2024年02月04日
    浏览(73)
  • 深入理解 Kubernetes Ingress:路由流量、负载均衡和安全性配置

    Kubernetes Ingress 是 Kubernetes 集群中外部流量管理的重要组件。它为用户提供了一种直观而强大的方式,通过定义规则和配置,来控制外部流量的路由和访问。 在 Kubernetes 中,Ingress 是一种 API 资源,用于定义外部流量如何进入集群内部。它允许我们基于主机名、路径和其他条件

    2024年01月19日
    浏览(40)
  • 负载均衡的算法(静态算法与动态算法)

    静态算法是不考虑服务器动态负载的算法,包括: (1)轮转算法:轮流将服务请求(任务)调度给不同的节点(即:服务器)。 (2)加权轮转算法:考虑不同节点处理能力的差异。 (3)源地址哈希散列算法:根据请求的源IP地址,作为散列键从静态分配的散列表找出对应

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包