对于无状态的框架 怎么实现统计当前的在线用户呢?

天才之上 2017-08-14 05:33:30
无状态框架对于解决了有状态框架的一些问题,例如传输层面的负载均衡,分布式搭建,提高了可扩展性,但是同样也有相对的缺点,那就是对于一些需啊哟获取当前用户状态的功能 就显得有些无力,例如统计当前在线人数,即时通讯等,我想问题一下 ,在无状态的环境下,怎么实现统计在线用户呢?例如play!? play!的话 我设想 在一个用户请求过来的时候把他的状态存到数据库中,再利用每次请求的cookie来判断用户的活动,一定时间获取不到当期用户的cookie的话认为下线,但是这样的效率好低。有没有其他的方法呢?求大神解答!
...全文
657 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rolf已存在 2017-11-30
  • 打赏
  • 举报
回复
搞什么啊,统计在线人数,登录人数等,当然用listener监听器啊啊
qq_34758244 2017-11-30
  • 打赏
  • 举报
回复
这是个问题啊,好像很难做到用户非正常退出,就不能准确判断用户什么时候退出的,只能给一定的时间,自动的清楚登录信息了
天才之上 2017-09-25
  • 打赏
  • 举报
回复
引用 12 楼 qq_34758244 的回复:
可不可以把token存到redis,用户退出更新redis,如果用户不登出,redis根据用户是否活跃定期更新redis
是的现在基本都是这种解决方案 , 但是如何准确确定用户退出了呢。
qq_34758244 2017-09-23
  • 打赏
  • 举报
回复
可不可以把token存到redis,用户退出更新redis,如果用户不登出,redis根据用户是否活跃定期更新redis
天才之上 2017-08-16
  • 打赏
  • 举报
回复
引用 9 楼 long_539437 的回复:
记得servlet的ServletContext类好像可以做这个事情
这个是不行的 计算不了周期 而且 类似play 这样的无状态框架 已经摒弃servlet API了
天才之上 2017-08-16
  • 打赏
  • 举报
回复
引用 5 楼 evanweng 的回复:
我大概想到的是用缓存去存这些信息
恩 缓存也可以 但是重要的一点是如何去大概的确定一个用户的活动周期,难道要借助cookie,在创建一个代表生命周期的对象,第一次来添加一个唯一标示 ,每次访问刷新生命周期对象的生命么? 那样实现的话 还是比较繁琐的。虽然也可以实现。在这里想和大家一起讨论一下 有没有 更好的方案! 开阔一下 大家的思路!
  • 打赏
  • 举报
回复
记得servlet的ServletContext类好像可以做这个事情
天才之上 2017-08-16
  • 打赏
  • 举报
回复
引用 4 楼 vswen5 的回复:
监听session 可以统计在线人数 问题是不是很准确 或者用socket来统计
无状态的是没有session这个概念的 就算有与有状态的session也不一样吧, 若果说你说的是无状态中的session ,那他并不能作为一个用户状态的体现,就拿play来说 session中的数据紧适用于下次请求,而且在这里他仅代表一个域, 那如何确定用户在线呢 , 这样统计是统计的从头到尾有多少人的访问量吧 ,
天才之上 2017-08-16
  • 打赏
  • 举报
回复
引用 3 楼 zc881124 的回复:
session存放在客户端的话,基于这样的设计,就存在这样的问题,可以考虑放入memcahce中,这样集群的话,也能共享, play框架接触不多。
放到memcahce中 如何判断用户在线呢 也设置一个方法和有生命期限的对象么 在用户来的时候更新生命期限么 那样还需要对每个用户有唯一标识 还要判断每次请求是不是这个客户发的 等一系列问题吧
天才之上 2017-08-16
  • 打赏
  • 举报
回复
引用 2 楼 KIRA_GIRL 的回复:
请问 什么叫无状态框架呢?web请求,没有http session吗?
就算有session 但是都是基于cookie 不保存当前用户的状态的 像有状态的session 在用户活动的时候会一直有效 在用户不活动了 超过session的生命期限了 session会销毁 一个用户对应一个session 无状态的话 就没有这个了
evanweng 2017-08-15
  • 打赏
  • 举报
回复
我大概想到的是用缓存去存这些信息
vswen5 2017-08-15
  • 打赏
  • 举报
回复
监听session 可以统计在线人数 问题是不是很准确 或者用socket来统计
110成成 2017-08-15
  • 打赏
  • 举报
回复
session存放在客户端的话,基于这样的设计,就存在这样的问题,可以考虑放入memcahce中,这样集群的话,也能共享, play框架接触不多。
KIRA_GIRL 2017-08-15
  • 打赏
  • 举报
回复
请问 什么叫无状态框架呢?web请求,没有http session吗?
天才之上 2017-08-14
  • 打赏
  • 举报
回复
求教!!!!!

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