springcloud + ribbon重试策略

SpringCloud系列:负载均衡组件-Ribbon 前面几篇文章介绍了微服务相关的内容,比如什么是微服务,常见的一些服务注册中心组件,以及微服务之间是如何进行服务通信的。在微服务架构中还有常见的一种场景就是服务的负载均衡。今天就一起学习SpringCloud提供的负载均衡组件-Ribbon。Spring Cloud Ribbon是一个基于http和tcp的客户端负载均衡工具,是基于netflix ribbon实现的,通过Spring Cloud封装, 可以让我们将面向服务的resttemplate请求自动转换成客户端负载均衡的服务调用。 阅读详情

1、本例采用spring cloud feign + eureka 实现

2、feign底层其实用的ribbon实现负载均衡

3、代码分析

provider1代码如下:

@Slf4j
@RestController
public class TestController {

    @GetMapping("/hello")
    public Object hello() throws InterruptedException {
        log.info("service provider 1");
        Thread.sleep(7000L);
        return "hello,I'am service provider 1";
    }
}

实例1,设置延时7s。

实例2正常

consumer配置文件

server:
  port: 8081
spring:
  application:
    name: feign-consume


eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:12346/eureka/

ribbon:
  NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #配置规则 随机
  #    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #配置规则 轮询
  #    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RetryRule #配置规则 重试
  #    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule #配置规则 响应时间权重
  #    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.BestAvailableRule #配置规则 最空闲连接策略
  ConnectTimeout: 500 #请求连接超时时间
  ReadTimeout: 1000 #请求处理的超时时间
  OkToRetryOnAllOperations: true #对所有请求都进行重试
  MaxAutoRetriesNextServer: 2 #切换实例的重试次数
  MaxAutoRetries: 1 #对当前实例的重试次数
OkToRetryOnAllOperations:是否所有请求都重试,false:只有get重试,true:get和post都会重试,需要关注接口幂等性因素。

4、请求服务

发现超时,超时等待时间为1s

此时provider1打印日志(不包含首次重试1次MaxAutoRetries)

2020-09-18 18:09:08.601  INFO 79741 --- [io-10001-exec-7] c.s.c.e.controller.TestController        : service provider 1
2020-09-18 18:09:09.607  INFO 79741 --- [io-10001-exec-8] c.s.c.e.controller.TestController        : service provider 1

但是页面返回结果是:

hello,I'am service provider 2

可以得出结论,在请求provider1超时的情况下,请求了provider1两次,两次任然超时,切换请求实例到provider2,最终返回provider2的结果。

code:https://github.com/foxiaotao/spring-cloud-demo

【微服务】SpringCloud中Ribbon的轮询(RoundRobinRule)与重试(RetryRule)策略 前面的文章也分析了一些选取服务的算法,本篇文章继续探讨一下Ribbon的负载均衡策略:轮询算法的实现、重试、CAS、死循环?重试策略怎么实现的、多线程编程、延迟任务、中断? 阅读详情

相关推荐

Ribbon负载均衡策略与重试机制配置详解

eg: #更改负载均衡 轮询策略为 随机 #eureka-server.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule 服务器名.ribbon.策略 策略名 策略声明 策略描述 实现说明 BestAvailableRule public class BestAvailabl...

大道至简,悟在天成。 1396

localhost输入起始url启动scrapy

import json from klein import Klein from scrapy import signals import urllib from scrapy.crawler import CrawlerRunner import re app = Klein() class MyCrawlerRunner(CrawlerRunner): def crawl(self, crawler_or_spidercls, *args, **kwargs): # keep all items scr

weixin_39790665的博客 6814

CST高阶技巧:用周期性边界快速仿真共面波导色散特性(含JDM求解器优化)

本文详细介绍了在CST仿真软件中,利用周期性边界条件结合JDM本征模求解器,高效分析共面波导色散特性的高阶技巧。该方法通过仿真一个单元胞而非整条传输线,大幅提升计算效率,并提供了从建模、边界设置、求解器优化到后处理的完整工作流程,是高频电路设计的实用指南。

weixin_29280219的博客 403

vs2008运行WEB程序时提示无法启动程序"http://localhost:12345/index.aspx".有更多数据可用

今天使用vs2008开发web项目时,发现按F5运行时,提示:无法启动程序"http://localhost:12346/Default.aspx".有更多数据可用。如下图 找了很多方法都没有解决,最后发现是因为在vs2008的默认浏览设置中,默认的浏览器不是ie造成的。把默认浏览设置成ie后,问题自动解决。

灰太狼的博客 1万+

致远OA公文管理模块相关操作

致远oa协同办公系统 公文管理模板 相关操作

weixin_59666050的博客 4276

[Vue][面试]谈谈你对MVC、MVP和MVVM的理解

