当前位置: 首页 > wzjs >正文

杭州 高端网站建设重庆工程招标网站有哪些

杭州 高端网站建设,重庆工程招标网站有哪些,河北邯郸做网站,临夏建设网站本文介绍如何在自研 Netty RPC 框架中实现超时控制与重试机制。合理的超时策略可以避免调用卡死,重试机制可以提升调用成功率,在高可用系统中不可或缺。 一、为什么要有超时和重试? RPC 是跨进程调用,失败是常态。常见问题包括&a…

本文介绍如何在自研 Netty RPC 框架中实现超时控制与重试机制。合理的超时策略可以避免调用卡死,重试机制可以提升调用成功率,在高可用系统中不可或缺。


一、为什么要有超时和重试?

RPC 是跨进程调用,失败是常态。常见问题包括:

  • 网络延迟或丢包

  • 对端服务故障或处理慢

  • 请求丢失、写超时或线程池满

没有超时控制会导致:

  • 客户端线程阻塞,资源耗尽

  • 请求堆积,引发服务雪崩

  • 用户体验极差,难以排查

✅ 因此,我们需要:

  • 对每次请求设置合理的超时时间(如 3s)

  • 请求失败时自动重试(如重试 1~3 次)


二、整体设计图

             ┌──────────────┐│ RpcClient    │└────┬─────────┘│┌────────────▼────────────┐│  Future/RpcResponseMap  │ <── 超时控制:Future 超时失效└────────────┬────────────┘│Netty Channel│┌─────────▼──────────┐│  RpcServerHandler  │└────────────────────┘

三、实现超时控制(基于 Future)

  1. 请求发出后,使用 CompletableFuture 持有结果。

  2. 设置 timeout,在时间内未响应即抛出异常。

  3. 使用定时任务清理过期请求。

public class RpcClient {private static final Map<String, CompletableFuture<RpcResponse>> FUTURE_MAP = new ConcurrentHashMap<>();public RpcResponse send(RpcRequest request, long timeoutMillis) throws Exception {CompletableFuture<RpcResponse> future = new CompletableFuture<>();FUTURE_MAP.put(request.getRequestId(), future);// 发起请求channel.writeAndFlush(request);// 超时处理return future.get(timeoutMillis, TimeUnit.MILLISECONDS);}public void receive(RpcResponse response) {CompletableFuture<RpcResponse> future = FUTURE_MAP.remove(response.getRequestId());if (future != null) {future.complete(response);}}
}

四、实现重试机制

在调用失败或超时时,自动进行 N 次重试(带间隔)。

public class RpcClientWithRetry {public RpcResponse sendWithRetry(RpcRequest req, int retryCount, long timeoutMillis) throws Exception {for (int i = 0; i < retryCount; i++) {try {return rpcClient.send(req, timeoutMillis);} catch (TimeoutException | ConnectException e) {log.warn("调用失败,第{}次重试", i + 1);Thread.sleep(100); // 简单退避}}throw new RuntimeException("RPC 调用重试失败");}
}

五、自动化封装

建议支持注解配置:

@RpcReference(retry = 3, timeout = 2000)
private HelloService helloService;

再在代理生成器中读取注解参数:

int retry = field.getAnnotation(RpcReference.class).retry();
long timeout = field.getAnnotation(RpcReference.class).timeout();

六、测试用例模拟超时重试

服务端代码故意 sleep:

@RpcService
public class HelloServiceImpl implements HelloService {public String hello(String name) {Thread.sleep(3000); // 模拟超时return "Hi " + name;}
}

客户端设置 timeout = 1000ms + retry = 2,观察日志:

WARN 调用失败,第1次重试
WARN 调用失败,第2次重试
ERROR 调用重试失败

七、可拓展建议

  • 指数退避重试(Exponential Backoff)

  • 熔断机制(见 Hystrix/Fuse)

  • 调用监控统计重试成功率

  • 精细化控制(按接口或服务维度配置)


八、总结

通过本篇内容,我们为 RPC 框架增强了健壮性保障机制:

✅ 自定义调用超时
✅ 请求级别自动重试
✅ 注解式参数配置
✅ 支持重试退避逻辑


文章转载自:

http://t6fkFANR.yrfLh.cn
http://09J1ilK1.yrfLh.cn
http://c1V30Qac.yrfLh.cn
http://QxSp0oWH.yrfLh.cn
http://bR7kteWj.yrfLh.cn
http://xv7dcs4x.yrfLh.cn
http://FZ8me7yv.yrfLh.cn
http://rG65Chns.yrfLh.cn
http://5uWrvUhz.yrfLh.cn
http://LDeBuzAh.yrfLh.cn
http://QNOFhURW.yrfLh.cn
http://LdUUpaIF.yrfLh.cn
http://xwcYg1E1.yrfLh.cn
http://JoJZ6Ck0.yrfLh.cn
http://JUEtbrFT.yrfLh.cn
http://wEVaDgsu.yrfLh.cn
http://zEdgESab.yrfLh.cn
http://3u5Ta1Tn.yrfLh.cn
http://Aks4Athe.yrfLh.cn
http://vrdwaJh7.yrfLh.cn
http://B6c2U7kK.yrfLh.cn
http://DYDrNBn1.yrfLh.cn
http://19MjwYzy.yrfLh.cn
http://tgrVhVoA.yrfLh.cn
http://qlpA3hko.yrfLh.cn
http://xeaSFYff.yrfLh.cn
http://7JS2V6vM.yrfLh.cn
http://MxwTACTS.yrfLh.cn
http://P36SWfp0.yrfLh.cn
http://mlAvcqq5.yrfLh.cn
http://www.dtcms.com/wzjs/775727.html

相关文章:

  • wex5做视频网站大学做机器人比赛的网站论坛
  • 台州市住房和城乡建设规划局网站湖北专业网站建设公司
  • 信息网站模板p2p理财网站开发
  • 柳州建设局网站产品推广平台
  • 可以做试卷的网站营销策划方案包括哪些内容
  • 网站群 建设 方案佛山规划建设局网站
  • 对电子商务网站设计的理解正规免费发布信息网站
  • 建设电商网站思想移动网站建设指南
  • 广东网站制作公司排名wordpress 置顶 函数
  • 网站建设的单可以刷吗广州建站外贸网站
  • 网站模板及源码wordpress福利
  • 长沙旅游网站建设Wordpress前端用户头像
  • 如何做网站动态图标安卓优化神器
  • 视频点播网站开发wordpress电影站
  • 资讯主题 wordpress哈尔滨seo优化代理
  • 桐乡市住房建设局网站公示网站pv uv统计
  • 网站建设人才调研可以做的电影网站
  • 专教做美食的网站购物网站建设价格
  • 山西太原网站建设公司男女直接做的视频视频网站
  • 台州市建设局网站广东建设集团
  • 网站的ftp账号和密码是什么建站系统cms
  • 做网站电脑配置新站如何让百度快速收录
  • 怎么做免费网站被收录手机网站开发利用流程
  • 北京高端网站制作网站后台关键词怎么设置
  • 做网站品牌国外网站访问速度慢
  • 澄海玩具网站建设公司东莞市生态环境局
  • 网站建设与运营就业做文案策划需要知道些什么网站
  • 不同网站对商家做o2o的政策做领域细分行业需要建网站吗
  • 辽宁省建设厅科技中心网站微网站模板代码
  • vip解析网站怎么做的深圳十大外贸公司排名