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

时间:2016-04-04 22:35:27

标签: node.js websocket autoscaling slack-api slack

要实现一个松散的机器人,我需要处理实时消息传递API'松弛。它是一个基于WebSocket的API,允许您实时从Slack接收事件并以用户身份发送消息。更多信息:https://api.slack.com/rtm

要仅为一个团队创建机器人,我需要打开一个websocket连接并收听事件。

为另一个团队提供slack bot。我需要开一个新的 websocket连接。 所以,

  • 1 team => 1 websocket连接
  • 2支队伍=> 2 websocket连接
  • N队=> N websocket连接

我应该怎样做才能扩展无限团队的websocket连接?

哪种架构可以处理1000个websockets连接的自动缩放?

1 个答案:

答案 0 :(得分:8)

使用松弛套接字,您需要进行大量扩展:

  • 套接字数量。这很容易,因为即使是便宜的服务器也可以处理数千个套接字,例如超过50k。但是每个套接字代表了下面列出的几种其他类型的负载。
  • 每个团队使用的内存量,具体取决于您自己的服务器实现。如果您尝试在内存中保留大量的邮件历史记录,那么与您的邮件处理代码在某种程度上无状态相比,您的服务器上限速度会更快。
  • I / O的数量,可能会让您想要将任何图像服务卸载到单独的负载均衡器。

要考虑的另一件事是容错。让我们说你做了粘性负载平衡,你的一个服务器正在处理50个团队。该服务器是唯一一个处理这50个团队的服务器,因此如果它下降,那么所有50个机器人都会脱机。或者,您可以在不同的服务器上为每个团队打开多个套接字,并使用消息处理队列,以便每个消息只响应一次。

因此,我建议的架构是一个瘦的冗余负载均衡器,用于RTM套接字作为第一层,以及一个可靠的消息队列。