Ribbon详解

简述

  Ribbon是 Netflflixfa 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为。在 SpringCloud 中,Eureka一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Eureka中读取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。在SpringCloud中可以将注册中心和Ribbon配合使用,Ribbon自动的从注册中心中获取服务提供者的列表信息,并基于内置的负载均衡算法,请求服务。

主要功能

服务调用

  基于Ribbon实现服务调用, 是通过拉取到的所有服务列表组成(服务名-请求路径的)映射关系。借助

RestTemplate 最终进行调用。
  我们只需在RestTemplate配置上方加入LoadBalanced注解即可使用Ribbon的服务调用功能
  此时的restTemplate的url的ip地址只需写调用的服务名称即可,Ribbon会自动帮我们进行映射

负载均衡

  当有多个服务提供者时,Ribbon可以根据负载均衡的算法自动的选择需要调用的服务地址

  Ribbon是一个典型的客户端负载均衡器,Ribbon会获取服务的所有地址,根据内部的负载均衡算法获取本次请求的有效地址。

  当我们为restTemplate打上LoadBalanced注解时,Ribbon默认启动了轮询策略的负载均衡。

负载均衡策略

  Ribbon默认的负载均衡策略是轮询策略,当然也可以自定义Ribbon的负载均衡策略。

  yml配置格式为:服务名 - ribbon - NFLoadBalancerRuleClassName :策略

##需要调用的微服务名称
shop-service-product:
 ribbon:
   NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

Ribbon请求重试配置

  Ribbon的服务请求提供了请求重试的机制,当Ribbon请求一个服务失败时可以设定请求重试的相关机制,让客户端得到更快的响应

service-product:
  ribbon:
    #NFLoadBalancerRuleClassName: 修改Ribbon的负载均衡策略
    ConnectTimeout: 250 # Ribbon的连接超时时间
    ReadTimeout: 1000 # Ribbon的数据读取超时时间
    OkToRetryOnAllOperations: true # 是否对所有操作都进行重试
    MaxAutoRetriesNextServer: 1 # 切换实例的重试次数
    MaxAutoRetries: 1 # 对当前实例的重试次数

  

  

 

一点一点积累,一点一点蜕变!
原文地址:https://www.cnblogs.com/qq2210446939/p/15075535.html