Java 面试问题,如何构建一个系统来存储来自 40,000 台桌面客户端的统计数据?应该是实时连接(来源网络)

2018-10-07 12:15:21 +08:00
 knightby
  1. 每个线程维持一个连接是不是不太现实(单机)?
  2. 如果用 http 等短连接,是不是可以不用很多线程?
  3. Java 的面试题,是否可以提到协程?
1310 次点击
所在节点    问与答
3 条回复
Aruforce
2018-10-07 12:21:50 +08:00
Netty..可以维护至少 10 万实时连接……处理好断线重连什么就可以了…不然 4 万个线程分别维护一个连接…… CPU 全用来做线程上下文切换了
byteli
2018-10-07 14:07:12 +08:00
连接不是问题,内核参数(主要是 fd 数量)没问题的话任何一个基于事件循环的语言 /库应该都可以抗住 4 万 tcp 长连接
虽然 4 万客户端比较少,但是也要统计维度有多少,带来的怎么存储和分析是个问题,是清洗后存数据库,还是直接放个时间序列数据库做个监控
find
2018-10-08 21:56:43 +08:00
netty hold tcp 连接,连接的 hold 跟内存有关,内存大的 400 万都没问题,你给的信息太少了,至少包括那些数据啊,每个数据的大小,怎么统计,统计的维度,然后才能做后面的存储计算考虑

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

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

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

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

© 2021 V2EX