利用Ehcache实现支付超时限制

本文介绍了如何在支付系统中通过Ehcache实现支付超时限制,以保障系统的稳定性。当用户支付请求过于频繁时,利用Ehcache的缓存超时机制,限制用户在一定时间内只能进行一次支付,防止资源被过度占用。文中详细阐述了问题背景、解决方案以及Ehcache的配置和使用方法。
摘要由CSDN通过智能技术生成

在线支付系统需要极高的稳定性,在有限的系统资源下,稳定性优先级要高于系统并发以及用户体验,因此需要合理的控制用户的支付请求。

实际场景

在一个小规模电商平台上,用户点击购买生成订单后,点击支付按钮后会经过如下过程:
1、系统后台与支付平台对接,获取支付请求。
2、用户终端接受加密过后的请求信息,跳转至支付平台WEB服务页面,开始支付流程。
3、系统发起异步进程轮询支付平台,已获取用户支付的结果(之所以采用轮询,与项目的网络连接不稳定性有关,以及无法溯源有关)。
4、系统异步查询到支付成功的结果后,更新订单状态至已支付。

从这里可以看出,除获取支付请求需要同步处理外,支付结果查询可以做异步处理,用户无需等待查询完成。因此在可以使用之前博客提到的线程池来存储和执行异步任务。详情见:WEB项目中一些简单异步任务的组织与调度方法

问题提出

接上节可以看出由于在用户跳转至支付平台时,系统就为该请求生成了异步任务。为维持系统稳定,任务队列的长度应该做出限制,同时并发线程的数量也应该有约束,因此异步执行的资源有限。所以由于种种原因,比如:
1、顾客提交支付请求失败,反复尝试支付。
2、存在恶意刷单行为,反复发起申请。
等等

就会出现线程池资源被占满的情况。所以需要对此类反复高频率的支付行为作出一定限制。

解决方式-缓存

要解决问题的核心在于一定程度上限制高频支付的行为,因此可以在支付频率上着手,比如让用户在一定时间内只允许进行一次支付(比如60秒)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值