V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
knightby
V2EX  ›  问与答

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

  •  
  •   knightby · 2018-10-07 12:15:21 +08:00 · 1252 次点击
    这是一个创建于 2033 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 每个线程维持一个连接是不是不太现实(单机)?
    2. 如果用 http 等短连接,是不是可以不用很多线程?
    3. Java 的面试题,是否可以提到协程?
    3 条回复    2018-10-08 21:56:43 +08:00
    Aruforce
        1
    Aruforce  
       2018-10-07 12:21:50 +08:00 via Android   ❤️ 1
    Netty..可以维护至少 10 万实时连接……处理好断线重连什么就可以了…不然 4 万个线程分别维护一个连接…… CPU 全用来做线程上下文切换了
    byteli
        2
    byteli  
       2018-10-07 14:07:12 +08:00 via Android
    连接不是问题,内核参数(主要是 fd 数量)没问题的话任何一个基于事件循环的语言 /库应该都可以抗住 4 万 tcp 长连接
    虽然 4 万客户端比较少,但是也要统计维度有多少,带来的怎么存储和分析是个问题,是清洗后存数据库,还是直接放个时间序列数据库做个监控
    find
        3
    find  
       2018-10-08 21:56:43 +08:00
    netty hold tcp 连接,连接的 hold 跟内存有关,内存大的 400 万都没问题,你给的信息太少了,至少包括那些数据啊,每个数据的大小,怎么统计,统计的维度,然后才能做后面的存储计算考虑
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2198 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:23 · PVG 10:23 · LAX 19:23 · JFK 22:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.