在负载均衡环境中添加服务器

3
我有两个运行在Redis后面的SignalR ASP.NET服务器,通过负载均衡器运行。
当我的用户连接并登录时,我会在Redis中存储用户和其连接ID之间的关联。当我的用户注销/断开连接时,我会删除这个关联。
当我关闭其中一个服务器时,我的客户端会重新连接到另一个服务器。这会导致另一个关联被建立,但是没有断开事件被触发来清理已关闭服务器上的残留关联。
这很重要,因为这意味着我无法确定客户端是否在线。
我应该如何编写代码来处理关闭的服务器?
2个回答

0

当客户端重新连接到仍然存活的服务器时,您是否会收到"OnReconnected"调用?当客户端重新连接到其他服务器时,您应该采取必要的措施来修复关联。

您不能期望从已关闭的服务器获得通知,它关闭的原因可能有很多。


是的,但也有可能由于某种原因,这些客户端不会重新连接。因此,这种逻辑是行不通的。 - Julien

0

这是我采用的解决方案(我相信可以改进)

当客户端连接时,服务器将连接ID写入以服务器主机名为键的列表中的Redis中。

每个服务器每30秒运行一次任务,将其主机名和当前时间写入Redis。

每个服务器还每30秒运行一次任务,检查在X时间内未更新其时间戳的服务器。

当发现服务器不再“心跳”时,它会拉出已关闭服务器的连接ID并运行清理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接