我正在尝试与websockets
建立一个简单的聊天。我还在聊天中显示当前活跃用户,这里是问题的起点:我们使用的是Web场。
用户可以通过loadbalancer
与服务器连接。当新连接到达服务器时,它会增加SQL database
中的计数器,并通过rabbit MQ
通知服务器场中的其他服务器。
所有其他服务器都会获取新数据并将该号码发回给其连接的用户。
如果用户断开连接,则会发生同样的情况:服务器减少SQL数据库中的计数器,并通过rabbit MQ
所有其他服务器都知道这一点。
但是,当服务器死亡时会发生什么? 例如,如果有10个用户将与此服务器连接。当该服务器出现故障时,所有用户都将断开连接,但数据库中的用户不再更新。
获取Web场中活动用户总数的最佳解决方案是什么?并在此金额发生变化时通知用户?
提前致谢!
哦,顺便说一句,我们正在使用signalr
答案 0 :(得分:1)
我认为处理与网格异步断开的节点的典型方法是实现心跳/保持活动机制。在这种情况下,心跳消息将位于服务器之间,并且还必须存在可访问的记录,其中哪些用户连接到哪个服务器。当服务器在一段时间内没有产生心跳时,所有其他服务器都可以更新其记录,并将与服务器关联的所有用户标记为已断开连接。
看起来您可能有一些关于如何跟踪用户的选项(SQL数据库或每个服务器侦听Rabbit MQ消息)。对于心跳,您可以自己实施或尝试查看是否可以使用laodbalancer的检测方法。