• 【一起学源码-微服务】Ribbon源码五:Ribbon源码解读汇总篇~


    前言

    想说的话

    【一起学源码-微服务-Ribbon】专栏到这里就已经全部结束了,共更新四篇文章。

    Ribbon比较小巧,这里是直接 读的spring cloud 内嵌封装的版本,里面的各种configuration确实有点绕,不过看看第三讲Ribbon初始化的过程总结图就会清晰很多。

    紧接着会继续整理学习Feign源码相关的,敬请期待。

    说明

    原创不易,如若转载 请标明来源!

    博客地址:一枝花算不算浪漫
    微信公众号:壹枝花算不算浪漫

    总结

    总结分为两个部分,一个是Riboon执行整体流程图,还一个是Ribbon初始化流程图。

    Ribbon整体流程图:

    08_Ribbon整体流程图.jpg

    Ribbon初始化流程图:

    02_Ribbon初始化流程图.jpg

    常用配置

    常用配置

    1. 禁用 Eureka
      当我们在 RestTemplate 上添加 @LoadBalanced 注解后,就可以用服务名称来调用接口了,当有多个服务的时候,还能做负载均衡。

      这是因为 Eureka 中的服务信息已经被拉取到了客户端本地,如果我们不想和 Eureka 集成,可以通过下面的配置方法将其禁用。

      #禁用 Eureka
      ribbon.eureka.enabled=false
      

      当我们禁用了 Eureka 之后,就不能使用服务名称去调用接口了,必须指定服务地址。

    2. 配置接口地址列表
      上面我们讲了可以禁用 Eureka,禁用之后就需要手动配置调用的服务地址了,配置如下:

      #禁用 Eureka 后手动配置服务地址
      ribbon-config-demo.ribbon.listOfServers=localhost:8081,localhost:8083
      

      这个配置是针对具体服务的,前缀就是服务名称,配置完之后就可以和之前一样使用服务名称来调用接口了。

    3. 配置负载均衡策略
      Ribbon 默认的策略是轮询,从我们前面讲解的例子输出的结果就可以看出来,Ribbon 中提供了很多的策略,这个在后面会进行讲解。我们通过配置可以指定服务使用哪种策略来进行负载操作。

    4. 超时时间
      Ribbon 中有两种和时间相关的设置,分别是请求连接的超时时间和请求处理的超时时间,设置规则如下:

      # 请求连接的超时时间
      ribbon.ConnectTimeout=2000
      # 请求处理的超时时间
      ribbon.ReadTimeout=5000
      

      也可以为每个Ribbon客户端设置不同的超时时间, 通过服务名称进行指定:

      ribbon-config-demo.ribbon.ConnectTimeout=2000
      ribbon-config-demo.ribbon.ReadTimeout=5000
      
    5. 并发参数

      #最大连接数
      ribbon.MaxTotalConnections=500
      #每个host最大连接数
      ribbon.MaxConnectionsPerHost=500
      
    6. 重试和负载均衡相关配置

      # 对当前实例的重试次数
      ribbon.maxAutoRetries=1
      # 切换实例的重试次数
      ribbon.maxAutoRetriesNextServer=3
      # 对所有操作请求都进行重试
      ribbon.okToRetryOnAllOperations=true
      # 对Http响应码进行重试
      ribbon.retryableStatusCodes=500,404,502
      
      # 负载Rule选择
      ribbon-config-demo.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.BestAvailableRule
      

    【一起学源码-微服务Ribbon】文章链接

    1. 【一起学源码-微服务】Ribbon 源码一:Ribbon概念理解及Demo调试
    2. 【一起学源码-微服务】Ribbon 源码二:通过Debug找出Ribbon初始化流程及ILoadBalancer原理分析
    3. 【一起学源码-微服务】Ribbon 源码三:Ribbon与Eureka整合原理分析
    4. 【一起学源码-微服务】Ribbon 源码四:进一步探究Ribbon的IRule和IPing

    申明

    本文章首发自本人博客:https://www.cnblogs.com/wang-meng 和公众号:壹枝花算不算浪漫,如若转载请标明来源!

    感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫

    22.jpg

  • 相关阅读:
    jquery左右滑动效果的实现
    解决IE6不支持position:fixed的bug
    简单的漂浮层
    CSS Image Sprite--网页图片应用处理方式
    浮动层-JS兼容IE6
    js搜索框输入提示(高效-ys8)
    fiddler抓包(移动端APP端)
    python系统介绍
    “多走的弯路”
    接口测试实例(jmeter)
  • 原文地址:https://www.cnblogs.com/wang-meng/p/12171233.html
Copyright © 2020-2023  润新知