Ribbon + restTemplate相结合实现负载均衡,具体原理图详见以下截图:

  • LoadBalancerClient 类执行具体的负载均衡,其继承于 LoadBalancerBase。
  • LoadBalancerInterceptor 中注入了 LoadBalancerClient 对象,LoadBalancerClient执行具体的负载均衡,其执行原理为:根据负载规则IRule选择具体的服务,并且IPing会每隔10S向Eureka Client请求同步一次服务列表且检查服务健康状况。
  • restTemplate通过@LoadBalanced的修饰符将LoadBalancerInterceptor 注入到了restTemplate对象中。
  • restTemplate拦截器中注入 LoadBalancerInterceptor 对象,当用户http请求到达时 LoadBalancerInterceptor 对象对齐进行拦截处理,选择具体的请求服务路径,然后restTemplate执行远程服务调用。
  • restTemplate进行rest远程请求的原理详见restTemplate详解,其实质上封装了http请求,默认为HttpUrlConnection,可选Apache的httpClient、Okhttp等。
  • 综上所述,restTemplate的作用即是执行远程服务调用,而LoadBalancerClient作用即选择具体的服务地址来执行负载均衡;在restTemplate进行远程服务调用前因注入了拦截器LoadBalancerInterceptor对http进行了拦截处理,拦截后LoadBalancerClient获取IRule规则选择 IPing维护的本地缓存的服务地址,并将地址返回给restTemplate;restTemplate根据服务地址则执行远程请求调用。
  • ribbon具体实现的代码如下:
    1、RestConfig配置 restTemplate。
  • 2、RibbonService,则通过restTempate调用具体的服务,其中eureka-hi为具体的服务名称,而其存在多个副本

    3、RibbonControl对外曝露一个借口。

    4、如果eureka-hi服务存在两个副本端口号分别为 8771、8772,如果访问 http:/localhost:8764/hi,则会轮询调用eureka-hi的2个副本

Ribbon负载均衡原理相关推荐

  1. Ribbon负载均衡原理,Feign是如何整合Ribbon的?

    文章目录 1. 什么是负载均衡? 2. Ribbon的使用 ①:自定义负载均衡策略 ②:Ribbon的饥饿加载 3. Ribbon的负载均衡原理 ①:收集带有@LoadBalanced注解的RestT ...

  2. Ribbon负载均衡原理,源码解读

    Ribbon负责均衡原理图 源码详解: @LoadBalanced 标记RestTemplate发起的请求,会被loadBalanced拦截和处理 /*** 创建RestTemplate并注入Spri ...

  3. 【详解】Ribbon 负载均衡服务调用原理及默认轮询负载均衡算法源码解析、手写

    Ribbon 负载均衡服务调用 一.什么是 Ribbon 二.LB负载均衡(Load Balancer)是什么 1.Ribbon 本地负载均衡客户端 VS Nginx 服务端负载均衡的区别 2.LB负 ...

  4. SpringCloud LoadBalancerClient 负载均衡原理

    LoadBalancerClient 是 SpringCloud 提供的一种负载均衡客户端,Ribbon 负载均衡组件内部也是集成了 LoadBalancerClient 来实现负载均衡.那么 Loa ...

  5. SpringCloud源码:Ribbon负载均衡分析

    本文主要分析 SpringCloud 中 Ribbon 负载均衡流程和原理. SpringCloud版本为:Edgware.RELEASE. 一.时序图 和以前一样,先把图贴出来,直观一点: 二.源码 ...

  6. 详解Eureka服务注册与发现和Ribbon负载均衡【纯理论实战】

    Eureka服务注册与发现 Eureka简介 在介绍Eureka前,先说一下CAP原则 CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability ...

  7. 最新版Spring Cloud Alibaba微服务架构-Ribbon负载均衡篇

    文章目录 前言 一.Ribbon核心概念 二.服务器端负载均衡和Riboon客户端负载均衡 1.服务器端负载均衡: 2.Riboon客户端负载均衡: 三.Ribbon策略 四.Ribbon配置使用 五 ...

  8. SpringCloud[04]Ribbon负载均衡服务调用

    文章目录 Ribbon负载均衡服务调用 1. 概述 1. Ribbon是什么 2. Ribbon能做什么 2. Ribbon负载均衡演示 1. 架构说明 2. Ribbon的POM依赖 3. Rest ...

  9. Spring Cloud概念+案例(eureka注册+拉取、ribbon负载均衡+重试)、netfix各组件介绍【上】

    Spring Cloud概念+案例(断路器)[下] https://blog.csdn.net/LawssssCat/article/details/104632719 [⭐️⭐️⭐️] Spring ...

最新文章

  1. 微软已经宣布自2009年4月14日起放弃对windows xp的主流支持
  2. Spring batch 2.0例子(lineMapper)
  3. Programming with gtkmm 3
  4. [待解决]自定义头像时使用vue-cropper进行图片裁剪,得到的是base64格式的图片,如何对接file类型的api接口
  5. 使用HazelCast进行休眠缓存:JPA缓存基础知识
  6. 【渝粤题库】陕西师范大学164104 网络财务管理 作业(高起专)
  7. 13篇顶会!25岁成985高校博导,入职半年发ICML,网友:万点暴击
  8. 携反省一起上路的FreeEIM
  9. ARM Cotex-M4数据手册4---System Control
  10. JavaScript之eval() 函数
  11. hortonworks/registry配置详解
  12. Spring学习(六)
  13. ios字典存bool_iOS 开发之字典写入文件
  14. 蓝桥杯真题:乘积尾零
  15. cruzer php sandisk 闪迪u盘量产工具_sandisk量产工具(闪迪U盘量产工具)
  16. JS获取验证码页面显示处理
  17. 数模混合计算机应用,数模混合集成电路的发展现状和前景
  18. 《LeetCode之每日一题》:148.回旋镖的数量
  19. 127.0.0.1 zxt.php_shmilyzxt/
  20. 机器学习之线性回归原理详解、公式推导(手推)、简单实例

热门文章

  1. Java配置及软件下载
  2. 从CMO到CGO,看大数据营销的演变史!
  3. html 页面打印 分页符,html - 浮动的HTML / CSS打印分页符不起作用(例如:引导程序) - 堆栈内存溢出...
  4. 音量调整工具有哪些?我推荐下面几款音量调整软件给你
  5. 深度学习(23):SmoothL1Loss损失函数
  6. 计算机显卡类型,电脑显卡有几类别型?
  7. 【1017】需求分析的“Y理论”
  8. 痛风的“罪魁祸首”是痛风石?
  9. java neo4j_Neo4j基本入门
  10. Qt中设置删除提示框