`

负载均衡的几种原理

阅读更多
什么是负载均衡?
  就得说说负载均衡的作用了,负载均衡主要解决系统之间的高并发问题。当一台服务器的访问数量达到极限时,可能访问延迟,甚至宕机。我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。
  那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。
如图:

负载均衡实现一般分硬件和软件。硬件有如F5,软件有nginx,zookeeper,redis等。
以zookeeper的负载均衡为例;
zookeeper的调度算法可分为:Round-Robin算法,随机算法,源地址哈希算法,WeightedRound-Robin算法,加权随机算法,最小连接算法。
1:Round-Robin算法(仑询)
  Round-Robin是最简单的一种负载均衡算法。它的原理是把来自用户的请求轮流分配给内部的服务器:从服务器1开始,直到服务器N,然后重新开始循环。
  算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。
 算法假设所有服务器的处理性能都相同,不关心每台服务器的当前连接数和响应速度。当请求服务间隔时间变化比较大时,算法容易导致服务器间的负载不平衡。所以此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。
2:WeightedRound-Robin(加权仑询)
  算法并没有考虑每台服务器的处理能力,实际中可能并不是这种情况。由于每台服务器的配置、安装的业务应用等不同,其处理能力会不一样。所以,算法的原理就是:根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。
3:权随机算法
加权随机算法一般应用在以下场景:有一个集合S,里面比如有A,B,C,D这四项。这时我们想随机从中抽取一项,但是抽取的概率不同,比如我们希望抽到A的概率是50%,抽到B和C的概率是20%,D的概率是10%。一般来说,我们可以给各项附一个权重,抽取的概率正比于这个权重。那么上述集合就成了:{A:5,B:2,C:2,D:1}
4:最小连接调度(Least-Connection Scheduling)算法
  是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态调度算法,它通过服务器当前所活跃的连接数来估计服务器的负载情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中止或超时,其连接数减一。
5:源地址哈希(hash)算法
   获取客户端IP地址值,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是要访问的服务器的序号。采用哈希算法进行负载均衡,同一个IP的客户端,当后台服务器列表不变时,它每次访问的都是同一台服务器。
你妹的,对“轮”和“询”组合字敏感。我也醉了
  • 大小: 42.1 KB
分享到:
评论

相关推荐

    几种典型的负载均衡算法

    常见的负载均衡算法有很多,下面将对几种典型的负载均衡算法进行介绍。 一、HASH 算法 HASH 算法是一种简单的负载均衡算法,它将请求的 ID 值进行 HASH 操作,然后将其映射到对应的服务器上。在 Baidu 的服务中,...

    几种负载均衡算法

    在给定的文件中,详细介绍了多种负载均衡算法,包括静态和动态两种类型。接下来,我们将深入探讨这些算法的特点和应用场景。 ### 静态负载均衡算法 #### 轮询(Round Robin) 轮询是最基本的负载均衡策略,它按照...

    Nginx-配置负载均衡的几种方式

    ### Nginx 配置负载均衡的几种方式详解 #### 一、引言 随着互联网技术的飞速发展,单一服务器已经无法满足日益增长的服务需求。为了提高系统的稳定性和扩展性,采用负载均衡技术成为了常见解决方案之一。Nginx作为...

    nginx负载均衡配置,宕机自动切换方式

    在传统的nginx负载均衡配置中,并未直接提供后端服务器健康检查的功能,但nginx提供了几个重要的指令来帮助我们设置超时和重试机制,来间接保障服务的可用性。例如,proxy_connect_timeout指令用于设置nginx尝试连接...

    spring-cloud-discoveryClient技术实现负载均衡操作(负载原理).zip

    在微服务架构中,通常有以下几种常见的负载均衡策略: 1. **轮询**:每次请求按顺序分配到不同的服务器,确保每个服务器都有机会处理请求。 2. **随机**:随机选择一台服务器进行请求,简单且易于实现。 3. **最少...

    A10负载均衡模拟器 SoftAX 学习A10必备

    负载均衡的基本原理是将流入的网络流量分发到多个服务器上,以防止单一服务器过载,提高整体系统的响应时间和吞吐量。A10的SoftAX模拟器能够模拟真实的A10负载均衡器环境,帮助运维人员和学习者在无需物理设备的情况...

    weblogic8.1集群负载均衡

    在WebLogic 8.1中,实现负载均衡有几种策略: 1. **基于RMI的负载均衡**:这是默认的负载均衡策略,它通过Java Remote Method Invocation (RMI) 来分发请求。每个服务器实例都注册到全局JNDI树中,客户端根据JNDI...

    负载均衡

    负载均衡是一种计算机网络服务,它的目的是分散网络流量,提高系统的响应速度和整体处理能力,同时也能增强服务的可用性和可靠性。在IT行业中,负载均衡通常应用于Web服务器、数据库服务器和其他处理大量请求的服务...

    Linux服务器负载均衡的研究与实现.pdf

    本文主要介绍了负载均衡的基本概念和原理,并基于LVS技术,在Linux平台设计实现了一个高性能、高可伸缩性、高可用性、高性价比的负载均衡系统。该系统可以有效地增强服务的性能和可用性,具有很高的伸缩性和性价比。...

    IIS负载均衡配置

    ARR内置了六种负载均衡算法,包括但不限于轮询、最少连接、哈希等。这些算法允许管理员根据实际情况选择最适合的应用场景。 ##### 3. 健康检查功能 为了确保服务的高可用性,ARR提供了强大的健康检查机制。它可以...

    定时器实现负载均衡

    这里我们将深入探讨定时器的工作原理、负载均衡的基本概念以及如何在两台服务器之间实现这一目标。 首先,定时器是一种能够按照预设时间或间隔执行特定任务的机制。在编程中,定时器通常由事件循环驱动,比如Java中...

    网络设计服务器负载均衡PPT学习教案.pptx

    本教程主要介绍了几种常见的负载均衡方法。 1. **基于DNS的负载均衡** 基于DNS的负载均衡通过将一个域名解析为多个IP地址来实现。当客户端请求域名时,DNS服务器会随机返回其中一个IP,从而将流量分发到不同的...

    Apache Thrift 初学小讲(七)【负载均衡】

    通过这个工具,开发者可以更好地理解Thrift的工作原理,同时也可以测试不同的负载均衡策略对系统性能的影响。 为了在Thrift中实现自定义的负载均衡策略,开发者可能需要扩展Thrift的服务器接口,如...

    apache服务器负载均衡方案

    Apache支持以下几种负载均衡机制: 1. **基于代理的负载均衡**:Apache通过配置代理模块(`mod_proxy`、`mod_proxy_http` 和 `mod_proxy_balancer`)实现对请求的分发。 2. **轮询算法**:默认情况下,Apache使用...

    英文版LVS负载均衡Tutor

    主要包括以下几种: - **NAT(Network Address Translation)模式**:在这种模式下,所有的数据包都会经过 Linux Director 进行地址转换。该模式简单易用,但可能会受到性能限制,因为所有流量都需要通过 Director...

Global site tag (gtag.js) - Google Analytics