zoukankan      html  css  js  c++  java
  • spring_cloud之负载均衡(Ribbon)

    一、Ribbon 简介

    • 负载均衡是一个算法,可以用过该算法实现从服务地址列表中获取一个地址进行服务调用。spring cloud 中提供了Ribbon

    Ribbon是Netflix发布的一个负载均衡器,有助于控制http和tcp客户端的行为。为Ribbon配置服务提供者地址列表后,Ribbon可基于负载均衡算法自动帮助服务消费者去请求。Ribbon提供了多种负载均衡算法。如轮询 随机等。也可以自定义负载均衡算法。

    二、Ribbon应用

      实例化RestTemplate是添加注解 @LoadBalanced

      

    /**
    * Ribbon :在执行restTemplate发送服务地址请求时,使用负载均衡拦截器,根据服务名获取服务地址列表。使用Ribbon负载均衡算法
    * 选择已和服务地址。并访问改地址。
    * 步骤:
    * 1、启动多个生产者实例
    * 2、修改RestTemplate 添加负载均衡注解 @LoadBalanced
    * 启动是spring_cloud-commons.jar 中的 META-INF/spring.factories中LoadBalancerAutoConfiguration
    * LoadBalancerInterceptorConfig负载均衡拦截器 默认是轮询算法
    */
    1     @Bean
    2     @LoadBalanced
    3     public RestTemplate restTemplate(){
    4         return  new RestTemplate();
    5     }
    源码跟踪
    显然是有组件根据service名称,获取到了服务实例的ip和端口。因为consumer-demo使用的是RestTemplate,spring的负载均衡自动配置类LoadBalancerAutoConfiguration.
    LoadBalancerInterceptorconfig会自动配置负载均衡拦截器(在spring-cloud-commons-*.jar包中的spring.factories中定义的自动配置类),它就是
    LoadBalancerInterceptor,这个类会在对RestTemplate的请求进行拦截,然后从Eureka根据服务id获取服务列表,随后利用负载均衡算法得到真实的服务地址信息,替换服务id。

  • 相关阅读:
    前端开发-接口管理
    elementui_5(查看报告功能的开发)
    elementui_4(选择用例功能的开发)
    elementui_3(编辑、删除功能的开发)
    elementui_2(添加功能的开发和loading的开发)
    elementui_1(整个table页面的开发)
    vue基础(axios)
    vue基础
    python ddt数据驱动二(json, yaml 驱动)
    ffmpeg文档15-编码器
  • 原文地址:https://www.cnblogs.com/lxn0216/p/14150843.html
Copyright © 2011-2022 走看看