为什么要做负载均衡:
随着业务量的增加,单台机器已经无法支撑起更大的流量!所以要有一些方案,对流量进行分离。
负载均衡的方式:
随机数、加权、Hash(ip-hash)、轮询(round-robin)、最快响应、、最小连接数(least-connected)、加权随机、加权轮询等众多的方式。顾文思议应该都比较容易理解,如果要说所有负载算法的具体时间要写好多东西,具体就不在阐述了,可自行研究!
采用的负载均衡的方案:
最快响应法!如果放到nginx的模块上看,有个第三方模块upstream-fair:按照响应时间的长短,动态调整请求位置!
大体思路:建立起连接后,更加超时时间值,判断每一次的请求响应时间,是否超过该阈值。如果超过阈值,则表明当前请求连接的服务质量下降,则对当前权重进行降低;否则升高。
注意:最开响应的负载策略,是根据初始化权重的百分比,判断需要对权重降低的级别的;同样升权也是如此。因为随着权重的降低,
步骤:
一、初始化权重,根据scf配置或默认初始化各个节点权重1000;
二、如请求超时:则执行降权方法,并修正临界值;
三、正常访问:执行升权方法,并修正临界值;
当前权重值 >= 初始权重值的0.9时,权重以9的频率降低;
当前权重值 >= 初始权重值的0.8是,权重以8的频率降低;
当前权重值 >= 初始权重值的0.7时,权重以7的频率降低;
当前权重值 >= 初始权重值的0.6是,权重以6的频率降低;
当前权重值 >= 初始权重值的0.5时,权重以5的频率降低;
当前权重值 >= 初始权重值的0.4是,权重以4的频率降低;
当前权重值 >= 初始权重值的0.3时,权重以3的频率降低;
当前权重值 >= 初始权重值的0.2是,权重以2的频率降低;
否则,权重以1的频率降低。
如果当前权重值,也就是有效权重
effective_weight
小于0时,重置为0,等待升权操作。
升权方法:
即降权方法反向操作即可。