美文网首页
【rpc】RPC的调用过程、心跳机制

【rpc】RPC的调用过程、心跳机制

作者: Bogon | 来源:发表于2023-10-04 09:13 被阅读0次

谈到RPC肯定绕不开TCP通信,而主流的RPC框架都依赖于Netty等通信框架,这时候我们还要考虑是使用长连接还是短连接:

  • 短连接:每次通信结束后关闭连接,下次通信需要重新创建连接;优点就是无需管理连接,无需保活连接;
  • 长连接:每次通信结束不关闭连接,连接可以复用,保证了性能;缺点就是连接需要统一管理,并且需要保活;

主流的RPC框架都会追求性能选择使用长连接,所以如何保活连接就是一个重要的话题。

为什么需要保活?

上面介绍的长连接、短连接并不是TCP提供的功能,所以长连接是需要应用端自己来实现的,包括:连接的统一管理,如何保活等;如何保活之前我们了解一下为什么需要保活?

主要原因是网络不是100%可靠的,我们创建好的连接可能由于网络原因导致连接已经不可用了,如果连接一直有消息往来,那么系统马上可以感知到连接断开;
但是我们系统可能长时间没有消息来往,导致系统不能及时感知到连接不可用,也就是不能及时处理重连或者释放连接;常见的保活策略使用心跳机制由应用层来实现,还有网络层提供的TCP Keepalive保活探测机制。

TCP Keepalive机制

TCP Keepalive是操作系统实现的功能,并不是TCP协议的一部分,需要在操作系统下进行相关配置。
开启此功能后,如果连接在一段时间内没有数据往来,TCP将发送Keepalive探针来确认连接的可用性。

Keepalive几个内核参数配置:

tcp_keepalive_time:连接多长时间没有数据往来发送探针请求,默认为7200s(2h);
tcp_keepalive_probes:探测失败重试的次数默认为10次;
tcp_keepalive_intvl:重试的间隔时间默认75s;

以上参数可以修改到/etc/sysctl.conf文件中。

是否使用Keepalive用来保活就够了?
其实还不够,Keepalive只是在网络层就行保活,如果网络本身没有问题,但是系统由于其他原因已经不可用了,这时候Keepalive并不能发现,所以往往还需要结合心跳机制来一起使用。

应用层心跳机制

何为心跳机制,简单来讲就是客户端启动一个定时器用来定时发送请求,服务端接到请求进行响应,如果多次没有接受到响应,那么客户端认为连接已经断开,可以断开半打开的连接或者进行重连处理。

本文首先介绍了RPC中引入的长连接方式,继而引出长连接的保活机制,为什么需要保活?然后分别介绍了网络层保活机制TCP Keepalive机制,应用层心跳机制;最后以Dubbo为例看各个版本中对心跳机制的进化。

参考

高并发服务优化篇:详解RPC的一次调用过程
https://zhuanlan.zhihu.com/p/391186905

Motan
https://www.cnblogs.com/mydriverc/articles/13581165.html

如何给老婆解释什么是RPC
https://www.jianshu.com/p/2accc2840a1b

如何保活主流RPC框架长连接,Dubbo的心跳机制
https://www.codenong.com/cs106470683/

后端 API 接口文档 Swagger 使用指南
https://zhuanlan.zhihu.com/p/98560871

相关文章

  • Java微服务分布式通信的几种方式

    RPC(remote produce calL) RPC是远程过程调用协议,它是基于C/S模型调用的机制,客户机向...

  • JavaGuide知识点整理——RPC原理

    何为RPC? RPC即远程过程调用,通过名字我们就能看出RPC关注的是远程调用而非本地调用。为什么要RPC?因为两...

  • RMI和RPC

    一、RPC 远程过程调用 RPC(Remote Procedure Call Protocol)远程过程调用协议,...

  • 一文告诉你 Java RMI 和 RPC 的区别!

    RPC 远程过程调用 RPC(Remote Procedure Call Protocol)远程过程调用协议,通过...

  • 一文告诉你 Java RMI 和 RPC 的区别!

    RPC 远程过程调用 RPC(Remote Procedure Call Protocol)远程过程调用协议,通过...

  • gRPC(1):入门及简单使用(go)

    1、RPC 1.1 什么是RPC RPC(Remote Procedure Call),即远程过程调用,过程就是方...

  • RPC

    RPC 简介 RPC -- Remote Procedure Call,即远程过程调用。 RPC(Remote P...

  • go rpc 入门

    go rpc 入门 rpc(Romote Procedure Call,远程过程调用)。相对应的就是本地过程调用,...

  • RPC入门介绍

    RPC 什么是RPC RPC全称Remote Procedure Call,即远程过程调用。要理解RPC,首先要...

  • RPC

    RPC基本原理 什么是RPC RPC是远程过程调用(Remote Procedure Call)的缩写。 像调用本...

网友评论

      本文标题:【rpc】RPC的调用过程、心跳机制

      本文链接:https://www.haomeiwen.com/subject/lkghbdtx.html