springCloud笔记(3)-Ribbon负载均衡

spring Cloud Ribbon

1.定义:

  -  Ribbon时Netflix发布的负载均衡器,主要功能是提供客户端的软件负载均衡算法,它有助于控制HTTP和TCP客户端的行为。为Ribbon配置服务提供者地址列表后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。ribbon的客户端组件提供了一系列完整的配置项:连接超时、重试等,简单的说就是在配置文件中列出LoadBalancer(简称LB,负载均衡)后面额所有机器,ribbon会自动基于某种规则/算法去连接这些机器。
  • Ribbon默认为我们提供了很多的负载均衡算法,例如轮询、随机等。我们也可以自定负载均衡算法。

    现有的负载均衡算法主要分为静态和动态两类。
    静态负载:均衡算法以固定的概率分配任务,不考虑服务器的状态信息,如轮转算法、加权轮转算法等;
    动态负载:均衡算法以服务器的实时负载状态信息来决定任务的分配,如最小连接法、加权最小连接法等。

    分类
    1、轮询法
    轮询法,就是将用户的请求轮流分配给服务器,就像是挨个数数,轮流分配。这种算法比较简单,他具有绝对均衡的优点,但是也正是因为绝对均衡它必须付出很大的代价,例如它无法保证分配任务的合理性,无法根据服务器承受能力来分配任务。
    
    2、随机法
    随机法,是随机选择一台服务器来分配任务。它保证了请求的分散性达到了均衡的目的。同时它是没有状态的不需要维持上次的选择状态和均衡因子。但是随着任务量的增大,它的效果趋向轮询后也会具有轮询算法的部分缺点。
    
    3、最小连接法
    最小连接法,将任务分配给此时具有最小连接数的节点,因此它是动态负载均衡算法。一个节点收到一个任务后连接数就会加1,当节点故障时就将节点权值设置为0,不再给节点分配任务。
    最小连接法适用于各个节点处理的性能相似时。任务分发单元会将任务平滑分配给服务器。但当服务器性能差距较大时,就无法达到预期的效果。因为此时连接数并不能准确表明处理能力,连接数小而自身性能很差的服务器可能不及连接数大而自身性能极好的服务器。所以在这个时候就会导致任务无法准确的分配到剩余处理能力强的机器上。
    

2.作用:

  • 负载均衡:就是将用户的请求平摊到多个服务上,从而使系统达到高可用

    • 常见负载均衡:Nginx,LVS, Tomcat

3.使用:

  • 导入依赖:在消费者pom.xml文件中新增两个依赖

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
                <version>1.4.7.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-ribbon</artifactId>
                <version>1.4.7.RELEASE</version>
            </dependency>
    
  • 配置文件:同服务提供者一样,同时去连接多个Eureka(通过defaultZone);

  • 在驱动类中加注解:@EnableEurekaClient

  • 在config文件中的配置类restTemplate上加注解: @LoadBalanced

  • 修改controller中的访问地址常量,改为http://服务名称

    ​ - 以上直接实现类不需要服务ip,直接通过服务名去访问服务。

@LoadBalanced

​ 对应源码:IRule:里面包含了很多算法,默认轮询(循环访问)

​ 自定义:继承AbstractLoadBalancerRule

在主启动类上加注解:

​ @RibbonClient(name=“服务提供者名称”,configuration= 自定义的IRule类.class)

自定义的IRule类不能放在主启动类同级目录中

ule类不能放在主启动类同级目录中**

在这里插入图片描述

将IRule中的实现类自己进行重写就可以实现属于自己的负载均衡算法

很高兴能够为你提供关于Spring Cloud的笔记。Spring Cloud是一套基于Spring Boot的微服务框架,它提供了一系列开箱即用的工具和组件,帮助开发者快速构建和部署分布式系统。下面是一些关键的笔记要点: 1. 服务注册与发现:Spring Cloud提供了Eureka、Consul和Zookeeper等注册中心,用于服务的注册与发现,实现了服务之间的自动发现和负载均衡。 2. 服务调用:通过Spring Cloud的RestTemplate或Feign客户端,可以轻松实现服务之间的远程调用。Feign还支持声明式的服务调用,简化了代码的编写。 3. 负载均衡:Spring Cloud提供了Ribbon和LoadBalancer等组件,用于实现负载均衡。通过配置负载均衡策略,可以将请求分发到不同的服务实例上。 4. 服务容错:通过Hystrix或Sentinel等组件,可以实现服务的容错和熔断。当某个服务不可用时,可以快速失败或者返回默认值,保证整个系统的稳定性。 5. 配置中心:Spring Cloud Config提供了集中式的配置管理,可以将配置文件集中存储在Git、SVN等版本控制系统中,并实现配置文件的动态刷新。 6. 链路追踪:通过Spring Cloud Sleuth或Zipkin等工具,可以实现分布式系统的链路追踪和监控。可以了解每个请求经过的各个服务节点,便于排查和解决问题。 7. 消息驱动:Spring Cloud Stream和Spring Cloud Bus等组件,提供了消息驱动的方式来实现服务之间的解耦和异步通信。 这只是对Spring Cloud的一些简单介绍,希望能够帮助到你。如果有具体的问题或者需要进一步的资料,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值