简述
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 # 对当前实例的重试次数