千家信息网

Dubbo retries超时重试机制的问题怎么解决

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容主要讲解"Dubbo retries超时重试机制的问题怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Dubbo retries超时重试机制
千家信息网最后更新 2025年11月07日Dubbo retries超时重试机制的问题怎么解决

本篇内容主要讲解"Dubbo retries超时重试机制的问题怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Dubbo retries超时重试机制的问题怎么解决"吧!

异常日志

[com.alibaba.dubbo.rpc.filter.TimeoutFilter] - [DUBBO] invoke time out. method: sendMessagearguments: [{****内容****}] , url is dubbo://*.*.*.*:20882/cn.demo.api.IDemoProviderApi?anyhost=true&application=demo&dubbo=2.8.4&generic=false&interface=cn.demo.api.IDemoProviderApi&methods=sendMessage,resetSendCount&pid=13008&revision=0.0.1-SNAPSHOT&side=provider&timeout=6000×tamp=1521449123489&version=1.0, invoke elapsed 10863 ms., dubbo version: 2.8.4, current host: 127.0.0.1

异常原因

dubbo服务提供方,通过注解方式暴露的,参数设置如下:

@Service(version = "1.0", timeout = 6000)

消费方调用dubbo服务,请求超时,dubbo服务有超时重试机制,所以对于提交的业务,会有3次调用.

解决方案

修改dubbo服务提供方.将timeout超时设为20000ms.或者设置retries="0".禁用超时重试机制.

xml方式(消费方):

  

注解方式(提供方):

@Service(version = "1.0", timeout = 20000)

Dubbo超时重试机制

1、请求服务超时,但是最终程序执行了3次,对于提交订单的业务,只能是新增一个订单,这样是不可以的.

2、dubbo:provider 可以设置超时时间 timout,以及如果超时允许被重连的次数 retries.

3、dubbo:reference 可以设置超时时间,以及如果超时 timout,允许重连服务的次数 retries;如果服务方有设置retries,消费方可以不设置该参数.

4、dubbo:reference retries 的默认值和consumer一样,而consumer默认为2次

dubbo:consumer

retries

default.retries

int

可选

2

#--------以下为转载--------

1.超时设置

DUBBO消费端设置超时时间需要根据业务实际情况来设定,
如果设置的时间太短,一些复杂业务需要很长时间完成,导致在设定的超时时间内无法完成正常的业务处理。
这样消费端达到超时时间,那么dubbo会进行重试机制,不合理的重试在一些特殊的业务场景下可能会引发很多问题,需要合理设置接口超时时间。
比如发送邮件,可能就会发出多份重复邮件,执行注册请求时,就会插入多条重复的注册数据。

(1)合理配置超时和重连的思路

1.对于核心的服务中心,去除dubbo超时重试机制,并重新评估设置超时时间。
2.业务处理代码必须放在服务端,客户端只做参数验证和服务调用,不涉及业务流程处理

(2)Dubbo超时和重连配置示例

 

2.重连机制

dubbo在调用服务不成功时,默认会重试2次。
Dubbo的路由机制,会把超时的请求路由到其他机器上,而不是本机尝试,所以 dubbo的重试机器也能一定程度的保证服务的质量。
但是如果不合理的配置重试次数,当失败时会进行重试多次,这样在某个时间点出现性能问题,调用方再连续重复调用,
系统请求变为正常值的retries倍,系统压力会大增,容易引起服务雪崩,需要根据业务情况规划好如何进行异常处理,何时进行重试。

补充:下面介绍下dubbo RPC 不能直接传递数组类型。

今天遇到一个大坑,提供的一个RPC接口批量查Redis数据,由于数据类型不定,采用的map作为返回类型,查到的结果集其中有一个是数组类型,代码没报问题,但一直RPC异常,各种狗屎的尝试排查,终于定位到问题。

最简单的解决方案是将所有的value都转化成String类型。

目测是dubbo序列化不允许直接传递数组类型,后面再研究。

到此,相信大家对"Dubbo retries超时重试机制的问题怎么解决"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

服务 机制 业务 时间 问题 类型 消费 处理 供方 内容 参数 数据 数组 方式 次数 配置 不合理 代码 实际 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 民生证券里做软件开发怎么样 什么是网络安全志愿者 威海app定制软件开发哪家好 电脑服务器购买 服务器返回未知错误 广电网络安全播出自检自查报 哪里有软件开发培训班没有 网络安全工程师就业单位 服务器没有此安全信息库 英雄联盟显示服务器丢失 北京国舜科技网络安全 苹果电脑服务器地址 东莞服务器租用 我为网络技术点赞的事实论据 电商购物软件开发怎么样 plsql记录的数据库密码 公司是否需要招聘网络安全专业 福建通信软件开发设施服务标准 延庆区信息化网络技术服务优点 管理系统为什么要有服务器 Java服务器端文件管理 华南理工大学网络安全考研 上海网络安全科技馆 华为手机识别数据库 在韩国绝地求生切换服务器教程 人社网络安全宣传活动简报 app软件开发工程师工资 网络安全主要是干啥 文华指数历史交易数据库 网络安全配置是什么意思
0