zoukankan      html  css  js  c++  java
  • SpringCloud---(5)Ribbon负载均衡

    上一篇:SpringCloud—(4)Eureka与Zookeeper的区别

      Ribbon是基于Netfix Ribbon实现的一套客户端负载平衡器。

    负载均衡

      说到负载均衡,可能会想到我们的Nginx负载均衡,其常见的负载均衡策略:

    1.轮询(默认)
    2.指定权重
    3.ip_hash 根据ip分配
    4.最少连接
    

    负载均衡的作用就是将用户的访问请求有规律的分发到各个不同的服务上,避免出现某个服务器的压力过大,而某个服务器压力很小的情况。

      之前的负载均衡我们一般会使用Nginx来实现,Nginx与Ribbon之间还是有一定的区别:
    在这里插入图片描述
    上图是使用Nginx实现了一个负载均衡,它是在服务方和消费方之间使用了独立的负载均衡设施完成。而Ribbon实现负载均衡是将负载均衡逻辑集成到了消费方,由消费方从服务注册中心Eureka中获取到哪些地址可以使用,然后再从中选择一个合适的服务器。

    项目中集成Ribbon

      因为Ribbon是从消费者(也就是客户端)实现负载均衡逻辑(Ribbon默认的负载均衡策略也是轮询),所以在使用Ribbon、配置Ribbon的时候我们应该是到Eureka的客户端项目上进行操作。

    1.引入Ribbon依赖
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-ribbon</artifactId>
          <version>1.4.7.RELEASE</version>
        </dependency>
    

      事实上,SpringCloud项目中的eureka组件的依赖包含了ribbon。所以项目中只要引入了eureka依赖则ribbon组件不再需要单独引入依赖了。

    2.添加注解@LoadBalanced

      因为SpringCloud使用的是基于HttpRest通信方式,所以会使用到RestTemplate,引入Ribbon的时候,直接在配置RestTemplate的类上添加注解@LoadBalanced就可以了

    @Configuration
    public class RestConfig {
    
    	@Bean
    	@LoadBalanced
    	public RestTemplate getRestTemplate() {
    		return new RestTemplate();
    	}
    }
    

      添加了@LoadBalanced注解之后,服务消费者就会按照Ribbon默认的轮询负载均衡策略选择合适的服务进行访问,负载均衡策略也可以自定义:

    自定义负载均衡策略

      负载均衡策略有一个核心接口IRule,通过该接口可以实现自定义负载均衡策略
    在这里插入图片描述
    注意:如果需要自定义一个负载均衡策略MyRule,则该类不能在启动类Application所在统计目录下,否则会被@ComponentScan扫描到
    在这里插入图片描述
      在Applicaiton外层创建自定义的负载均衡策略MyRule之后,需要在启动类添加注解@RibbonClient(name = "", configuration = MyRule.class)

    name指定针对哪个服务 进行负载均衡,而configuration指定负载均衡的算法具体实现类。
    在这里插入图片描述
    自定义负载均衡策略可以仿照已有的策略进行修改,都需要继承AbstractLoadBalancerRule,然后在MyRule中就可以编写自己的负载均衡逻辑了。
    在这里插入图片描述

    下一篇:SpringCloud—(6)Feign调用服务

  • 相关阅读:
    tkinter 表格
    Python编程学习笔记 随时更新
    WIN32窗口程序
    OutputDebugString方便格式化WIN32封装
    免费的剪贴板工具Ditto安装与使用
    Notepad++安装json插件
    华为机试训练题
    Python+Flask+MysqL的web建设技术过程
    python Django 用法总结(转)
    python Robot Framework用法总结(转)
  • 原文地址:https://www.cnblogs.com/wgty/p/12810453.html
Copyright © 2011-2022 走看看