为了账号安全,请及时绑定邮箱和手机立即绑定

面试题,10w台设备要求查询在线状态,应该用什么技术?

面试题,10w台设备要求查询在线状态,应该用什么技术?

翻过高山走不出你 2019-03-01 11:02:08
对于高并发不太了解,这种应该怎么处理?高并发有什么入门书籍吗
查看完整描述

9 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

直接用TCP 长连接~ 智能家居一般 MQTT 协议比较多~~
长连接比轮询省太多资源了~
单机情况下还是可以实现的,当然,算上数据库就另说了。

查看完整回答
反对 回复 2019-03-01
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

是我的话,我会这样做:
新建一个MySQL内存表(ENGINE=MEMORY):
online(user_id, update_time)
用update_time记录用户最近访问时间.
比如可以假设在5分钟以内的用户都认为在线.

查看完整回答
反对 回复 2019-03-01
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

分布式session管理

查看完整回答
反对 回复 2019-03-01
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我出个简单一点方案
给设备安装一个代理进程,设备启动时启动该进程,然后由进程主动定时向服务器上报设备状态,如果超过一定周期没上报就认为该设备已经离线

查看完整回答
反对 回复 2019-03-01
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

高并发,异步通信。java 的话。。。 经典的 netty ?
个人意见,按目前的单机性能,100k并发单机能撑住,分布式处理不是必选项,当然要是算上数据库存储什么的就另说了。

查看完整回答
反对 回复 2019-03-01
?
翻阅古今

TA贡献1780条经验 获得超5个赞

假如不考虑长连接的话,有个思路 利用redis设置一个每个设备上线flag并设置其一个有效时间 客户端每次做上行请求的时候刷新该有效时间 每次统计redis在线状态设备数量就好了 这里关键是这个时间的长度怎么来定 因为一直是做后端的 不清楚这里客户端不活跃的情况下能保持在线多久 是否有类似守护进程之类的

查看完整回答
反对 回复 2019-03-01
?
RISEBY

TA贡献1856条经验 获得超5个赞

把数据存储在redis里面,存取相对于db快

查看完整回答
反对 回复 2019-03-01
  • 9 回答
  • 0 关注
  • 848 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号