首页 文章

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

提问于
浏览
11

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

要仅为 one team 创建机器人,我需要打开 one websocket connection 并监听事件 .

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

  • 1 team => 1个websocket连接

  • 2队=> 2个websocket连接

  • N个队伍=> N个websocket连接

我该怎么做才能为无尽的团队扩展我的websocket连接?

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

1 回答

  • 8

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

    • 套接字数量 . 这很容易,因为即使是便宜的服务器也可以处理数千个套接字,例如超过50k . 但是每个套接字代表了下面列出的其他几种类型的负载 .

    • 每个团队使用的内存量,具体取决于您自己的服务器实现 . 如果您试图在内存中保留大量的邮件历史记录,那么与您的邮件处理代码在某种程度上无状态相比,您将更快地达到服务器的限制 .

    • I / O量,可能会使您想要将任何映像服务卸载到单独的负载均衡器 .

    另一件需要考虑的是容错 . 假设你做了粘性负载 balancer ,你的一个服务器正在处理50个团队 . 该服务器是唯一一个处理这50个团队的服务器,因此如果它下降,则所有50个机器人都会脱机 . 或者,您可以在单独的服务器上为每个团队打开多个套接字,并使用消息处理队列,以便每个消息仅响应一次 .

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

相关问题