1 
                    
                    undefinedsymbol      2019-08-13 12:04:28 +08:00 
                    
                    windows 平台 iocp,linux 平台 epoll,数据可以先做 redis 缓存,然后再落地进 sql 
                 | 
            
     2 
                    
                    securityCoding      2019-08-13 12:14:26 +08:00 
                    
                    io 多路复用肯定是要的. 数据处理可以扔队列异步处理落库 
                我理解的是这场景似乎没有什么难点?不知道楼主的困惑在哪里  | 
            
     3 
                    
                    opengps      2019-08-13 12:20:03 +08:00 via Android    想法没啥大问题,注意扩展成分布式的,不要硬用单机单端口承载 
                 | 
            
     4 
                    
                    Tracy1997   OP @securityCoding 谢谢!但是我这种都是连上不会断开且一直发数据的活跃连接似乎用 select 更好一些? 
                @undefinedsymbol 谢谢!主要想知道自己这种方式够不够好,有没有更好的。 @opengps 谢谢,会再去看看。  | 
            
     5 
                    
                    AlvaIM      2019-08-13 14:03:49 +08:00 
                    
                    小几千台的话机器性能好 select 也能 hold 住, 但是现在 IO 复用的方案很成熟了, 你可以直接上 libevent,libuv ( C, C++)或者 Netty ( Java ) Tornado,Gevent ( Python ),NodeJS,Golang ............. 
                数据现在本地内存处理, 只需要把处理结果用队列发送给数据库做持久化就行了  | 
            
     6 
                    
                    Mirana      2019-08-13 14:16:53 +08:00 
                    
                    裸用 epoll 肯定是可以的 但是为啥不用 libuv libev 这种已经封装好的库呢 
                 | 
            
     7 
                    
                    Twain      2019-08-13 15:21:26 +08:00 
                    
                    golang 或者 c 语言版本的 state threads 
                 | 
            
     8 
                    
                    useben      2019-08-13 16:49:59 +08:00 
                    
                    这并发不高,随便开个 epoll+异步队列+线程池就 ok 了,或者直接上 go 简单多了 
                 | 
            
     9 
                    
                    reus      2019-08-13 16:56:35 +08:00 
                    
                    几千个而已,一个连接一个线程不成问题,用 go 也可以。 
                如果数据库不够快,可以先写入日志文件,顺序写很快的,然后再异步处理入库。 如果是时序数据,直接找个时序数据库入就行,一般都够快的,不用日志。  | 
            
     10 
                    
                    neocanable      2019-08-13 17:00:52 +08:00 
                    
                    几千台的话,select 都能搞定啊,我觉得最简单了,只要 server 端处理的快,应该不成问题,高大上的不如先搞出来,再升级 
                 | 
            
     11 
                    
                    lan894734188      2019-08-13 17:04:22 +08:00 
                    
                    考虑后续扩展性的话就 MQ+中间处理件+redis 缓存+最后数据库 
                 | 
            
     12 
                    
                    lan894734188      2019-08-13 17:06:39 +08:00 
                    
                    1 秒 1 包不是心跳包么… 判断 UpDown 不建议另外程序读写数据库去操作。中间件处理这个性能压力没那么大 
                 | 
            
     13 
                    
                    wlgq2      2019-08-13 18:02:40 +08:00 
                    
                    https://github.com/wlgq2/uv-cpp 
                可以满足你的需求  | 
            
     14 
                    
                    liuminghao233      2019-08-13 18:31:33 +08:00 via iPhone 
                    
                    直接上 go 应该可以粗暴解决问题 
                 | 
            
     15 
                    
                    conn4575      2019-08-14 08:23:58 +08:00 via Android 
                    
                    libuv 或者 tornado,考虑后期后期拓展建议前面加 nginx 代理一下 socket,至少部署两台保证高可用,异步队列处理都是锦上添花看你需求 
                 | 
            
     16 
                    
                    yinqi025      2019-08-14 09:14:15 +08:00 
                    
                    为什么不试试做个缓存??? 
                 |