- 浏览: 52916 次
- 性别:
文章分类
最新评论
什么是负载均衡?
就得说说负载均衡的作用了,负载均衡主要解决系统之间的高并发问题。当一台服务器的访问数量达到极限时,可能访问延迟,甚至宕机。我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。
那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。
如图:
负载均衡实现一般分硬件和软件。硬件有如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的客户端,当后台服务器列表不变时,它每次访问的都是同一台服务器。
你妹的,对“轮”和“询”组合字敏感。我也醉了
就得说说负载均衡的作用了,负载均衡主要解决系统之间的高并发问题。当一台服务器的访问数量达到极限时,可能访问延迟,甚至宕机。我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。
那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。
如图:
负载均衡实现一般分硬件和软件。硬件有如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的客户端,当后台服务器列表不变时,它每次访问的都是同一台服务器。
你妹的,对“轮”和“询”组合字敏感。我也醉了
发表评论
-
java 之sftp实现
2018-03-31 17:41 656上周进行了linux环境下sftp的配置和用户权限的创建:ht ... -
java webService之CXF的使用
2018-03-29 14:25 447使用场景:华为VOD系统与媒资系统的接口,资产数据(元数据XM ... -
java 中jstat的用法
2018-03-20 18:06 717JDK自带VM分析工具jps,jstat,jmap,jcons ... -
javaEE性能优化
2018-03-20 16:41 503性能的优化一般可以从多方面入手,前端资源,java程序,数据传 ... -
jvm gc日志检查
2018-03-20 15:08 368JVM的GC日志的主要参数包括如下几个: -XX:+Pr ... -
基于TCP协议实现RPC
2018-03-19 11:28 713RPC的全称:Remote Process Call,即远程过 ... -
java 多线程
2018-03-16 13:29 354Java 多线程编程 Java 给 ... -
SpringMVC执行流程图
2018-03-15 10:46 471SpringMVC 流程图 DispatcherServle ... -
Java中BIO、NIO、AIO的原理及其区别
2018-03-12 17:34 661IO的处理方式通常分为 ... -
基于Spring 自定义标签实现
2017-11-30 09:26 556一、源码分析: Spring标签的定义分为默认标签和自定义 ... -
java二维码的生成和解析
2017-09-26 11:15 434一、本文目的: 为了研究对支付宝和微信支付的统一路口管理 ... -
spring-data-redis
2017-09-18 11:54 732Spring-data-redis使用 1、maven依赖 ... -
java,redis
2017-09-18 11:32 358Redis 简介 Redis 是完全开源免费的,遵守BSD协议 ... -
Java xml与实体Bean的转换
2017-09-05 15:24 7001、pom.xml依赖包: <dependenc ... -
Java JVM虚拟机知识要点
2017-08-30 10:25 5961、JVM虚拟机图解: ... -
java 上传小于占用空间为4k的jpg图片异常问题处理
2017-07-19 18:02 529javaWeb上传图片 jpg占用空间为4k时,Commons ... -
Springmvc 注入字符串与时间格式的转换
2017-03-24 11:10 1196以下列出两种spring支持的时间转换 -、方式一 1、 ... -
linux下修改war包
2017-03-06 15:32 1100Linux上修改war包上的文件 www.MyExceptio ... -
itellij idea 11.1.3 mybatis 自动构建代码
2016-11-16 09:50 445步骤一: 1、在工程中pom.xml加添 <buil ... -
intellij idea 下resin容器远程调试
2016-11-16 09:27 5385resin远程调试(我使用的是resin-4.0.41版本): ...
相关推荐
常见的负载均衡算法有很多,下面将对几种典型的负载均衡算法进行介绍。 一、HASH 算法 HASH 算法是一种简单的负载均衡算法,它将请求的 ID 值进行 HASH 操作,然后将其映射到对应的服务器上。在 Baidu 的服务中,...
在给定的文件中,详细介绍了多种负载均衡算法,包括静态和动态两种类型。接下来,我们将深入探讨这些算法的特点和应用场景。 ### 静态负载均衡算法 #### 轮询(Round Robin) 轮询是最基本的负载均衡策略,它按照...
### Nginx 配置负载均衡的几种方式详解 #### 一、引言 随着互联网技术的飞速发展,单一服务器已经无法满足日益增长的服务需求。为了提高系统的稳定性和扩展性,采用负载均衡技术成为了常见解决方案之一。Nginx作为...
在传统的nginx负载均衡配置中,并未直接提供后端服务器健康检查的功能,但nginx提供了几个重要的指令来帮助我们设置超时和重试机制,来间接保障服务的可用性。例如,proxy_connect_timeout指令用于设置nginx尝试连接...
在微服务架构中,通常有以下几种常见的负载均衡策略: 1. **轮询**:每次请求按顺序分配到不同的服务器,确保每个服务器都有机会处理请求。 2. **随机**:随机选择一台服务器进行请求,简单且易于实现。 3. **最少...
负载均衡的基本原理是将流入的网络流量分发到多个服务器上,以防止单一服务器过载,提高整体系统的响应时间和吞吐量。A10的SoftAX模拟器能够模拟真实的A10负载均衡器环境,帮助运维人员和学习者在无需物理设备的情况...
在WebLogic 8.1中,实现负载均衡有几种策略: 1. **基于RMI的负载均衡**:这是默认的负载均衡策略,它通过Java Remote Method Invocation (RMI) 来分发请求。每个服务器实例都注册到全局JNDI树中,客户端根据JNDI...
负载均衡是一种计算机网络服务,它的目的是分散网络流量,提高系统的响应速度和整体处理能力,同时也能增强服务的可用性和可靠性。在IT行业中,负载均衡通常应用于Web服务器、数据库服务器和其他处理大量请求的服务...
本文主要介绍了负载均衡的基本概念和原理,并基于LVS技术,在Linux平台设计实现了一个高性能、高可伸缩性、高可用性、高性价比的负载均衡系统。该系统可以有效地增强服务的性能和可用性,具有很高的伸缩性和性价比。...
ARR内置了六种负载均衡算法,包括但不限于轮询、最少连接、哈希等。这些算法允许管理员根据实际情况选择最适合的应用场景。 ##### 3. 健康检查功能 为了确保服务的高可用性,ARR提供了强大的健康检查机制。它可以...
这里我们将深入探讨定时器的工作原理、负载均衡的基本概念以及如何在两台服务器之间实现这一目标。 首先,定时器是一种能够按照预设时间或间隔执行特定任务的机制。在编程中,定时器通常由事件循环驱动,比如Java中...
本教程主要介绍了几种常见的负载均衡方法。 1. **基于DNS的负载均衡** 基于DNS的负载均衡通过将一个域名解析为多个IP地址来实现。当客户端请求域名时,DNS服务器会随机返回其中一个IP,从而将流量分发到不同的...
通过这个工具,开发者可以更好地理解Thrift的工作原理,同时也可以测试不同的负载均衡策略对系统性能的影响。 为了在Thrift中实现自定义的负载均衡策略,开发者可能需要扩展Thrift的服务器接口,如...
Apache支持以下几种负载均衡机制: 1. **基于代理的负载均衡**:Apache通过配置代理模块(`mod_proxy`、`mod_proxy_http` 和 `mod_proxy_balancer`)实现对请求的分发。 2. **轮询算法**:默认情况下,Apache使用...
#### 三、负载均衡型集群的组建原理 负载均衡型集群主要由相互备份的负载均衡调度器和后台的实际服务器群组成。整个系统中,负载均衡调度器是关键组件之一,它负责接收用户的请求并将请求分配给后台服务器进行处理...