【4.3】Ribbon饥饿加载

news2024/11/15 6:18:45

【4.3】Ribbon饥饿加载

  • 1 测试
  • 2 饥饿加载
    • 2.1 修改加载策略
  • 3 Ribbon负载均衡总结


1 测试

重启Order服务,回到浏览器,打开浏览器的控制台,发起一次请求:
在这里插入图片描述
可以看到这次请求的耗时达到了390ms
再刷新一次:
在这里插入图片描述
可以看到这次时长只有16ms

为什么第一次请求的耗时如此之长呢?
这是由多方面的原因来决定的。


2 饥饿加载

最重要的原因是:
Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,因为创建的过程中要去做服务拉取,所以请求时间会很长。

饥饿加载则会在项目启动时创建,降低第一次访问的耗时。
通过下面配置开启饥饿加载:

ribbon:
  eager-load:
    enabled: true # 开启饥饿加载
    clients:  # 指定饥饿加载的服务名称
      - userservice

打开OrderApplication的日志:
在这里插入图片描述
可以看到有一次userservice instantiated a loadBalancer–userservice初始化负载均衡器;
初始时服务列表为空,所以会做一次PollingServerListUpdater–拉取服务;
而拉取服务的过程中就会去创建:DynamicServerListLoadBalancer。
所以就会消耗很长的时间。
这就是所谓的懒加载。

第一次加载完了以后就不用加载了,因为这个服务列表就会被缓存在我们的内存中。


2.1 修改加载策略

通过下面配置开启饥饿加载:

ribbon:
  eager-load:
    enabled: true # 开启饥饿加载
    clients:  # 指定饥饿加载的服务名称
      - userservice

饥饿加载通俗一点来说就是:
饿得不行了,看见什么都往上啃,也就是启动时,一上来不管三七二十一就把这些服务加载起来。

找到order-service的application.yml文件:

在这里插入图片描述
接下来重启OrderApplication,观察控制台日志:
在这里插入图片描述
可以看到它在启动的时候就完成了加载,而不是在访问的时候完成。
接下来打开浏览器测试:
在这里插入图片描述
时间减少了一些,但是为什么还是这么久呢?因为服务启动时还要做一些别的事情:
在这里插入图片描述
在服务启动的时候还要完成DispatcherServlet的初始化。这个也是在第一次访问时加载的。


3 Ribbon负载均衡总结

1.Ribbon负载均衡规则:

  • 规则接口是IRule
  • 默认实现是ZoneAvoidanceRule,根据zone选择服务列表,然后轮询

2.负载均衡自定义方式:

  • 代码方式:配置灵活,但修改时需要重新打包发布,是全局配置;
  • 配置方式:直观,方便,无需重新打包发布,但是无法做全局配置。

3.饥饿加载:

  • 默认情况下是懒加载 ,第一次发起请求时才会去加载Ribbon的客户端,访问时长会比较久;
  • 为了解决上述问题,可以开启饥饿加载: 在项目启动那一刻就完成加载,速度会得到一定的提升;
  • 可以指定饥饿加载的微服务名称;

By --Suki 2023/1/5

知识内容来自于黑马程序员视频教学和百度百科。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/141631.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谷粒学院——第二十章、权限管理

