我正在尝试创建一个Slack bot,我打算通过Slack apps目录分发它。现在让我的机器人在场,我将不得不使用rtm.start API。现在,如果在任何时候我的服务器机队已经允许说100,000(如果我开始托管机器人可以达到100分钟)web-sockets连接。我正在为我的服务器寻找干净的设计,这应该是可扩展的,最重要的是它应该能够保持我的机器人的存在始终可用(即使在服务器重启期间)。
这就是我的想法:
但是后来我不确定如何在服务器重启后重新建立WebSocket连接。当所有僵尸程序脱机时,网络中断事件会发生什么,重新建立预先存在的连接的有效方法是什么。
我看了这个SO post,但遗憾的是它不那么详细/有用
答案 0 :(得分:0)
您可以托管多个服务器并为相同的团队打开套接字 所有复制品(如果机器人的存在太过关键,那么至少应该去 三个复制品)
现在正在为每个频道收听松弛的RTM事件 多个服务器,因此您必须确保每个查询都得到回复 只有一次这样,您可以使用任何强大的消息队列来处理 此
单个服务器可以处理许多WebSockets(测试到40k以上 Node.js的它可以处理得更多,但延迟随着增加而增加 连接),但你应该考虑负载平衡你的负载 因为一旦你得到你将会超出你的记忆/ IO资源 多个同时请求。
因此,在多个服务器副本和使用之前使用Load Balancer 消息队列,用于处理消息并逐个部署副本 您将始终具有连接性,并且可以在负载平衡时更快地提供查询。