SpringCloud之负载均衡

负载均衡的概念?

将客户端请求按照一定的算法分配到集群中的服务器上,保证服务器的负载在合理的水平。

负载均衡的实现?

1.服务器实现

通过特定的负载均衡服务器实现流量分配(Nginx软件、F5硬件),性能更强,成本更高

2.客户端实现

在客户端中发送请求前,通过一定算法选择服务器进行连接,更简单,成本低。

Ribbon的使用

 Ribbon是SpringCloud Netflix网飞公司提供的客户端负载均衡组件,其中,SpringBoot2.7.2下使用的是Ribbon,2.7.2版本之后使用的是LoadBalancer。Ribbon主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。

简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们很容易使用Ribbon实现自定义的负载均衡算法。

1.导入依赖

在导入Eureka-Client依赖时,自动导入Ribbon依赖。

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

2.配置RestTemplate,使用LoadBalanced注解后生效

@Configuration
public class ApplicationContextConfig {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();


    }
}

3.配置负载均衡策略

内置均衡负载类规则描述 
RoundRobinRule简单轮询服务列表来选择服务器
AvailabilityFilteringRule对以下两个服务器进行忽略(1)默认情况下,这台服务器就会被设置成”短路“状态,短路状态持续30秒,如果再次失败,短路的持续时间就会几何级增长。注意:可以通过修改配置loadbalancer..connectionFailureCountThreshold来修改连接失败多次后被设置为短路状态。默认是3次。(2)并发次数过高的服务器,如果一个服务器的并发连接数过高,配置可AvailabilityFiteringRule规则的客户端也会被忽略。并发连接数是上线,可以由客户端..ActiveConnetionsLimit属性进行配置。
WeightedResponeTimeRule为每个服务器赋予一个权重值,服务器响应时间越长,这个服务器的权重越小,这个规则会随机选择服务器,这个权重值会影响服务器的选择。
ZoneAvoidanceRule以区域可用的服务器为基础进行服务器的选择,使用Zone对服务器进行分类,这个Zone可以理解为一个机房,一个机架等。它是Ribbon默认的负载均衡规则,继承于RoundRobinRule
BestAvailableRule忽略哪些短路的服务器,并选择并发较低的服务器
RandomRule随机选择一个可用的服务器
RetryRule重选机制的选择逻辑

全局配置

ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.策略名称

局部配置

服务注册名.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.策略名称

java配置

@Configuration
public class RestTemplateConfig {
    ...

    @Bean
    public IRule rule(){
        return new RandomRule();
    }
    
}

负载均衡策略

1.轮询均衡

原理:如果给服务器从0到n编号,轮询均衡策略会从0开始依次选择一个服务器作为处理本次请求的服务器。 

场景:适合所有的相同的软硬件配置,且请求效率相对平衡。

2.权重轮询均衡

原理:按照服务器不同的处理能李,给服务器分配不同的权重,然后请求会按照不同的权重分配给不同的服务器

场景:服务器性能不同,充分利用高性能的服务器,同时能照顾到低性能的服务器。

3.随机均衡

原理:将请求随机分配给不同的服务器。

场景:适合客户端请求频率比较随机的场景。

4.响应速度均衡

原理:负载均衡设备对每一个服务器发送一个探测请求,看看哪台服务器响应速度更快

场景:适合服务器的响应性能不断变化的场景。

注意:响应速度是针对负载均衡设备和服务器之间的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值