【问题标题】:How to managing a large number of clients in the socket programmingsocket编程中如何管理大量客户端
【发布时间】:2020-05-03 20:50:01
【问题描述】:

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

我想到的问题是:当客户端数量很大时,如何从客户端接收并保存在数据库中并发送给客户端? (我的意思是,客户数量如此之多,单台服务器无法单独满足他们的需求,需要多台服务器连接socket)。

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

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

我正在寻找一个视角,而不是代码。

【问题讨论】:

  • 并发google吧
  • @ashwinvinod 你推荐用什么标题搜索?
  • 我建议在发布问题时使用空格并将句子分成几部分。此外,通读可能会帮助您发现一堆语法问题。

标签: python sockets serversocket


【解决方案1】:

首先阅读C10K problem,然后继续阅读C10M problem

【讨论】:

  • 谢谢!你知道 Github 上有一个和我的问题类似的项目吗?
【解决方案2】:

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

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

【讨论】:

  • 但是服务器服务数据库不会降低性能吗?什么时候应该要求服务器监听?你能再解释一下吗?但是服务器服务数据库不会降低性能吗?什么时候应该要求服务器监听?能再解释一下吗?比如,服务器是不是一直在无限循环中检查数据库?
  • 你用的是什么数据库?
  • 大多数数据库都有类似于“操作”日志或“操作日志”的内容。此 oplog 将包含对数据库的任何更改。大多数数据库都允许访问它,您可以观察特定表/集合以通过订阅插入新条目/文档。这将要求您的服务器通过 websocket 连接。如果您通过 http 连接,那么您最好的选择是按指定的时间间隔进行轮询。如果你有一个相当大的服务器运行你的数据库,它应该能够每秒或 5 秒处理几个查询,但你认为有必要。智能查询新的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-10
  • 1970-01-01
  • 2014-10-19
  • 2015-02-24
  • 2013-09-25
相关资源
最近更新 更多