微服务-Ribbon负载均衡

这篇具有很好参考价值的文章主要介绍了微服务-Ribbon负载均衡。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

负载均衡原理

流程

微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡

原理

@LoadBalanced
标记RestTemplate发起的http请求要被Ribbon进行拦截和处理

源码分析
  1. ctrl+shift+N搜索LoadBalancerInterceptor,进入。发现实现了ClientHttpRequestInterceptor(客户端Http请求拦截器)的intercept方法
    微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡
    拦截方法
    微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡
  2. 打一个断点,启动order-application,浏览器发送请求http://localhost:8080/order/104
  3. 在该方法中对http请求进行拦截,获取到了服务名serviceName = “userservice”,然后进入到了RibbonLoadBalancerClient的excute方法中。
    微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡
  4. 进入到excute方法,发现调用了该类的一个重载方法excute
    微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡
  5. step into到这个excute方法
    微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡发现serviceId = “userservice”,通过serviceId获取到ILoadBalancer,点开ILoadBalancer,发现里面存储了两个userservice,即成功拉取了2个userservice。获取的loadBalancer对象的名称为DynamicServerListLoadBalancer,动态服务列表负载均衡器。
    微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡
  6. 进入到getServer方法,下一步从loadBalancer的2个userservice中选择1个
    微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡再进入到chooseServer方法里,最终调用了父类的chooseServer方法
    微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡
    进入,最终调用了rule.choose方法
    微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡查看这个rule,发现是一个IRule类型,这是一个接口,ctrl+h查看实现该接口的类有哪些
    微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡发现有好几种规则,RoundRobin,Random等,正是通过这几种规则从多个userservice中选择出一个合适的userservice。
负载均衡流程

微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡

负载均衡策略

微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡
通过定义IRule的实现可以修改负载均衡的策略

  1. 方式一,直接在配置类中定义。针对所有微服务而言。
@Bean
public IRule randomRule(){    
	return new RandomRule();
}
  1. 方式二,在application.yml中定义。针对某个微服务。
userservice:  
  ribbon:    
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则 

饥饿加载

Ribbon默认采用的是懒加载,即第一次访问Ribbon服务的时候才会加载LoadBalanceClient,请求时间会很长;
而饥饿加载在项目启动时加载

ribbon:  
  eager-load:    
    enabled: true # 开启饥饿加载     
    clients: userservice # 指定对userservice这个服务饥饿加载
  1. 懒加载,第一次访问是409ms,后续10ms
    微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡
  2. 饥饿加载,第一次访问是236ms,后续10ms
    微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡
    微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡

总结

微服务-Ribbon负载均衡,微服务,微服务,ribbon,负载均衡文章来源地址https://www.toymoban.com/news/detail-719490.html

到了这里,关于微服务-Ribbon负载均衡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第五章 Ribbon负载均衡服务调用

    1. Ribbon概述 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心

    2024年02月04日
    浏览(40)
  • Cloud微服务:Ribbon负载均衡

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 服务消费者(order-service)根据服务名称发起请求,请求地址(url):http://userservice/user/1。 请求被 负载均衡拦

    2024年04月26日
    浏览(36)
  • springcloud Ribbon负载均衡服务调用

    地址:https://github.com/13thm/study_springcloud/tree/main/days6_Ribbon Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时

    2024年01月20日
    浏览(48)
  • Ribbon负载均衡+Nacos服务搭建

    首先通过RibbonLoadBalanceerClient获取服务名,并传给DynamicServerListLoadBalancer——通过EureKa-server获取服务名对应服务列表(也就是被注册到EureKa中的服务,可能包括不同端口的),然后我们会根据IRule中的服务负载均衡-选择某个服务,然后修改url发送请求; Ribbon的负载均衡是一个叫

    2024年02月10日
    浏览(35)
  • 微服务中间件--Ribbon负载均衡

    1.发起请求http://userservice/user/1,Ribbon拦截该请求 2.Ribbon通过EurekaServer拉取userservice 3.EurekaServer返回服务列表给Ribbon做负载均衡 4.Ribbon轮询到端口 Ribbon的负载均衡规则是一个叫IRule的接口来定义的,每一个子接口都是一种规则: 通过定义IRule实现可以修改负载均衡规则,有两种

    2024年02月12日
    浏览(32)
  • 微服务Ribbon-负载均衡策略和饥饿加载

    目录 一、负载均衡策略 1.1 负载均衡策略介绍 1.2 自定义负载均衡策略 二、饥饿加载 (笔记整理自bilibili黑马程序员课程) 1.1 负载均衡策略介绍 负载均衡的规则都定义在IRule接口中,而IRule有很多不同的实现类:  不同规则的含义如下: 内置负载均衡规则类 规则描述 Round

    2024年02月13日
    浏览(42)
  • 【微服务 SpringCloud】实用篇 · Ribbon负载均衡

    微服务(4) 在前面,我们添加了@LoadBalanced注解,即可实现负载均衡功能,这是什么原理、什么策略呢? SpringCloud底层其实是利用了一个名为 Ribbon 的组件 ,来实现负载均衡功能的。 那么我们发出的请求明明是http://userservice/user/1,怎么变成了http://localhost:8081的呢? 为什么我

    2024年02月08日
    浏览(49)
  • Spring Cloud之负载均衡与服务调用(Ribbon)

    目录 Ribbon 简介 负载均衡 简介 负载均衡方式 服务端负载均衡 工作原理 特点 客户端负载均衡 工作原理 特点 对比 实现 负载均衡策略 切换负载均衡策略 定制负载均衡策略 超时与重试 单个服务配置 全局配置 服务调用 示例         Ribbon 是 Netflix 公司发布的开源组件,其

    2024年02月08日
    浏览(51)
  • 【Java】微服务——Ribbon负载均衡(跟进源码分析原理)

    添加@LoadBalanced注解,即可实现负载均衡功能,这是什么原理 SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。 为什么我们只输入了service名称就可以访问了呢?之前还要获取ip和端口。 显然有人帮我们根据service名称,获取到了服务实例的ip和端口。它

    2024年02月07日
    浏览(38)
  • Ribbon:Spring Cloud负载均衡与服务调用组件

    负载均衡? Ribbon实现服务调用? Ribbon实现负载均衡? 切换负载均衡策略? 定制负载均衡策略? 负载均衡 负载均衡(Load Balance),将用户的请求平分到多个服务器上运行,以扩展服务器带宽、增强数据处理能力、增加吞吐量、提高网络的可用性和灵活性的目的。 服务端负载

    2024年02月03日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包