谈谈你对MVC、MVP和MVVM的理解 答题思路:此题涉及知识点很多,很难说清楚,说透彻,因为MVC,MVP这些我们前端程序员自己甚至都没用过。但是恰恰反映了前端这些年从无到有, 从有到优的变迁过程,因此沿此思路回答将十分清除。 Web1.0时代 在web1.0时代,并没有前端的概念。开发一个web应用多数采用ASP.NET/Java/PHP编写,项目通常由多个aspx/jsp/php文件构成,每个文件中同时包含了HTML、CSS、JavaScript、C#/Java/PHP代码, 系统整体架构可能如下图所

你好,欢迎光临! 723

Docker镜像保存save、加载load

(1)查看要要保存的镜像的ID [root@localhost docker]# docker images (2)保存镜像 [root@localhost docker]# dockersavespring-boot-docker -o /home/wzh/docker/spring-boot-docker.tar (3)加载镜像 可以在任何装 docker 的地方加载 刚保...

Jian Sun_的博客 638

FPGA 上的 YOLOv8 实时目标检测:从模型优化到硬件加速全解析

本文全面解析了将YOLOv8目标检测模型部署到FPGA进行硬件加速的完整流程。通过模型裁剪、混合精度量化等优化手段,结合HLS设计专用计算引擎与数据流,实现了高能效比的实时推理。文章深入探讨了软硬协同部署、性能调试与优化技巧,为追求极致实时性与低功耗的边缘AI应用提供了从算法到硬件的实战指南。

weixin_29031161的博客 605

网站无法用localhost打开,修复localhost一切常见错误,一次性去除病根

作者:Lccee 转载自:Lccee博客 网上那些很多解决方案都是没用的,有些答案根本还没验证就发出来了,网上搜出的答案根本没用。 如果遇到此问题直接使用PHPCUSTOM功能大全里的localhost优化功能,就能完全解决了。无论是php程序还是其他程序,只要用localhost访问慢,都能解决,因为是你系统设置问题,所以有的系统慢,有的系统不会,这个功能能一键修复你系统。电脑的localhost无法使用,也可以一键修复。 1、百度搜索PHPCUSTOM下载,解压后打开软件 软件打..

shangguanqh的博客 4570

CDH Hue连接Hbase报错TSocket read 0 bytes

