支持 100 万的长连接和并发,需要什么样的服务器架构?

2017-06-19 09:42:43 +08:00
 kkyyyw

如题,物联网项目。工作上需要设计一个能够支持 100 万长连接的架构。

6770 次点击
所在节点    互联网
21 条回复
12liuxiangyu12
2017-06-19 09:46:20 +08:00
难道不是堆机器就好了?
bolide2005
2017-06-19 10:03:37 +08:00
只是单纯实现 1000K 的话并不是太难,一般的异步框架都能实现,主要修改下服务器的文件描述符的上限,然后内存够大就行。具体要看你的业务场景是怎样的了。
scys
2017-06-19 10:06:05 +08:00
并发和长连接是两个概念。
如果没有弄清楚前,最好考虑的是,10 万左右这种好现实的
ryd994
2017-06-19 10:43:23 +08:00
你先实现一个能支撑 1 千并发的然后根据压测再优化
kkyyyw
2017-06-19 10:52:05 +08:00
@scys 需求是支持 100 万的设备长连接。。并发肯定也是不低的。
gamexg
2017-06-19 11:01:30 +08:00
只做过单机 10w 的网关类应用,异步+常规优化就行,不需要什么黑科技。
百万的话看起来堆机器就行。
soli
2017-06-19 11:20:59 +08:00
100W 的话,内存大点就好了。

不过,我怀疑带宽先达到瓶颈。
ll3027
2017-06-19 11:36:48 +08:00
物联网需要这么多并发? 100W 还是容易实现的,内存+网络
AntonChen
2017-06-19 11:37:43 +08:00
HTTP 长连接 200 万尝试及调优方法 http://www.linuxde.net/2011/10/1230.html
ixiaohei
2017-06-19 11:50:53 +08:00
100w 现在的框架随便保持了。java 的 netty 可以做,就是修改服务器文件限制数。另外根据 tcp 四元组,一个 ip 和端口最大 64k 链接,你要服务器要加 ip 或者加端口就行。
ixiaohei
2017-06-19 11:56:12 +08:00
不做测试忽视上面 64k 限制。
sagaxu
2017-06-19 11:59:44 +08:00
1M 长连接很容易,关键是设备每隔几秒上报一次?
kkyyyw
2017-06-19 12:02:25 +08:00
@sagaxu 心跳 10 秒一次
kkyyyw
2017-06-19 12:02:58 +08:00
@ixiaohei 我如果用 mina 框架差别大吗?
dragonszy
2017-06-19 12:03:12 +08:00
The Road to 2 Million Websocket Connections in Phoenix
http://www.phoenixframework.org/blog/the-road-to-2-million-websocket-connections
sagaxu
2017-06-19 12:24:11 +08:00
@kkyyyw
10 秒一次,峰值的时候 rps 很可能会超过 30 万,建议使用自定义的二进制协议,http 有点儿重了

netty 或者 mina 都可以,如果熟悉程度差不多,建议 netty,如果都不熟,可以看看 vertx,或者国产的 t-io
hanwujibaby
2017-06-19 12:28:06 +08:00
其实长链不是问题,就我们之前的经验看,主要瓶颈和 @soli 说的一样,带宽会事先达到瓶颈。单机的单宽甚至机房的带宽都会导致你的机器规模扩大,而不是仅仅看单机能抗的长链数。
ixiaohei
2017-06-19 13:41:32 +08:00
Mina 也行,建议压测,java nio 模型很费内存
thomaspaine
2017-06-19 16:00:04 +08:00
mqtt 的方案啊,刚开始折腾直接用 yunba 的服务算了
dozer47528
2017-06-19 16:35:02 +08:00
我用 netty 做过,前人都把坑踩完了,不难:
https://www.dozer.cc/2014/12/netty-long-connection.html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/369445

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX