10月31, 2020

gRPC长连接在微服务业务系统中的实践

长连接和短连接哪个更好, 一直是被人反复讨论且乐此不疲的话题。有人追求短连接的简单可靠, 有人却对长连接的低延时趋之若鹜。那么长连接到底好在哪里, 它是否是解决性能问题的银弹? 本文就从 gRPC 长连接的视角, 为你揭开这层面纱。

1 什么是长连接

HTTP 长连接, 又称为 HTTP persistent connection, 也称作 HTTP keep-alive 或 HTTP connection reuse, 是指在一条 TCP 连接上发起多个 HTTP 请求 / 应答的一种交互模式。

那么什么是长连接, 什么是短连接? 他们和 TCP 有什么关系呢?

为了理解这个概念, 我们来看下图中 TCP 连接的三种行为。

图一 展示了 client 和 server 端基于 TCP 协议的一次交互过程, 分为三个阶段: 三次握手, 数据交换和四次挥手。这个过程比较简单, 但是实际应用中存在一个问题。假如 server 处理请求过程非常耗时, 或者不幸突然宕机, 此时 client 会陷入无限等待的状态。为了解决这个问题, TCP 在具体的实现中加入了 keepalive。

图二 展示了 keepalive 的工作机制。当该机制开启之后, 系统会为每一个连接设置一个定时器, 不断地发送 ACK 包, 用来探测目标主机是否存活, 当对方主机宕机或者网络中断时, 便能及时的得到反馈并释放资源。

点击查看原文>

本文链接:https://blog.jnliok.com/post/cPXR35BwJttgNCLtYEKZ.html

-- EOF --

Comments