重试次数|学习笔记

简介: 快速学习重试次数

开发者学堂课程【阿里巴巴分布式服务框架 Dubbo 快速入门:重试次数】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/624/detail/9468


重试次数


内容介绍:

一、什么是重试次数

二、进行重试次数测试

三、重试次数的配置方法


一、什么是重试次数

超时属性一般配合 retries 重试次数使用,重复次数在开发中用的也很多,当某一个服务由于各种原因,如网络不佳、运行缓慢等等导致超时,方法远程调用失败,可以通过调整重试次数多试几次,重试次数是一个整数,不包含第一次调用。

例如:retries=“3“,第一次调失败了,额外还会再试三次,直到三次以内有一次成功,最多会试四次不包含第一次。


二、进行重试次数测试

来到服务提供方,需要远程调用 System.out.println(“UserServiceImpl……1…”),启动调用服务提供方,注册在注册中心中,调用提供方服务,测试结果过一段时间显示超时,看控制台,发现 UserServiceImpl……1…打印了4次,即第一次失败了,又打印三次。

重试机制如果在有多个服务提供方的情况下,例如订单服务调用户服务,如果用户服务放了三个,第一次调会默认调第一个用户服务,若调用失败了,还可以自动重试其他机器相同功能的用户服务是否可以。

进行测试,重试次数依旧是3个,把服务的提供方启用上三个,让第一个服务提供方20080先启动,若它被调用,控制台打印的是 UserServiceImpl……1…;

服务提供方第二个再次进行启用,用20881端口,若它被调用,控制台打印的是 UserServiceImpl……2…;服务提供方第三次进行调用,端口为20882,控制台打印的是 UserServiceImpl……3…。刷新注册中心,发现提供者有3个,分别在20881、20882、20883,点进来都是 User Service,方法是 getUserAddressList。

把超时配在消费方,依然超时报错,看一下控制台,UserServiceImp……1…打印了两次,UserServiceImp……2…打印了一次,UserServiceImp……3…打印一次,正好是4次,既重试次数也重试了其他服务器,由于第一次请求默认来到 UserServiceImp……1…,试过之后发现第一次请求出错了,再重试一下还出错,直接来到下一个 UserServiceImp……2…再试一下,出错后再来到 UserServiceImp……3…,如果有很多个,在重试次数以内只要有一个调用成功,本次就调用成功。


三、重试次数的配置方法

重试次数应该在合适的情况下设置,一般可将方法分为幂等操作和非幂等操作。

1、幂等操作

在幂等操作的基础上可以设置重试次数,提升系统的性能;所谓的幂等即不管运行多少次,最后的结果都是一个效果。

例如操作数据库中的查询、删除、修改(同样的请求,同样的方法带同样的参数,无论执行多少次产生的效果和执行一次产生的效果是一样的),这种叫做

幂等。

2、非幂等操作

在非幂等方法上,不能设置重试次数。非幂等即每一次方法运行都会产生新的效果,比如数据库的新增。此外 retries=“0“代表不重试。

相关文章
|
SQL 运维 监控
高并发接口超时时间过长,导致服务雪崩
高频访问接口超时时间过长,导致服务雪崩
526 0
高并发接口超时时间过长,导致服务雪崩
|
消息中间件 NoSQL Java
Springboot 指定重发的次数和延迟时间,定时异步执行 重发任务
Springboot 指定重发的次数和延迟时间,定时异步执行 重发任务
894 0
Springboot 指定重发的次数和延迟时间,定时异步执行 重发任务
ly~
|
28天前
|
消息中间件 存储 监控
如何查看 RocketMQ 消息的重试次数和时间间隔?
RocketMQ消息重试次数和时间间隔可通过查看消费者和Broker日志、使用管理控制台的监控页面和消息查询功能,或通过分析消费者代码和RocketMQ客户端库代码等方式获取。日志中常有消费失败重试的明确记录,控制台可监控消费情况推断重试状态,代码分析则适合技术用户深入了解。
ly~
113 3
|
4月前
|
存储 Java Serverless
函数计算产品使用问题之执行一个比较耗时的操作导致请求超时时,该怎么办
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5月前
|
消息中间件 Arthas 监控
消息队列 MQ产品使用合集之每次重置reconsumeTimes就无法达到死信阈值,重试次数是否就要应用方控制
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
消息队列 MQ产品使用合集之每次重置reconsumeTimes就无法达到死信阈值,重试次数是否就要应用方控制
|
6月前
933.最近的请求次数
933.最近的请求次数
37 0
|
消息中间件 存储 资源调度
订单超时怎么处理?我们用这种方案
在电商业务下,许多订单超时场景都在24小时以上,对于超时精度没有那么敏感,并且有海量订单需要批处理,推荐使用基于定时任务的跑批解决方案。
1564 5
订单超时怎么处理?我们用这种方案
一日一技:在ES批量插入数据超时时自动重试
一日一技:在ES批量插入数据超时时自动重试
454 0
LeetCode——933. 最近的请求次数
LeetCode——933. 最近的请求次数
95 0
|
JSON NoSQL 安全
优雅地处理重复请求(并发请求)
优雅地处理重复请求(并发请求)
优雅地处理重复请求(并发请求)