负载均衡的策略

news/2024/7/10 2:00:16 标签: 负载均衡

负载均衡的策略

轮询

每个请求会按时间顺序逐一分配到不同的后端服务器。
在轮询中,如果服务器down掉了,会自动剔除该服务器。
此策略适合服务器配置相当,无状态且短平快的服务使用。

轮询(RoundRobin)将请求顺序循环地发到每个服务器。当其中某个服务器发生故障,AX就把其从顺序循环队列中拿出,不参加下一次的轮询,直到其恢复正常

weight加权轮询

权重越高分配到需要处理的请求越多。
此策略可以与least_conn和ip_hash结合使用。
此策略比较适合服务器的硬件配置差别比较大的情况

比率(Ratio):给每个服务器分配一个加权值为比例,根椐这个比例,把用户的请求分配到每个服务器。当其中某个服务器发生故障,AX就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常

优先权(Priority

优先权(Priority):给所有服务器分组,给每个组定义优先权,将用户的请求分配给优先级最高的服务器组(在同一组内,采用预先设定的轮询或比率算法,分配用户的请求);当最高优先级中所有服务器或者指定数量的服务器出现故障,AX将把请求送给次优先级的服务器组。这种方式,实际为用户提供一种热备份的方式。

ip_hash

指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题
此策略适合有状态服务,比如session。

url_hash

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取。

least_conn

把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。

最少连接数(LeastConnection):AX会记录当前每台服务器或者服务端口上的连接数,新的连接将传递给连接数最少的服务器。当其中某个服务器发生故障,AX就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。

fair

按照服务器端的响应时间来分配请求,响应时间短的优先分配。

最快响应时间(Fast Reponse time)

随机

健康检查

会话保持

参考文章

详解Nginx服务器之负载均衡策略(6种)
服务器负载均衡的基本功能和实现原理


http://www.niftyadmin.cn/n/1688153.html

相关文章

MySQL中的char、varchar(10)、varchar(1000)的区别

这里写自定义目录标题tipsMySQL中的varchar与char的区别varchar(100) 与varchar(1000)的区别参考tips 若无特殊指明,文中提到的存储空间指的都是占用磁盘空间。 MySQL中的varchar与char的区别 存储空间 char(m)是固定长度的字符串,始终会占用 M 个…

Spring JDBC Template使用小记

文章目录Spring JDBC Template表结构主要方法查询queryForObject 返回单个基本类型、字符串queryForObject 返回单个实体类queryForMap 返回单个Map结果集为空或多条时的解决方案queryForList 返回基本类型、字符串的Listquery 返回对象的List批量查询 IN插入、更新、删除插入插…

foreach 语法糖的原理

文章目录foreach 语法糖的原理集合 Collection测试代码反编译后的测试代码字节码数组测试代码反编译后的测试代码总结参考foreach 语法糖的原理 foreach 是 Java 提供的语法糖,为了方便程序员使用而添加的。本文提供简单的例子说明一下原理。 集合 Collection 测…

validation参数检验 - 注解介绍

文章目录Maven 依赖注解介绍javax.validation 中的注解(22个)Null、NotNullNotBlankNotEmptySizeAssertFalse、AssertTrueDecimalMax、DecimalMin、Max、MinDigitsPositive、PositiveOrZero、Negative、NegativeOrZeroFuture、FutureOrPresent、Past、Pa…

validation参数检验 - 如何使用

文章目录Maven 依赖Spring MVC Controller 的输入验证 Path Variables、 Request Parameters、Request Header验证 RequestBody非 Controller 组件的方法自定义 Validator自定义一个验证需要的注解自定义 Constraint 注解注意点自定义一个 Validator定义一个 POJO 进行验证以纯…

Mysql DELETE语法

文章目录Mysql DELETE语法多表 DELETE语法DELETE LIMIT参考Mysql DELETE语法 多表 DELETE语法 DELETE [LOW_PRIORITY] [QUICK] [IGNORE]tbl_name[.*] [, tbl_name[.*] ...]FROM table_references[WHERE where_definition]DELETE [LOW_PRIORITY] [QUICK] [IGNORE]FROM tbl_na…

ArrayList 源码详解 (JDK8)

文章目录类图声明RandomAccess 接口Cloneable 接口Serializable 接口List 接口AbstractList 抽象类属性DEFAULT_CAPACITYEMPTY_ELEMENTDATADEFAULTCAPACITY_EMPTY_ELEMENTDATAelementDatasize构造方法方法trimToSize()容量计算、扩容size()、isEmpty() 、 contains(Object o) 、…

实例变量、构造代码块、构造方法的执行顺序

实例变量、构造代码块、构造方法的执行顺序单个类的执行顺序父子类的执行顺序本文内容不涉及类加载、静态变量、静态代码块的知识。单个类的执行顺序 测试代码 public class InitTestFather {private P p1 new P("父 - 变量1");{System.out.println("父 - 代…