Ribbon

1.服务调用

eureka内部继承了ribbon

  • 在创建RestTemplate的时候,声明@LoadBalanced
  • 使用restTemplate调用远程微服务,不需要拼接微服务的URL,以待请求的服务名替换ip地址

2.负载均衡

#修改ribbon的负载均衡策略 服务名  ribbon  NFLoadBalancerRuleClassName  策略
SERVICE-PRODUCT:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

3.重试机制

引入spring的重试组件

 <dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
        </dependency>

对ribbon进行重试配置

SERVICE-PRODUCT:
  ribbon:
   # NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
     ConnectTimeout: 250 #Ribbon的连接超时时间
     ReadTimeout: 1000   #Ribbon的数据读取超时时间
     OkToRetryOnAllOperations: true #是否对所有操作都进行重试
     MaxAutoRetriesNextServer: 1 #切换实例的重复次数
     MaxAutoRetries: 1   #对当前实例的重试次数

4 ribbon源码分析

image

posted @ 2021-06-26 19:42  风飘落叶  阅读(100)  评论(0编辑  收藏  举报