美文网首页
商城系统订单超时自动取消解决方案

商城系统订单超时自动取消解决方案

作者: 不能吃的坚果j | 来源:发表于2021-12-17 16:26 被阅读0次

    功能说明

    用户下单后 30 分钟如果没付款自动取消掉,然后释放库存,下面简单介绍订单超时自动取消的几种常用的方案。

    1.定时轮询

    最简单的方法,写好取消订单的逻辑,一般是取订单表待付款状态的订单,然后做遍历取消处理,使用Linux系统的crontab定时执行取消订单功能。

    优点:简单快捷,业务小的可以考虑

    缺点:

    • 由于Linux的限制,只能精确到秒
    • 轮询频率不能自主控制,如果运维和开发分开管理,每次调整需要运维配置修改
    • 如果第一次轮询耗时长,第二次轮询又开始了,会造成任务重复执行
    • 占用数据库资源
    • 不能并发执行

    2.任务调度

    一些web框架会带有任务调度的功能,像php的Laravel框架

    优点:

    • 轮询频率可以做到用代码来控制,不完全依赖系统;
    • 任务可以做到不重复执行

    缺点:跟定时轮询差不多

    3.延迟队列处理

    如果系统有太多的订单需要处理,那么处理的时间就要很长,假如第一次轮询还没结束,第二次又开始了,就会造成任务的重复执行,同时抑制占用数据库资源,造成数据库压力大,用延迟队列做取消订单处理,设定延迟时间为提交订单之后的30分钟执行,效率会高很多,常用的延时队列有

    • redis(订阅键的失效事件)
    • 框架自带的队列(例如Laravel框架自带的队列)
    • rabbitMQ延迟队列

    优点:

    • 不需要对订单表轮询处理,减少数据库压力
    • 不会重复执行
    • 效率高
    • 可配合多线程处理
    • 业务量大的方便做集群
    • 不依赖系统的crontab

    缺点:可能需要额外安装队列程序

    相关文章

      网友评论

          本文标题:商城系统订单超时自动取消解决方案

          本文链接:https://www.haomeiwen.com/subject/ximifrtx.html