knightby
V2EX  ›  问与答

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

  •  
  •   knightby · Oct 7, 2018 · 1689 views
    This topic created in 2867 days ago, the information mentioned may be changed or developed.
    1. 每个线程维持一个连接是不是不太现实(单机)?
    2. 如果用 http 等短连接,是不是可以不用很多线程?
    3. Java 的面试题,是否可以提到协程?
    3 replies    2018-10-08 21:56:43 +08:00
    Aruforce
        1
    Aruforce  
       Oct 7, 2018 via Android   ❤️ 1
    Netty..可以维护至少 10 万实时连接……处理好断线重连什么就可以了…不然 4 万个线程分别维护一个连接…… CPU 全用来做线程上下文切换了
    byteli
        2
    byteli  
       Oct 7, 2018 via Android
    连接不是问题,内核参数(主要是 fd 数量)没问题的话任何一个基于事件循环的语言 /库应该都可以抗住 4 万 tcp 长连接
    虽然 4 万客户端比较少,但是也要统计维度有多少,带来的怎么存储和分析是个问题,是清洗后存数据库,还是直接放个时间序列数据库做个监控
    find
        3
    find  
       Oct 8, 2018
    netty hold tcp 连接,连接的 hold 跟内存有关,内存大的 400 万都没问题,你给的信息太少了,至少包括那些数据啊,每个数据的大小,怎么统计,统计的维度,然后才能做后面的存储计算考虑
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   958 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:58 · PVG 03:58 · LAX 12:58 · JFK 15:58
    ♥ Do have faith in what you're doing.