长连接,RPC,RESTful乱弹
今天学习到很多知识,混混沌沌的大脑有时候就得需要轻敲一下,才能醍醐灌顶。
之前的对技术思考深度不够,涉及到东西浮于表面,蜻蜓点水而过。对于注意到不寻常现象,往往没有分析它的本质,思考现象本身原因就放过了。比如今天学习到RPC和Restful一个区别是RPC支持长连接,这对我之前对RPC的了解停留在客户端调用是无感知,无差别更深入本质了。
长连接
长连接(HTTP persistent connection)指的是在一个连接上可以持续不断的发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需 要双方发检测包以维持此连接。
在keep-alive机制出现之前,每次http请求都会打开一个tcp socket连接,请求完成之后就断开这个tcp连接。keep-alive机制,能够保持TCP连接不断开(不发RST包、不四次握手),减少了tcp连接次数,提交了传输速率。但是长时间不释放tcp连接数,也会极大的造成资源浪费。实现成千上万人同时在线的话,也就得保持住同样数量的tcp连接数。keep-alive的timeout时间设置非常重要,能够及时的释放不需要的tcp连接。