socket编程中如何管理大量客户端

How to managing a large number of clients in the socket programming

在例子中,我看到socket编程项目(大部分是聊天项目),他们经常将所有客户端保存在一个数组中,当从客户端收到一条消息时,除了将其保存在数据库,也发送给所有客户。

我想到的问题是:当客户端数量非常多时,如何从客户端接收这条消息并将其保存在数据库中并发送给客户端? (我的意思是,客户数量多到单台服务器无法满足他们的需求,需要几台服务器来连接socket)。

在这种情况下,并非所有客户端都可以通过阵列进行管理。那么,如何将现在存储在另一台服务器上(由另一位客户)的消息传输给该服务器上的客户呢? (速度很重要)

有没有办法快速了解数据库更改并将其提供给客户? (例如,电报。)

我要的是观点,而不是代码。

首先阅读 C10K problem and then continue with the C10M problem

您应该使用您的数据库作为您的信息中心。让其他服务器通过订阅或拉动时间间隔来监视数据库中的更改。显然订阅是最快的。

当插入一条消息时,每个服务器都会选择它并发送到它们的客户端列表。这对于广播消息应该是相当快的。