重试次数|学习笔记

简介: 快速学习重试次数

开发者学堂课程【阿里巴巴分布式服务框架 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“代表不重试。

相关文章
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
196 1
|
2月前
|
人工智能 前端开发 IDE
强烈推荐! 手把手教你用Function Call实现LLM深度搜索,干货多到学不完
VoidMuse 是一个开源AI IDE插件,支持IntelliJ IDEA与VS Code,整合20+优秀组件,通过深度搜索等功能帮助开发者在实践中掌握AI工程化技术,特别适用于学习Function Call与多轮工具调用的实现。文章介绍了如何利用Function Call能力,让AI像专家一样进行多-轮迭代搜索,以获取更全面的信息。内容涵盖了实现原理、Vercel AI SDK代码实战、必要的控制机制,并对比了不同模型的表现。
263 0
|
2月前
|
供应链 监控 API
推荐几个好用的电商API接口(淘宝天猫丨京东1688商品详情数据接口)
本文推荐淘宝、京东、1688等电商平台官方商品详情API,涵盖功能、优势及Python调用示例,助力开发者高效实现价格监控、库存管理与数据分析,附使用注意事项,助你合规快速集成。
382 0
|
敏捷开发 测试技术 BI
禅道:从安装到使用,一篇文章带你全面了解
禅道:从安装到使用,一篇文章带你全面了解
3336 3
|
存储 关系型数据库 MySQL
MySQL性能优化实践指南
【10月更文挑战第16天】MySQL性能优化实践指南
786 0
|
存储 分布式计算 负载均衡
分布式计算模型和集群计算模型的区别
【10月更文挑战第18天】分布式计算模型和集群计算模型各有特点和优势,在实际应用中需要根据具体的需求和条件选择合适的计算架构模式,以达到最佳的计算效果和性能。
542 62
|
iOS开发 索引 MacOS
mac文件搜索工具
【10月更文挑战第11天】
976 2
|
算法 Linux 调度
深入理解操作系统中的进程调度
【9月更文挑战第28天】在操作系统的复杂世界中,进程调度是维持系统高效运作的关键。本文将深入浅出地探讨进程调度的核心概念及其对系统性能的影响。从进程调度的定义和目标出发,逐步解析不同类型的调度算法,并通过实际代码示例,揭示这些算法如何在真实系统中实施。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和知识。
|
安全 算法 物联网
Wi-Fi安全协议的演变过程:从WEP到WPA3的全面解析
随着无线网络普及,Wi-Fi安全性问题日益重要。本文详细探讨了Wi-Fi安全协议的演进,包括最早的WEP协议及其缺陷,随后推出的WPA协议引入了TKIP等改进措施,WPA2则采用AES加密提供更高安全性,最新的WPA3进一步强化了密码保护和隐私安全,标志着Wi-Fi安全的重大升级。未来,Wi-Fi安全协议将继续进化,确保无线通信安全。
1272 7
|
XML Dubbo Java
参考Dubbo3官方文档做的学习笔记
这篇文章是关于Dubbo3的学习笔记,涵盖了Dubbo3的概念与架构、服务发现机制,以及如何在提供端实现和注册服务,消费端引用服务的基本流程,并提供了相应的Java代码示例和配置方法。
参考Dubbo3官方文档做的学习笔记