【100分】老鸟的疑惑之websocket

丰云 2018-12-19 02:52:00
如果没有搞错的话,我记得服务器的连接资源是很有限的,也就是说,能支持的长链接是非常有限的。
因而在线数很高的服务,都不能用长链接,因此http才得以蓬勃发展。
但现在websocket的出现,似乎打破了这个壁垒,网上看到有人介绍维持百万链接的websocket案例,
觉得非常不可思议。
websocket本质上不是只是借用了http的握手机制的socket长链接吗?为什么可以有这么高的连接数??
是我哪里理解不对吗?

希望有高人指点一下,不胜感激
...全文
739 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
丰云 2018-12-24
  • 打赏
  • 举报
回复
谢谢大家的帮助,我大致的理解是,现在的计算机处理能力已经不同往日,可以承受相当高的连接数了,并且每个长链接,并不是时时刻刻都在占用系统资源,只是在通讯时占用资源,因此超高的连接数才得以实现
  • 打赏
  • 举报
回复
嗯,在一定故意设计的逻辑条件下,取得了很高很高的连接数,并不能说明有利于业务处理。长连接双向通讯方式与短链接相比,正是因为不进行重新连接数,于是极大地保证了业务通讯性能。那么这个时候讨论连接数的极限测试,应该非常谨慎,不应该儿戏。
gs0038 2018-12-20
  • 打赏
  • 举报
回复
维持百万链接数,这是人家程序统计出现了错误,别当真~其实它在线的只有2个
xuan.ye 2018-12-20
  • 打赏
  • 举报
回复
看到了“虚拟ip”就放心了。
  • 打赏
  • 举报
回复
第二,实际吞吐率跟服务方处理模式有关,无法想象一个专门用来进行长连接双向通讯的高效率通讯机制,竟然会被用几乎等于短链接的并且是简单地发个别无意义字节的方式来模拟测试,甚至是使用少量客户端程序——甚至是只支持少量并发线程的浏览器程序——来模拟所谓的上百万并发请求,其实这些结果可能有八成都不可信。
  • 打赏
  • 举报
回复
第一,单纯追求“连接数”这个概念是会被误导的。短链接新能地下,但是正是伴随着所谓的“连接数高”的,因为它建立了连接之后不好好地进行高利用率地通讯、就断开了。所以此时可以说这个连接数是个悖论。所以正常地长连接通讯必定就是比短链接方式,每台服务器的连接数要低很多很多倍。只有这样才能保证高性能!!此时单纯为了连接数而搞某些故意摆好的技术姿势,有可能是个噱头。
圣殿骑士18 2018-12-19
  • 打赏
  • 举报
回复
所谓这种超高连接数的优化我觉得本质应该就是连接缓冲池吧。假设测试的长连接两次通讯间的时间是60s,那么这60s中间有大量的不通讯的时间,那么这段时间中可能有50s可以在服务端将连接释放,供其他长连接使用。
  • 打赏
  • 举报
回复
再来看一个 tcp 长连接数的所谓测试,如果是一个真实业务事务系统,可能支持3000个就是极限了。但是一个故意简化的只胡乱传送1、2个字节的测试用例,不处理业务解析,不进行复杂的业务服务处理,不用真正的300万个远程终端来测试而是用什么3台近处的终端机来”模拟“300万个终端的所谓并发(其实被n层通讯系统排队顺序)操作,这种测试结果看看也就罢了。毕竟都是有特定条件下的宣传。
  • 打赏
  • 举报
回复
短链接时所谓的”更大连接数“如果不适应用户体验性能需求,就需要改变。
  • 打赏
  • 举报
回复
引用 楼主 丰云 的回复:
如果没有搞错的话,我记得服务器的连接资源是很有限的,也就是说,能支持的长链接是非常有限的。 因而在线数很高的服务,都不能用长链接,因此http才得以蓬勃发展。 但现在websocket的出现,似乎打破了这个壁垒,网上看到有人介绍维持百万链接的websocket案例, 觉得非常不可思议。 websocket本质上不是只是借用了http的握手机制的socket长链接吗?为什么可以有这么高的连接数?? 是我哪里理解不对吗?
http 的基础是 tcp 短链接,那么说短链接的所谓的”连接数大于长连接数“其实你一分析就知道,其实这是废话。就算是长连接数可以达到1万亿,那么短链接”连接数“也一定比长连接数高。 所以这既然是一个废话,就是一定会被误导。长连接是为了通讯级高性能、避免多余地握手、双向通讯等要求的。不是空洞地纠结”连接数“的。 比如说我们用30万台服务器撑起一个微信平台,所有点对点的通讯都可以毫秒级地响应。那么就算我们用3000台服务器也可以撑起微信平台,点对点的通讯可以在4小时内保证有响应,这样用更少的服务器能做到”支持更大连接数“又有什么意义呢?
丰云 2018-12-19
  • 打赏
  • 举报
回复
引用 1 楼 by_封爱 的回复:
websocket只是协议上有一些区别 本质就是tcp/ip. 传输的byte[]中多加了一些别的东西. 你说百万?? 这个我觉得不可思议吧.. 我在c#研究过一段socket 百万肯定达不到.. 因为好像要分配端口. 所以当时看到的以及测试的 一台win最多就能维持6W多的长连接..在高的话 客户端连接就没反映了.. 你说的百万链接 能不能给我看一下....
四种框架分别实现百万websocket常连接的服务器 文章说为了突破服务器连接数的限制,使用了虚拟ip的方法,你可以看看
by_封爱 2018-12-19
  • 打赏
  • 举报
回复
websocket只是协议上有一些区别 本质就是tcp/ip. 传输的byte[]中多加了一些别的东西. 你说百万?? 这个我觉得不可思议吧.. 我在c#研究过一段socket 百万肯定达不到.. 因为好像要分配端口. 所以当时看到的以及测试的 一台win最多就能维持6W多的长连接..在高的话 客户端连接就没反映了.. 你说的百万链接 能不能给我看一下....

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