智慧停车(六) 怎么最优实现免费停车时间方案

业务场景如下:车位挡板默认为下降状态,车子初次入场的时候,数据库记录入场时间,这个时间就是免费时间的开始,各个城市各个路段的免费时间策略也不一样,比如在某个地段设置免费时间为10分钟,后台计算当到了10分钟后,会发送指令让挡板上升,这个时间就是收费时间的开始。

后台怎么来监控每个车位的免费时间是否到点,有如下方案:

方案1:定时调度轮询数据库

数据库表会记录开始时间,隔一段时间就轮询一次,计算当前时间和开始时间的差,来确定是否免费时间到点,这种方式数据量小,对时间精准度底的情况下可以使用,针对数据量大的情况,拆分多个定时调度各轮询自己的一部分,甚至可以将数据库数据放入到redis里面加快轮询速度,也只能这样了,考虑到实现和维护以及效率差,有时间差,暂不考虑。

方案2:使用spring + quartz定时任务

使用spring + quartz定时任务(支持任务信息写入mysql,多节点分布式执行任务),每次车主入场开始生成一个某某时间后运行的任务。查阅了相关文档也尝试使用了一把,中途放弃了,受不了那么多数据库表的配置,实现起来有点复杂。

方案3:使用Java的线程休眠或定时器

此方案直接被PASS掉,不支持高可用,节点挂掉或者重启,任务失效。最差的实现方式,切勿使用。

方案4:使用redis的空间键通知

redis的空间键通知是在2.8.0版本以后加入的,客户端通过发布订阅的方式,订阅某个频道,接收通过某种方式影响redis中数据的事件。简单来说,就是设置了Key的过期时间&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值