问题描述 安装好CDH集群后,在Hue中查看HBase信息时,Hue界面报错如下: Api 错误:TSocket read 0 bytes Hue日志报错: exceptions_renderable ERROR Potential trace: [('/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hue/apps/hbase/src/hbase/api.py', 46, 'query', 'return getattr(self

邢为栋 3493

避开模板匹配的坑:OpenCVSharp中边缘梯度算法的优化实践

本文深入探讨了OpenCVSharp中边缘梯度算法在模板匹配中的优化实践,解决了传统方法在尺度变化、角度旋转和光照差异下的局限性。通过Sobel算子提取边缘梯度特征,结合轮廓检测和多尺度匹配策略,显著提升了匹配的鲁棒性和准确性。文章还分享了并行计算、内存访问优化等实战技巧,适用于工业检测和自动化识别场景。

http9protocoller的博客 198

SpringCloud中Feign和Ribbon的重试机制

Feign和Ribbon的重试机制相当于一个双层循环,feign重试机制在外层,Ribbon的重试机制在里层,每执行一次feign的重试机制,内层的Ribbon的重试机制都会全部执行一次。

lt_xiaodou的博客 2146

【35】软考软件设计师——设计模式代码填空(C++版)满分精讲|第5/6题二选一必考

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第35篇,聚焦下午选做题**第5/6题C++版设计模式代码填空**,与上一篇Java版形成双子配套,单题分值稳定12~15分。全文超4000字深度拆解C++独有核心考点:虚函数/纯虚函数、构造与析构函数规范、继承权限、模板类编程在设计模式中的应用;精讲单例、工厂、策略、观察者、适配器五大高频模式的C++专属代码写法,标注所有填空核心点位、语法陷阱、内存安全规范

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 544

008 SpringCloud_Ribbon Retry重试策略详解(二)

springcloud ribbon集成retry: 1.修改配置application.yml: spring: application: name: retry-service ##类似@EnableRetry注释,此处代表启动springcloud ribbon retry cloud: loadbalancer: retry: ena...

诸般世界 616

html2canvas - 解决截图后引入的字体样式丢失问题,第三方字体截图导出图片后字体失效,html2canvas截屏生成图片后艺术字体就丢失并且自动转成常规字体了,特殊字体显示不了无法截图怎么办

vue2,vue3,uniapp,html2canvas截图后引入的字体样式丢失,html2canvas艺术字截图不显示,使用外部字体无效,html2canvas无法识别网络字体文件怎么办,ttf文件,网页使用在线字体链接利用html2canvas无法截取,字体样式没有了,font-family第三方字体,@font-face引入本地字体文件后无法被html2canvas识别怎么办,html2canvas文字消失,vue页面正常显示艺术字体但截屏后没有,html2canvas截图存在特殊字体时截图不全,默认

✅ 精选推荐文章 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

007 SpringCloud_Ribbon Retry重试策略详解(一)

Spring Cloud Ribbon Retry机制 当使用Spring Cloud Ribbon实现客户端负载均衡的时候,通常都会利用@LoadBalanced来让RestTemplate具备客户端负载功能,从而实现面向服务名的接口访问。 •大多数情况下,上面的实现没有任何问题,但是总有一些意外发生,比如:有一个实例发生了故障而该情况还没有被服务治理机制及时的发现和摘除,这...

诸般世界 1833

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

springCloud ribbon-13 ribbon 请求重试

问题: 使用ribbon 负载均衡,无论是使用轮询,权重,还是随机策略。如果负载均衡后面有一个服务宕机,当负载均衡到该宕机的服务时,请求就会出错。 解决方法: 使用spring 的重试组件,对ribbon 进行重试配置。 ConnectTimeout: 250 # Ribbon的连接超时时间 ReadTimeout: 1000 # Ribbon的数据读取超时时间 OkToRetryOnAllOperations: true # 是否对所有操作都进行重试 MaxAut

阿涩的博客 427

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

SpringCloud-02-Ribbon

Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将NetFlix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等.简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器.我们也很容易使用Ribbon实现自定义的负载均衡算法. 1. 负载均衡 1.1 服务端负载均衡 服务端负载均衡一般是指 Nginx 或者 F5 之类的..

qq_20633779的博客 1366

【feign】Spring Cloud Feign组件的重试策略及负载均衡策略

文章目录Spring Cloud Feign组件的重试策略及负载均衡策略简介Feign重试策略Feign负载均衡策略 Spring Cloud Feign组件的重试策略及负载均衡策略 简介 在使用Spring Cloud微服务框架的过程中,经常会使用Feign组件进行服务间的远程调用。微服务远程调用技术的dubbo具备负载均衡策略(轮训、最小连接数、随机轮训、加权轮训)及失败策略(快速失败、失败重试),那么 Feign的负载均衡策略是什么? 失败后是否会重试,重试策略又是什么? 带着这些疑问,查阅了一些资料

hkk666123的博客 2076

SpringCloud Ribbon中的7种负载均衡策略!

作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)负载均衡通器常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡...

磊哥聊Java 1万+

SpringCloud Ribbon实现负载均衡,SpringCloud Ribbon自定义策略

SpringCloud Ribbon实现负载均衡,SpringCloud Ribbon自定义策略 ================================ ©Copyright 蕃薯耀2021-03-09 https://www.cnblogs.com/fanshuyao/ 一、SpringCloud Ribbon概述SpringCloud Ribbon为客户端(消费者端)的负载均衡,...

蕃薯耀的博客 618

SpringCloud-Ribbon负载均衡

本文描述了Ribbon的负载均衡策略并对其中的轮询策略进行了详细分析

weixin_46120888的博客 4222

Spring Cloud Ribbon 详解

Ribbon是什么 Ribbon是一个客户端负载均衡器,它赋予了应用一些支配HTTP与TCP行为的能力,这里的负载均衡是客户端的负载均衡,也有人称为后端负载均衡是进程内负载均衡的一种。Ribbon是SpringCloud生态里的不可缺少的组件,有了它,是个服务的横向扩展更加方便了。此外想Feign和Zuul默认是集成了Ribbon。 Ribbon是Neflix开源的一个组件,目前Ribbon早已进入维护状态,但是就目前的情况来看,Spring Cloud Netflix的一些组件还是可以使用。 Spring

qq_20504373的博客 1063

SpringCloud | FeignClient和Ribbon重试机制区别与联系

在spring cloud体系项目中,引入的重试机制保证了高可用的同时,也会带来一些其它的问题,如幂等操作或一些没必要的重试。 今天就来分别分析一下 FeignClient 和 Ribbon 重试机制的实现原理和区别,主要分为三点: 1)FeignClient重试机制分析 2)Ribbon重试机制分析 3)FeignClient和Ribbon重试机制的...

diaohuyi6830的博客 190

SCA - Ribbon入门实战

文章目录实战环境Ribbon简介负载均衡分类手写客户端负载均衡Ribbon实现负载均衡负载均衡策略配置项代码配置负载均衡策略属性配置负载均衡策略 实战 环境 Nacos Nacos Version:2.0.3 Demo Application: System: macOS 10.14.6 JDK: 1.8.0_251 Spring Boot:2.2.13.RELEASE Spring Cloud:Hoxton.SR12 Spring Cloud Alibaba: 2.2.5.RELEASE Ribbon简介

windfbi 403

Ribbon 学习笔记

此段笔记均摘自 翟永超 ——《springcloud微服务实战》,特此标出,以示尊敬。 一 Spring Cloud Ribbon 客户端负载均衡 1、 @LoadBalanced 开启客户端负载均衡 沁bbon 的时候 Spring Cloud 默认采用ZoneAware-LoadBalancer 2、 Spring Cloud Ribbon 是一个基于 HTTP 和 ...

qq_34090205的博客 247
上一篇: spring cloud之ribbon负载均衡,eureka分布式服务注册
下一篇: spring cloud feign 熔断hystrix
小涛_foxiaotao
博客等级 码龄14年 2粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值