一、权限管理需求描述 不同角色的用户登录后台管理系统拥有不同的菜单权限与功能权限,权限管理包含三个功能模块:菜单管理、角色管理和用户管理 1、菜单管理 (1)菜单列表:使用树形结构显示菜单列表 (2&…

故障分析 | MySQL 主从延时值反复跳动

作者:徐文梁 爱可生DBA成员,负责客户项目的需求和维护。目前在数据库新手村打怪升级中。喜欢垂钓,如果你也喜欢垂钓,可以约个晴好天气,咱们一边钓鱼一边聊聊数据库,岂不快哉。 本文来源:原创投稿…

idea常用配置及问题解决

文章目录一、配置1.字体与行高2.快捷键(eclipse)3.Git配置4.添加Github账户5.设置字符集:UTF-86.设置自动编译7.顶部工具栏左侧显示8.配置.gitignore文件9.忽略、不显示文件10.显示包的层级结构(树结构)11.修改 Generate 快捷键12.设置代码提示忽略大小写13.去除pom.xml中依赖的…

【Go】入门Go语言

【Go】入门Go语言 前言 Go这门语言在当下已经越来越火热了,无论是后端开发岗,还是逆向安全岗位,亦或是渗透领域,乃至脚本小子…各个领域的人员都在分Go这一杯羹。 并且在最近越来越多的CTF比赛中,Go逆向、Go pwn&am…

idea配置maven步骤及常见问题

idea 配置maven步骤及常见问题maven 下载maven的配置配置系统环境变量maven本地仓库配置和镜像加速idea 中配置maven的设置常见问题,每次新建项目需要重新手动配置maven的解决maven 下载 首先,进入它的官网:链接: https://maven.apache.org/…

Find My资讯|被盗的AirPods通过苹果Find My找回并抓到盗窃者

美国一位盗窃案的受害者,他在圣安东尼奥莱昂谷的家中发现有人偷走了他的汽车后决定亲手将小偷捉住。打开Find My,他看到其中被拿走的AirPods显然是停在35号州际公路上的一个旅行站。在前往该站并发现一辆SUV里有五个人后,阿林顿打电话给警察寻…

谷粒学院——第二十二章、Jenkins可持续自动部署

一、安装内容 Jenkins(本文主要安装)、Maven、Git、JDK Jenkins与Github配合实现持续集成需要注意以下几点: ①Jenkins要部署到外网,因为内网Github是无法访问到的(走过的坑!),这里…

Usaco Training 刷怪旅 第三层 第六题:Ski Course Design

说实话&#xff0c;一开始看上一题的时候觉得太恶心就先来做这道&#xff0c;所以这题其实比上一题早做出来&#xff08;&#xff09; Farmer John has N hills on his farm (1 < N < 1,000), each with an integer elevation in the range 0 .. 100. In the winter, sin…

MVC MVVM架构

注&#xff1a;个人理解仅供参考1、MVC优点&#xff1a;1、模块独立&#xff0c;解耦缺点&#xff1a;1、厚重的ViewController2、遗失&#xff08;无处安放&#xff09;的网络逻辑3、较差的可测试性图2、MVVM优点1、低耦合&#xff1a;View可以独立于Model变化和修改&#xff…

【HybirdCLR】入门记录-Unity2021 + WebGL

目录前言环境案例学习先PC平台试一下转为WebGL平台动手做一个demo功能基本工作流程搭建环境构建项目补充致谢参考资料前言 之前一直有听说热更新技术&#xff0c;于是找点时间来研究一下热更新技术的使用。热更新的实现方式有很多种&#xff0c;这里笔者记录一下自己学习Hybir…

基于开源体系的云原生微服务治理实践与探索

作者&#xff1a;董艺荃&#xff5c;携程服务框架负责人 携程微服务产品的发展历程 携程微服务产品起步于 2013 年。最初&#xff0c;公司基于开源项目 ServiceStack 进行二次开发&#xff0c;推出 .Net 平台下的微服务框架 CServiceStack。 2014 年&#xff0c;公司推出 Jav…

【PhD Debate —11】矛与盾的对决——神经网络后门攻防

点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入&#xff01;2022年7月9日&#xff0c;AI TIME组织了Ph.D. Debate第十一期&#xff0c;题为“矛与盾的对决——神经网络后门攻防”的研讨活动&#xff0c;特别邀请了宾夕法尼亚州州立大学电子工程系博士生向臻、清华大学博士生…

区块链基础知识(一)

参考书籍《区块链原理、设计与应用》 基本原理 比特币网络工作流程 技术的演化与分类 分布式共识 交易性能 扩展性问题 数据库和存储系统 数据库也是区块链中重要的一环 分布式系统核心问题 单节点结构演变为分布式系统&#xff0c;首先遇到的问题就是一致性的保障。 一致性问…

小程序开发经验分享(5)-全屏展示小程序

小程序的 navigationBar,有APP开发经验的同学应该知道,navigationBar也就是程序最顶部的一条,我们同常的开发页面,也都是在navigationBar下方的主体区用标签开发UI部分 如下面两个图片,左边的翻译君官方小程序中上面就有这样一个navigationBar用于展示自己的title和菜单按…

K8s 认证工程师 CKA 考题分析和题库练习(下)

目录 10、考核知识&#xff1a;检查可用节点数量 题目内容 题目内容中文解释 做题解答 11、考核知识&#xff1a;一个 Pod 封装多个容器 题目内容 题目内容中文解释 官方文档搜索关键字&#xff1a;pod ​编辑做题解答 12、考核知识&#xff1a;持久卷 PersistentV…

Mac M1芯片 搭建RocketMQ

Mac M1芯片 搭建RocketMQ RocketMQ需要启动三个组件 1、nameserver 路由中心,为整个MQ集群提供服务协调与治理 2、broker 提供消息的转发和存储功能 3、console 控制台面板工具 1、下载RocketMQ https://rocketmq.apache.org/dowloading/releases/ 选择 Binary: rocketmq-all-4…

对外投资追踪汇率数据金融开放指数

一、2005-2020年中国全球投资追踪数据 “中国全球投资跟踪”&#xff08;China Global Investment Tracker&#xff09;数据库&#xff0c;由美国企业研究所于1月28日发布。该数据库是唯一一套涵盖中国全球投资和建设的综合数据集&#xff0c;同时使用分别记录和汇总记录两种方…

这几个算法可视化网站,太牛了!

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构等核心知识点&#xff0c;欢迎star~ Github地址&#xff1a;https://github.com/Tyson0314/Java-…

深入 Android 底层服务(service)

前言 我们都知道&#xff0c;字节最近发布了PICO&#xff14;VR眼镜&#xff0c;我买了一个&#xff0c;体验还行。因为我也是做VR眼镜的Android应用层开发的&#xff0c;所以想把自己项目中遇到的一些Android技术分享给读者。近些年随着VR眼镜的兴起&#xff0c;Android的的服…

项目经理跨部门沟通,如何避免踢皮球?

软件项目干系人越多&#xff0c;沟通成本也就越高&#xff0c;非常容易出现相互提皮球的现象。那么如何高效沟通&#xff1f; 1、划分干系人 不同干系人不同策略 软件项目涉及干系人众多&#xff0c;项目不经理不可能对每一个人进行详细沟通&#xff0c;那么我们需要将干系人的…