多个团队使用的Slack bot的设计建议

时间:2016-12-02 17:34:52

标签: websocket bots slack-api slack

我正在尝试创建一个Slack bot,我打算通过Slack apps目录分发它。现在让我的机器人在场,我将不得不使用rtm.start API。现在,如果在任何时候我的服务器机队已经允许说100,000(如果我开始托管机器人可以达到100分钟)web-sockets连接。我正在为我的服务器寻找干净的设计,这应该是可扩展的,最重要的是它应该能够保持我的机器人的存在始终可用(即使在服务器重启期间)。

这就是我的想法:

  • 从1台以上的服务器到同一个Slack团队重复连接(如何将OAuth令牌放入数据库并在建立连接时更新计数器?) 重新扫描所有预先存在的连接并再次建立连接。
  • 在部署期间一次只重启一台服务器

但是后来我不确定如何在服务器重启后重新建立WebSocket连接。当所有僵尸程序脱机时,网络中断事件会发生什么,重新建立预先存在的连接的有效方法是什么。

我看了这个SO post,但遗憾的是它不那么详细/有用

1 个答案:

答案 0 :(得分:0)

您可以托管多个服务器并为相同的团队打开套接字    所有复制品(如果机器人的存在太过关键,那么至少应该去    三个复制品)

现在正在为每个频道收听松弛的RTM事件    多个服务器,因此您必须确保每个查询都得到回复    只有一次这样,您可以使用任何强大的消息队列来处理    此

单个服务器可以处理许多WebSockets(测试到40k以上    Node.js的它可以处理得更多,但延迟随着增加而增加  连接),但你应该考虑负载平衡你的负载  因为一旦你得到你将会超出你的记忆/ IO资源    多个同时请求。

因此,在多个服务器副本和使用之前使用Load Balancer    消息队列,用于处理消息并逐个部署副本    您将始终具有连接性,并且可以在负载平衡时更快地提供查询。