在项目中经常出现的幂等问题是如何产生,如何解决的呢。
最常见的情况是连点,比如下单操作,如果前端疯狂的点击确定按钮,就会生成很多条记录。
解决方法:最常见的就是交给前端处理,前端控制不让连点,当然这里不细讲,只是提一下。
很显然,我们要控制幂等,就是要让他的有效操作具有唯一性(等同于消息队列中的消息重复消费问题),那么我们可以让前端生成一个唯一标识,在下单的时候传进来,注意,唯一表示的生成不要在请求下单的js里,要在比如进入页面这种情况下。生成了唯一标识就好办了,我们可以下数据库设置唯一索引,幂等问题常常伴随着并发,使用唯一索引不用考虑,如果使用其他的要考虑。当然唯一标识也可以我们后台生成,然后给前端,然后我们把这个放redis啊,下单后清掉,操作就很多种。