长连接 、短连接、心跳机制与断线重连(转载)
概述 可承遇到,不知什么原因,一个夜晚,机房中,大片的远程调用连接断开。 第二天早上,用户访问高峰,大部分服务器都在获取连接,造成大片网络阻塞。 服务崩溃,惨不忍睹的景象。 本文将从长连接和短连接的概念切入,再到长连接与短连接的区别,以及应用场景,引出心跳机制和断线重连,给出代码实现。 从原理到实践杜绝此类现象。 短连接 概念 client与server通过三次握手建立连接,client发送请求消息,server返回响应, 一次连接就完成了。 这时候双方任意都可以发起close操作,不过一般都是client先发起close操作。上述可知,短连接一般只会在 client/server间传递一次请求操作。 短连接的优缺点 管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段。 使用场景 通常浏览器访问服务器的时候就是短连接。 对于服务端来说,长连接会耗费服务端的资源,而且用户用浏览器访问服务端相对而言不是很频繁的 如果有几十万,上百万的连接,服务端的压力会非常大,甚至会崩溃。 所以对于并发量大,请求频率低的,建议使用短连接。 长连接 什么是长连接 client向server发起连接,server接受client连接,双方建立连接。 Client与server完成一次读写之后, 它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。 长连接的生命周期 正常情况下