buguge - Keep it simple,stupid

知识就是力量,但更重要的,是运用知识的能力why buguge?

导航

【不靠谱程序员】不靠谱程序员这样做幂等控制,你接受吗?

批处理定时任务的实现方式,不外乎下面这样。当然,在数据记录较多时,也会采用分页获取数据分批处理。

批处理程序顾名思义涉及到批量数据的处理,程序执行时间一般也比较长。anyway,对于这样的程序,技术上做好防重复请求是一项基本要求。

 

下面REST接口用来暴露给一个定时调度服务来调用。这个接口的业务逻辑是将系统里待付款的交易发往银行。做过支付的同学应该明白,这种程序是必须要做好防重控制的。

当然,你也看到了,这个REST接口并未做幂等控制。当追问编写这段代码的小伙时,他表示,在for循环里,已经用redis对单条做了防重复执行付款的控制,外面接口就无所谓了吧。

这种无所谓的态度,各位看官,你接受吗?

 

接口幂等性和业务防重复处理是两个事情,是程序防重复执行必须要考虑的两个因素。很多时候,我们要同时结合两者来使用,这就是所谓的双重检查。

附:插图素材来自processOn

posted on 2023-11-02 21:22  buguge  阅读(52)  评论(0)    收藏  举报