前言

想说的话

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

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

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

说明

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

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

总结

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

Ribbon整体流程图:

Ribbon初始化流程图:

常用配置

常用配置

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

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

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

  2. 配置接口地址列表
    上面我们讲了可以禁用 Eureka,禁用之后就需要手动配置调用的服务地址了,配置如下:
    xml #禁用 Eureka 后手动配置服务地址 ribbon-config-demo.ribbon.listOfServers=localhost:8081,localhost:8083

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

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

  4. 超时时间
    Ribbon 中有两种和时间相关的设置,分别是请求连接的超时时间和请求处理的超时时间,设置规则如下:
    xml # 请求连接的超时时间 ribbon.ConnectTimeout=2000 # 请求处理的超时时间 ribbon.ReadTimeout=5000

    也可以为每个Ribbon客户端设置不同的超时时间, 通过服务名称进行指定:
    xml ribbon-config-demo.ribbon.ConnectTimeout=2000 ribbon-config-demo.ribbon.ReadTimeout=5000

  5. 并发参数
    xml #最大连接数 ribbon.MaxTotalConnections=500 #每个host最大连接数 ribbon.MaxConnectionsPerHost=500

  6. 重试和负载均衡相关配置
    ```xml
    # 对当前实例的重试次数
    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 和公众号:壹枝花算不算浪漫,如若转载请标明来源!

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

最新文章

  1. NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装
  2. C++代码重构——从C global到C++ template
  3. Google Developing for Android 三 - Performance最佳实践
  4. java 获取项目绝对路径
  5. WP8.1 实现Continuation程序(打开文件,保存文件等)
  6. golang 移动应用例子 example/basic 源码框架分析
  7. oracle的一知半解
  8. 学习在创建好的工程里面添加CoreData
  9. 02js高级Function
  10. Linux C网络编程学习笔记
  11. 【转】Shell编程
  12. Android自己定义控件系列一:Android怎样实现老版优酷client三级环形菜单
  13. vc++项目 : error PRJ0002 : 错误的结果 1 (从“C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\rc.exe”返回)。
  14. inet_ntoa将客户端的IP和port写入M…
  15. mha 复制检查报错“There is no alive server. We can't do failover”
  16. IPhoneX网页布局
  17. 用idhttp打开网页或下载文件时如何显示进度
  18. pycharm clion phpstorn全家桶激活码(可以用到2019年4月)
  19. SDOI2017 R1做题笔记
  20. a*寻路分析

热门文章

  1. 2012.2.1datagridview用法小结
  2. URL的转义和解析
  3. 建立一个Web项目及一些错误解决办法
  4. springboot2多数据源完整示例
  5. Java开发中RMI和webservice区别和应用领域
  6. Laravel 5.* 执行seeder命令出现错误的解决方法
  7. web.xml和@WebServlet
  8. Redux 认识之后进阶
  9. tensorflow在文本处理中的使用——词袋
  10. 【58.75%】【BZOJ 1087】[SCOI2005]互不侵犯King