
1 kiracyan 2019-11-22 10:53:58 +08:00 C10K ? |
3 fancy111 2019-11-22 11:16:51 +08:00 swoole 和 nodejs 就很好的解决了这个问题,当然是用多进程或协程处理多个连接,毕竟用户不是每时每刻都发送数据。 |
4 xiaotianhu 2019-11-22 11:25:47 +08:00 每个开发语言都有对应的框架解决问题啊。 一般都是基于 libevent 事件+异步 就搞定了。 |
5 bobuick 2019-11-22 12:41:36 +08:00 这要求不高. 现在随便拉出来各类语言实现的一些网络库都能达到了. 你也可以自己用 c,或者 cpp 撸一个简单的, 不复杂. 这方面很多开源的最基础的实现, 拿过来自己看看. 下层用 epoll, 我估计单个线程 accept, 然后放线程池里挂载 epoll 进行 epol_ctl 都能达到你要的性能. 已经封装号的多如牛毛, go 的随便 C100k, java 的 netty 也随便能到. 前提是你只是个网络层, 如果把其他逻辑加就另外一回事了 |
6 0ZXYDDu796nVCFxq 2019-11-22 12:52:39 +08:00 via Android C10K 十年前就解决了br />你只需要了解下调用哪些系统接口或者使用哪个库 |
7 sagaxu 2019-11-22 13:09:29 +08:00 via Android 10 年前,处理 C10K 还要点编程技巧。现在嘛,傻乎乎的开 10K 个 Java 线程也就多用个 2.5G 内存。协程或者 async/await 方案已经烂大街,C10K 也早换成 C10M 了。 |
8 ipwx 2019-11-22 13:14:45 +08:00 via Android asio, epoll, kqueue。或者基于这些的库。基本思想是非阻塞,在一个线程里面和尽可能多的客户端通讯。计算交给线程池。 |
9 opengps 2019-11-22 13:17:49 +08:00 via Android 现在做 socket 开发的资料比以前多多了,这些公开资料已经解决了楼主考虑的问题。 关于链接的保活,依赖的是客户端心跳包协议和服务端 keepalive |