用户在线状态维护

/用户在线状态维护:/
1、即时通讯,经常需要知道用户是否在线,用户在线状态该如何保存变得尤为重要
2、用户状态保存是思路如下:
A、access服务器长连接客户端tcp,当用户上线后,上报用户上线请求至在线服务器,在线服务器进行更新状态至redis
B、用户主动下线,则通知在线服务器,在线服务器进行更新离线/安全退出状态至redis
C、因网络问题或者因心跳未更新(定时检测),客户端与服务器断开,则更新用户离线至在线服务器,在线服务器进行更新离线状态至redis
3、用户状态异常处理
A、当系统中没有在线状态服务器在线,则正常上报的状态都无法保存至redis,掉线用户无法更新,可以通过业务驱动进行修复在线问题,以下为主要方法:
①、在线状态服务器重启后,用户A给用户B发送消息,业务服务器发现B在线,而后转发消息至B的access服务器(如果此时B服务器不在线,则也需要相应服务器通知在线服务器,更新用户状态。),而B服务器的access服务器发现该用户已经下线,则该access服务器通知在线服务器,B用户已经掉线,在线服务器进行用户状态监测,如果保存的access服务器序号,链接conn_id为redis保存的内容,则更新离线状态至redis。如果不是,而且发现该用户为在线,则不进行更新,说明用户后来主动进行了登录,不能把用户状态记录为离线状态。(优点:服务器进行逻辑监控,缺点:逻辑复杂)
②、在线状态服务器停止后,用户上报用户状态至在线服务器,发现超时响应,则access服务器进行标志,说明服务器已经掉线,用户状态需要重新上报,因此,需要对所有用户默认为离线处理,在线服务器上线后,各个access服务器上报各自在线用户状态,针对在线用户重新写入在线。(优点:逻辑简单,缺点:在线状态服务器都不在线时,需要额外的服务器进行重置所有用户的状态。认为干预较多)
综上所述,使用了服务器检测模型,降低容错率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漫步act

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值