[013]说一说长连接

背景

今天与同学聊天说到了人到35岁之后应该有自己的独特的技术特长。说完之后我就意识到现在就必须坚持写博客学习技术了。
其中我们谈到了一个话题就是分布式框架dubbo,其中涉及到一个知识点就是长连接和短连接。
在这里我会从以下几个角度来阐述长连接相关的知识。
1.长连接产生的背景。
2.什么时候用长连接。
3.长连接在社会中的运用实例。
4.附:一些补充的知识。

产生背景

以前http 1.0 是无状态的,无状态的意思就是网页上有个链接你点击两下,第一次点击与第二次点击获取的网页是没有联系的。所以我们每次向服务器发起请求都会从新创建一个连接,且每次创建连接后只做一次数据传输就断开。 TCP 3次握手建立连接和4次握手释放连接都很消耗资源,所以长连接就应运而生。在http 1.1 报文头中设置Connection:keep-alive就可以使用长连接。

长连接怎么通信的

长连接就是一次请求发过去之后连接不断,它的交互模式为。
建立连接 -> 发送数据1,发送数据2 ...... 发送数据 -> 断开连接
而短连接的方式为:
建立连接 -> 发送数据1 -> 断开连接。
建立连接 -> 发送数据2 -> 断开连接。
即短连接每个连接只做一次数据传输,而长连接建立连接后可以进行多次数据传输。

在tcp连接和释放协议中,短连接一般是有客户端主动断开连接。
而对于长连接来说来接是一直保持的,如果已经不用的客户端长连接一直连着会消耗很多资源,比如线程池和数据库连接池连接数都有 一个最大值,如果连接不能释放那么达到最大值后其他连接就无法建立,就无法响应客户端的请求。所以长连接中服务器会隔一段时间发送10次心跳报文,如果服务器没有收到一次响应则认为客户端关闭或不可达相应的会把长连接关闭。

什么时候用长连接

前面提到短连接不能对连接复用每次传输要新建立请求,所以不适合操作频繁的客户端。而长连接中如果大量连接一直保值着会消耗很多的资源,长连接适合量小频繁的操作,比如数据库连接池、socket通信就是使用的长连接。

你如果在服务器中执行命令“netstat -ant | grep 1521” 会一些连接,这些就是oracle数据库的连接。

而对于web应用由于有成千上万个请求,所以这是不方便使用长连接的。

长连接在实践中的运用

写这篇文章是由于讨论dubbo话题引起的,所以这里对dubbo中的长连接进行一些描述。

在dubbo中消费者和生产者是通过单一的长连接维护的,因为客户端是不停的往服务器发送数据。
如果客户端是高并发的应用,这就是客户端的多线程往单一长连接发送数据场景。这样的话服务器需要知道这个数据是哪个线程发过来的,以便通知对应的线程。
这个解决办法就是在报文头加id,当服务器返回是会把id带过去,这样线程只接收自己认识的id响应报文。

其形式如下:
thread1 id = 1
客户端 发送数据 thread2 id = 2 ---单一长连接---> server
thread3 id = 3

            thread1 只接收 id=1的响应

客户端 接收数据 thread1 只接收 id=2的响应
thread1 只接收 id=3的响应

附:

通讯协议说明

说到网络通信有必要把通信协议在这里说明一下,让大家知道网络上的报文如何传输的。

在网络通信协议模型分为4层:从底到上依次是物理层、网络互连层、传输层、应用层。
其中网络互连层使用ip协议解决路由和寻址问题,即一个报文从北京出发如何经过路由器交换机到达目的地上海的过程。
传输层主要保证报文从北京发出正确无误按顺序的在上海被接收到(保证不丢包顺序不乱等等)。

因为连接的建立和释放是通过tcp完成的,我们说的http长连接实际上就是tcp长连接。

写完之后的感受

自己先想明白整个逻辑,然后一篇文章只描述其中一个点就可以了。但是一定 要是自己的推导思路。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352