业务场景:
如果我们用过一些在线客服系统,常常会遇到这样的问题。如果我们3分钟没有跟客服对话了,那么就会弹出一条消息跟你说,你3分钟没有会话了,已经自动离线了。
首先学习一个东西我们要了解这个东西背后的原因,这种产品逻辑主要有2个好处:
1.减少客户端/用户跟服务器的链接,减少服务的压力。一般我们一个机器也就维护几十万的长连接,很多用户都是咨询完不立马关掉窗口的,如果我们一直保持长连接,很消耗机器的性能。
2.更方便于客服资源的分配,例如一个在线客服可能最多同时接待20个用户,及时地发现不活跃的用户,有利于提高在线客服的接待效率。(万恶的资本家)
![c996beba334d26a566c503a658af0977.png](https://i-blog.csdnimg.cn/blog_migrate/eadd97de778f2e3eb38c0ebf179f7686.jpeg)
方案:
从开发人员的角度看来,这个叫做链接超时。实现这个功能,我们一般有下面几种不同的方案:
1.我们创建一个定时器,用一个map来存储所有的用户最活跃的时间,每隔1秒钟检查所有所有的用户,判断用户上一次活跃的时间距离当前时间是否超过3分钟,如果已经超过3分钟,那么就将这个用户淘汰,标记为不活跃。这种实现的优点是实现简单,逻辑也非常简单,缺点是每次都需要轮询,效率太低。而且在map里面淘汰一个元素,可能会涉及到锁的问题,有