如何将一个懒散的机器人扩展到1000个团队

为了实现一个懒散的机器人,我需要处理冗余的“实时消息API”。 这是一个基于WebSocket的API,它允许您实时接收Slack的事件并以用户身份发送消息。 更多信息: https : //api.slack.com/rtm

为了只为一个团队创build一个bot,我需要打开一个websocket连接并听取事件。

为另一个团队提供松散的机器人。 我需要打开一个新的websocket连接。 所以,

  • 1队=> 1个websocket连接
  • 2队=> 2个websocket连接
  • N个团队=> N个websocket连接

我应该做什么来扩展我的websocket连接为无尽的团队?

什么样的架构可以处理1000个websockets连接的自动调节?

随着松散的sockets,你有很多事情要扩展:

  • sockets数量。 这很容易,因为即使便宜的服务器也可以处理数千个套接字,比如超过50k。 但是每个套接字都代表了其他types的负载,下面列出。
  • 每个团队使用的内存量,这取决于您自己的服务器实现。 如果您试图在内存中保留大量的消息历史logging,那么与消息处理代码有些无状态相比,您将更快地达到服务器的限制。
  • I / O量,这可能使您想要卸载任何图像服务到一个单独的负载平衡器。

另外要考虑的是容错。 假设您做了粘性负载平衡,并且您的一台服务器正在处理50个小组。 那台服务器是唯一一个处理这50个小组的人,所以如果这台服务器出现故障,那么所有50个机器人都会脱机。 或者,您可以在不同的服务器上为每个团队打开多个套接字,并使用消息处理队列,以便每条消息只响应一次。

所以我build议的体系结构是一个用于RTM套接字的精简的冗余负载平衡器,作为第一层,以及一个可靠的消息队列。