• 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。

  • 相关阅读:
    转: 尽己力,无愧于心 存储过程
    转: 尽己力,无愧于心 FastReport.Net 常用功能总汇
    关于Ansi_Nulls、Quoted_Identifier、Ansi_Padding的用法
    数学建模
    数学建模
    深度学习
    C#复习
    Keras的两种网络模型
    xaml转义
    C# 文件目录操作
  • 原文地址:https://www.cnblogs.com/lxn0216/p/14150843.html
Copyright © 2020-2023  润新知