处理大量客户端:UDP 或 TCP



我想创建一个所有客户端都可以连接的通信服务器。我遇到的唯一问题是决定是使用 TCP 还是 UDP。我希望能够同时处理数百个客户端(500 - 1000),每个客户端都有自己的线程来处理它们。TCP或UDP是否能够做到这一点,如果是的话,哪一个适合我的需求?如果有人对处理大量客户的更好方法有任何想法,请告诉我。谢谢。

编辑:服务器基本上是一个消息通信服务器。因此,所有游戏服务器(客户端)都可以向其发送消息,并将其广播给所有其他游戏服务器(客户端)。我希望所有消息传递都尽可能可靠。

TCP和UDP都可以做到这一点。使用哪一个取决于你想要不可靠的数据报还是可靠的流。只有你知道,但几乎可以肯定你应该使用TCP,

这里有三个主要考虑因素。

首先,您需要自己制作这样的服务器吗? 有许多产品(大多数是免费和开源的)几乎可以完成您所描述的:Kafka,Redis,ZeroMQ,RabbitMQ,这只是入门。 如果您想制作一些游戏或其他应用程序,请抓住其中一个并花时间在真正的应用程序上。

其次,您是否需要一个可靠的沟通渠道? 如果是这样,则需要 TCP。 如果没有,那么您需要 UDP。 不要担心哪个更快。 使用适合您需求的一种。 也。。。如果你不是110%确定你需要UDP,那么你肯定需要TCP。

最后,尝试扩展入站网络连接时要拉动的最大杠杆是同步与异步 I/O。 使用前者,您需要为每个入站连接提供一个线程/进程,并且您将快速完成计算机上的资源。 使用后者,您可以使用单个线程处理几乎所有内容,并横向扩展得更大。 比较像Ruby on Rails和Node.js以获得具体的例子。

最新更新