我现在有一个聊天服务器 A + 40 个小服务器 S1, S2, ..., S40
小服务器需要和聊天服务器创建 2000 个 Socket 连接。每个 Socket 里面的消息传递时间不同,有一些 Socket 里面持续不停有消息流动,有一些 Socket 里面几十分钟发一条消息。但事先不知道哪个 Socket 的消息多。
有以下几个方案:
- 每个服务器启动 50 个进程。每个进程一个 Socket 长连接。每个进程大概占用 15MB 内存。
- 每个服务器启动一个进程,每个进程里面启动 50 个线程,每个线程对应一个 Socket 长连接。
- 每个服务器启动一个进程,进程中创建 50 个协程,每个携程绑定一个 Socket,哪一个携程来了消息就处理哪一个,其他的挂起。
现在我使用的是第一个方案,效率低下。想使用第三个方案。大家有什么忠告提给我吗?