延时任务-订单超时取消实现_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 延时任务-订单超时取消实现

延时任务-订单超时取消实现

 2018/11/1 15:27:49  andyou2012  程序员俱乐部  我要评论(0)
  • 摘要:1.定时任务JOB定时任务扫描数据库,不详述了。优点:简单易行,支持集群操作缺点:(1)对服务器内存消耗大。(2)存在延迟,比如你每隔3分钟扫描一次,那最坏的延迟时间就是3分钟。(3)数据量大时数据库损耗极大。2.JDK的延迟队列DelayedQueue优点:效率高,任务触发时间延迟低。缺点:(1)服务器重启后,数据全部消失,怕宕机(2)集群扩展相当麻烦(3)因为内存条件限制的原因,比如下单未付款的订单数太多,那么很容易就出现OOM异常(4)代码复杂度较高(5)时间轮算法3
  • 标签:实现 超时
1.定时任务JOB
  定时任务扫描数据库 ,不详述了。

   优点:简单易行,支持集群操作

   缺点:(1)对服务器内存消耗大。
        (2)存在延迟,比如你每隔3分钟扫描一次,那最坏的延迟时间就是3分钟。
        (3)数据量大时数据库损耗极大。

2.JDK的延迟队列DelayedQueue

     优点:效率高,任务触发时间延迟低。

     缺点:(1)服务器重启后,数据全部消失,怕宕机
          (2)集群扩展相当麻烦
          (3)因为内存条件限制的原因,比如下单未付款的订单数太多,那么很容易就出现OOM异常
          (4)代码复杂度较高
          (5)时间轮算法

3.redis缓存
   使用 redis sorted set
      利用redis的zset,zset是一个有序集合,每一个元素(member)都关联了一个score,通过score排序来取集合中的值

添加元素:ZADD key score member [[score member] [score member] …]
按顺序查询元素:ZRANGE key start stop [WITHSCORES]
查询元素score:ZSCORE key member
移除元素:ZREM key member [member …]


      优点:(1)由于使用Redis作为消息通道,消息都存储在Redis中。如果发送程序或者任务处理程序挂了,重启之后,还有重新处理数据的可能性。
     (2)做集群扩展相当方便
     (3)时间准确度高

     缺点:(1)部署redis花费
发表评论
用户名: 匿名