异构服务器的负载均衡及过载保护

后端的service有可能部署在硬件条件不同的服务器上

1)如果对标最低配的服务器“均匀”分摊负载,高配的服务器的利用率不足;

2)如果对标最高配的服务器“均匀”分摊负载,低配的服务器可能会扛不住;

service层的负载均衡,一般是通过service连接池来实现的,调用方连接池会建立与下游服务多个连接,每次请求“随机”获取连接,来保证service访问的均衡性。

1.通过“静态权重”标识service的处理能力

为每个下游service设置一个“权重”,代表service的处理能力,来调整访问到每个service的概率

优点是:简单,能够快速的实现异构服务器的负载均衡。

缺点也很明显:这个权重是固定的,无法自适应动态调整

2.通过“动态权重”标识service的处理能力

1)用一个动态权重来标识每个service的处理能力,默认初始处理能力相同,即分配给每个service的概率相等;

2)每当service成功处理一个请求,认为service处理能力足够,权重动态+1

3)每当service超时处理一个请求,认为service处理能力可能要跟不上了,权重动态-10(权重下降会更快)

4)为了方便权重的处理,可以把权重的范围限定为[0, 100],把权重的初始值设为60分

3.过载保护

service的过载保护,是指即使系统负载超过一个service的处理能力,service让能保证对外提供有损的稳定服务。

最简单的方式,服务端设定一个负载阈值,超过这个阈值的请求压过来,全部抛弃

4.借助“动态权重”来实施过载保护

如果有连续的请求都超时或某一个service的动态权重降为0,于是设定策略:接下来的若干时间内,例如1秒(或者接下来的若干个请求),请求不再分配给这个service;

 

posted @ 2016-09-22 01:06  慕尘  阅读(326)  评论(0编辑  收藏  举报