Feign第一次调用为什么会很慢 天天新视野
前言
首先要了解Feign是如何进行远程调用的,这里面包括,注册中心、负载均衡、FeignClient之间的关系,微服务通过不论是eureka、nacos也好注册到服务端,Feign是靠Ribbon做负载的,而Ribbon需要拿到注册中心的服务列表,将服务进行负载缓存到本地,然后FeignClient客户端在进行调用,大概就是这么一个过程。
Ribbon是如何进行负载的
首先我们要清楚Ribbon是如何进行负载的,也就是如何获取nacos、eureka的服务列表,这个很关键。
【资料图】
RibbonClientConfiguration
RibbonClientConfiguration类中通过LoadBalancer,我们知道ribbon是靠LoadBalancer做负载的 无非就是ILoadBalancer接口的方法,依次是添加新的服务、在负载均衡里选择一个服务、markServerDown服务下线、获取服务列表、获取存活的服务器、获取所有服务器(包括健康和不健康的)
ZoneAwareLoadBalancer
loadBalancer默认的是ZoneAwareLoadBalancer负载均衡器,通过继承父类DynamicServerListLoadBalancer的restOfInit方法,里面比较重要的两个方法,enableAndInitLearnNewServersFeature和updateListOfServers方法
enableAndInitLearnNewServersFeature方法里面
less复制代码LOGGER.info(\"Using serverListUpdater {}\", serverListUpdater.getClass().getSimpleName());serverListUpdater.start(updateAction);
让我们看ServerListUpdater.start方法的实现,通过自定义线程去拿,这就是获取服务列表;
Ribbon负载均衡策略
服务列表获取说了,当然负载均衡的策略这块也有必要讲一下,主要有七种;
RoundRobinRule(轮询策略,按照服务顺序依次循环调用) WeightedResponseTimeRule(权重比策略,优先选择权重比高的服务,也就是服务响应时间比较短的,响应时间越长权重比越低) RandomRule(随机策略,服务提供者列表随机选择一个服务) BestAvailableRule(最小连接数策略,获取服务列表中连接数最小的服务实例) RetryRule(重试策略,重试获取已经失效的服务,指定时间没有获取到返回NULL) AvailabilityFilteringRule(可用性敏感策略,过滤非健康服务实例,选择lianji) ZoneAvoidanceRule(区域敏感策略)关于自定义负载均衡策略,之前也介绍过,可以看之前的文章Ribbon如何自定义实现负载均衡策略 - 掘金
Ribbon-eager-load(饥饿加载)模式
Ribbon对于负载Client是在服务启动后,发生调用的时候才会去创建Client,所以在第一次发生http请求调用的时候,不光要算上http的请求时间,还要算上Client的创建时间,所以第一次调用的时候才会很慢,写个方法调用下;
System 服务调用System2服务
ini复制代码@GetMapping(\"/requestSystem2Api\")public String requestSystem2Api(){ long startTime = System.currentTimeMillis(); RstringR = iTestServiceClient.testRequestMethod(); if (null !=stringR){ log.info(\"接口返回:\"+stringR.getMsg()); } long needTime = System.currentTimeMillis() - startTime; log.info(\"接口调用需要的时间:\"+needTime); return \"\";}
从调用日志可以看出,第一次调用System2服务,Ribbon的DynamicServerListLoadBalancer会将feign客户端进行负载,然后进行调用,第一次调用的时间就是会长一些,第二次调用直接进行请求可以看到调用时间很快。
开启Ribbon饥饿加载
yaml复制代码 ribbon: nacos: enabled: true # 开启naocos轮询 eager-load: enabled: true # 开启Ribbon的饥饿加载模式(防止第一次请求超时的问题) clients: Lxlxxx-system2 # 指定需要开启的服务(需要开启Ribbon的饥饿加载模式) ReadTimeout: 10000 ConnectTimeout: 10000 MaxAutoRetries: 0 MaxAutoRetriesNextServer: 1 OkToRetryOnAllOperations: false
在项目启动的时候,可以从日志看到,已经把Lxlxxx-system2服务进行加载,从而避免了第一次请求超时的情况;
总结
其实这种饥饿加载模式,类似于“客户端负载预热”的一个操作,项目启动的时候进行加载,防止服务之间调用可以因为数据量、业务逻辑处理复杂性导致接口超时,如果你的服务之间调用业务处理比较复杂、且慢,不妨可以试试这种解决方式。
作者:Lxlxxx 链接:https://juejin.cn/post/7249624466150408250
关键词:
- Feign第一次调用为什么会很慢 天天新视野(2023-07-01 02:22:44)
- 山西海泉学校女老师打人_山西海泉学校 当前短讯(2023-07-01 02:29:12)
- 世界通讯!汽车出厂时,厂家一般给车里加多少油?提完车后记得加油(2023-07-01 02:29:44)
- 6月29日基金净值:中银证券瑞益灵活配置混合A最新净值1.7533,跌0.62%(2023-07-01 02:24:50)
- 一念起万水千山一念灭沧海桑田全诗_一念起万水千山一念灭沧海桑田什么意思(2023-07-01 02:26:38)
- 全球聚焦:掘金GM:布鲁斯-布朗是最大的鱼 他有一百万个选择&希望他能回归(2023-07-01 02:15:58)
- 当前消息!上海五官科医院汾阳路网上预约官网_上海汾阳路五官科医院网上预约(2023-07-01 02:13:58)
- 内径的符号-内径的符号怎么打(2023-07-01 02:16:09)
- 【天天播资讯】机构调研备战下半年,知名基金经理密集行动(2023-07-01 02:12:24)
- 窦骁历任女友_窦骁字怎么念(2023-07-01 02:14:18)
- 美联储:建议银行业向存在商业地产压力的公司提供帮助 今日观点(2023-07-01 02:19:13)
- 苹果手机充电到100是好还是坏_苹果手机充电-观察(2023-07-01 02:17:02)
- 糟卤是什么地方的特色(糟卤是什么)-当前最新(2023-07-01 02:13:27)
- 什么是耦合变压器_什么是耦合关系(2023-07-01 02:17:27)
- 西洋参粉的功效与作用及正确吃法(西洋参粉)(2023-07-01 02:17:00)
- 环球速看:蜗牛保险网上买靠谱吗(蜗牛保险网)(2023-07-01 02:20:56)
- 按日计息和按月计息哪个好 两者各有优劣 环球即时(2023-07-01 02:09:59)
- 光盘映像文件已损坏_Windows映像损坏该如何修复(2023-07-01 02:18:13)
- 美国基准利率是联邦基金利率吗_美国基准利率(2023-07-01 02:18:10)
- 快手视频剪辑软件叫什么_快手视频剪辑软件 世界热点(2023-07-01 02:07:41)
- 天天观点:笔记本电脑壁纸4k超清_15 6笔记本高清壁纸(2023-07-01 02:16:05)
- 小米活塞typec耳机怎么样_49元的小米活塞耳机Type-C版到底行不行_世界热头条(2023-07-01 02:14:11)
- 【环球聚看点】恋爱先生里面的各种结局 恋爱先生大结局太动人(2023-07-01 02:13:34)
- 6月29日基金净值:华宝新材料ETF最新净值0.8771,跌0.66%(2023-07-01 02:06:20)
- 天天关注:6月29日基金净值:东吴行业轮动混合A最新净值0.8238,涨1.52%(2023-07-01 02:06:51)
- 6月29日基金净值:光大保德信景气先锋混合A最新净值1.7777,涨0.21%(2023-07-01 02:03:51)
- 6月29日基金净值:博时恒盛持有期混合A最新净值0.9621,涨0.74%(2023-07-01 02:14:12)
- 世界今亮点!6月29日基金净值:华宝双创龙头ETF最新净值0.5689,跌0.35%(2023-07-01 02:02:33)
- 焦点观察:6月29日基金净值:南方沪深300ETF最新净值1.8982,跌0.46%(2023-07-01 02:03:52)
- 今日快看!起诉离婚不调解吗 起诉离婚一方不出庭怎么办(2023-07-01 02:07:08)
-
糟卤是什么地方的特色(糟卤是什么)-当前
来为大家解答以下的问题,卤是什么地方的特色,糟卤是什么这个很多人还
-
什么是耦合变压器_什么是耦合关系
1、耦合关系是指某两个事物之间如果存在一种相互作用、相互影响的关系
-
西洋参粉的功效与作用及正确吃法(西洋参粉
来为大家解答以下的问题,洋参粉的功效与作用及正确吃法,西洋参粉这个
-
环球速看:蜗牛保险网上买靠谱吗(蜗牛保险
1、网上买保险靠谱吗?买保险是不是只能在线下购买呢?其实不是,互联
-
按日计息和按月计息哪个好 两者各有优劣
贷款都会产生利息的,而利息收取有按日与按月计算,两者各有好处,不过
-
光盘映像文件已损坏_Windows映像损坏该如何
1、Windows映像损坏可借助win10系统进行修复具体方法如下:这个方法可
-
美国基准利率是联邦基金利率吗_美国基准利
1、美国基准利率包括两类,一是联邦基金利率(隔夜),二是贴现利率。2
-
快手视频剪辑软件叫什么_快手视频剪辑软件
1、我用过三种,分享一下使用后的感觉:PR软件的功能非常强大,理论上
-
天天观点:笔记本电脑壁纸4k超清_15 6笔记
1、15 6寸显示屏分辨率推荐使用1366x768,所以只要找1366x768尺寸的壁
-
小米活塞typec耳机怎么样_49元的小米活塞耳
hello大家好,我是大学网网小航来为大家解答以上问题,小米活塞typec耳
- 滚动
- 综合
- 房产