给产品经理讲技术|关于“长连接”你不得不知
【相关推荐】
给产品经理讲技术丨如何适配iOS屏幕
给产品经理讲技术 | 互联网的黄金矿工:爬虫
给产品经理讲技术|撩妹技术三部曲之“设计模式”
给产品经理讲技术丨没线,并不可怕?
给产品经理讲技术丨提需求的正确姿势是什么
大伙儿一定都知道「互联网上一切皆下载」,也知道HTTP、TCP/IP这些网络协议,但是当程序猿跟你扯「长连接」的时候,你是否会感到一头雾水?没关系,只要看完今天果果的这篇文章,保证你能轻松的跟猿类大战三百回合。
在讨论「长连接」时,都基于TCP/IP协议。
当客户端用TCP/IP协议从服务器上获取数据的时候,都需要一个连通客户端和服务器的「连接」,「连接」通过「三次握手」建立,通过「四次握手」释放。如果每次获取数据都创建一个独占的「连接」,并在数据传输完毕后释放,这种「连接」叫做「短连接」。而一个能够供多个请求多次传输数据,并在数据传输后保活一段时间的「连接」,我们称之为「长连接」。
有两种场景,我们会使用「长连接」:
1、短时间内,对同一个服务器的多次数据请求。
当我们在餐馆里点餐的时候,正常情况下肯定有个服务生会站在你旁边,等你点完所有的菜后才会离开。试想下,如果某一次我们遇到了一个「不耐烦」的服务生,每次你在菜单上选下一道菜的时候,他都会自己走到大堂里玩手机,当你选好后,需要再把他叫回来,如此反复。这么一来,肯定会加长点餐的时间,影响用餐心情。
这个场景很像我们用浏览器加载网页。一个网页通常由多个元素组成。每个元素都需要一个HTTP连接去拉取。如果每个元素下载完毕后都把HTTP对应的TCP连接关闭,那么下载下一个元素的时候又需要重新建立TCP连接、断开TCP连接,而「连接」的建立和断开都需要耗费大量资源,有时建立连接的开销甚至比数据传输本身还大,就像我们遇到了「不耐烦」的服务生。
但是如果浏览器和网站的服务器支持HTTP的Keep-Alive,这个窘境就会得到大大的改善:TCP连接会在第一个HTTP连接创建时建立,并在最后一个HTTP连接关闭后的一段时间内结束,所有元素的传输过程都在这一个TCP连接上完成。这样不仅优化了网页的加载速度,也降低了服务器的压力(服务器不必为客户端的多次请求项系统频繁申请、释放资源)。
2、实现PUSH功能。
PUSH功能的实现,正是基于「长连接」的「全双工」通信能力。当客户端与服务器建立「长连接」后,服务器就能随时随地的「找」到客户端并PUSH数据。老文章《没推送功能,你好意思叫App嘛?》里已经介绍了PUSH的流程和特点,这里就不在赘述。
衡量一个PUSH服务器的关键指标主要有并发连接数和带宽。当每条PUSH信息的数据量一定时,并发连接数和带宽越高的服务器就能在更短的时间内触达全量目标用户。而PUSH系统的客户端则需要利用最低频率的心跳保证「长连接」的存活时长。因为频繁的心跳和「重连」都会增大服务器负担,而「断链」影响消息送达的实时性。
像微信和QQ这些实时通信软件,PUSH能力是标配,后面如果有时间的话,会分析下微信客户端的PUSH系统实现,敬请期待!
关键字:产品经理, 长连接, 连接, tcp
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!