良好的架构适合简单的TCP服务器

我打算在Linux上用C实现一个特殊用途的TCP服务器。 在做了一点研究之后,看起来有几种方法可以做到这一点,包括单线程,每个连接一个线程等等。 对于套接字,有选项,如数据报VSstream,阻塞与非阻塞。

大部分的沟通将如下所示:

Client: request id [request info] Server: status id [response info] 

要么

 Client: request id [request info] Server: status id [response info] Client: additional request id [request info] Server: status id [response info] 

一切都小于1KB,大部分小于512B。 然而,在短时间内可能有很多个人的要求。

那么,如何设置服务器,使其最有效地工作(即不占用资源,不拒绝客户端请求)?

我认为你的问题归结为性能。 可以?

如果是这样,三个问题:

  • 什么是您的服务器将处理的客户端的平均数/最大数量?
  • 连接是持久的还是客户端连接每个X请求?
  • 客户端发送新请求时涉及多少处理?

无论如何,我会开始简单。 使其非阻塞,并单线程。 简介和压力测试它。 然后,如果您对所呈现的表现不满意,请确定根本原因并尝试修复。 作为最终的选择,将其扩展到每个处理器内核的一个工作线程。

如果您不关心可靠性和交付顺序,则可能需要使用UDP。