Websocket 多个团队使用的Slack机器人的设计建议

Websocket 多个团队使用的Slack机器人的设计建议,websocket,bots,slack-api,slack,Websocket,Bots,Slack Api,Slack,我正在尝试创建Slack机器人,并计划通过Slack apps目录分发它。现在保持我的机器人的存在,我将不得不利用API。现在,如果在任何时候,我的服务器组都有100000个web套接字连接(如果我开始托管Bot,可以增加到100MN)。我正在寻找干净的设计,我的服务器应该是可扩展的,最重要的是,它应该能够保持我的机器人的存在始终可用(即使在服务器重新启动) 以下是我的想法: 从1+台服务器复制到同一个Slack团队的连接(如何将OAuth令牌放入数据库中,并在建立连接时更新计数器?) 重新扫

我正在尝试创建Slack机器人,并计划通过Slack apps目录分发它。现在保持我的机器人的存在,我将不得不利用API。现在,如果在任何时候,我的服务器组都有100000个web套接字连接(如果我开始托管Bot,可以增加到100MN)。我正在寻找干净的设计,我的服务器应该是可扩展的,最重要的是,它应该能够保持我的机器人的存在始终可用(即使在服务器重新启动)

以下是我的想法:

  • 从1+台服务器复制到同一个Slack团队的连接(如何将OAuth令牌放入数据库中,并在建立连接时更新计数器?) 重新扫描所有预先存在的连接并再次建立连接
  • 在部署期间,一次只能重新启动一台服务器
但我不确定在服务器重新启动后如何重新建立WebSocket连接。当所有机器人程序脱机时,网络中断事件会发生什么,重新建立现有连接的有效方法是什么


我看了这个,但不幸的是它没有那么详细/有用

您可以托管多个服务器,并在上为相同的团队打开套接字 所有副本(如果bot的存在过于关键,则至少 三份副本)

现在,当您正在收听slack针对每个频道的RTM事件时 多个服务器,因此您必须确保每个查询都得到答复 只有一次,以便您可以使用任何健壮的消息队列来处理 这个

而且一台服务器可以处理多个WebSocket(在上测试到40k) Node.js。它也可以处理更多的事务,但随着时间的增加,延迟会越来越高 连接,但是你应该考虑负载平衡你的负载 因为一旦您获得 大量的同时请求

因此,在使用多台服务器复制副本和 用于处理消息并逐个部署副本的消息队列
您将始终保持连接性,并且可以在负载平衡的情况下更快地提供查询。

如果Slack中的状态外观不是您必须的,您可能需要查看。它具有几乎相同的功能(例如,您可以创建聊天机器人),但可用于简单的HTTP帖子,因此您不需要为每个机器人管理websocket连接。感谢您花时间回复@ErikKalkoken。我知道Events API,并且能够用它创建成功的原型。然而,对我来说,机器人的存在非常重要:(