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。

  • 相关阅读:
    LeetCode 121. Best Time to Buy and Sell Stock
    LeetCode 221. Maximal Square
    LeetCode 152. Maximum Product Subarray
    LeetCode 53. Maximum Subarray
    LeetCode 91. Decode Ways
    LeetCode 64. Minimum Path Sum
    LeetCode 264. Ugly Number II
    LeetCode 263. Ugly Number
    LeetCode 50. Pow(x, n)
    LeetCode 279. Perfect Squares
  • 原文地址:https://www.cnblogs.com/lxn0216/p/14150843.html
Copyright © 2011-2022 走看看