1. 什么是幂等 ?
幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。
2. 幂等特点
在程序设计中,多次执行与一次执行产生的影响结果一样 。
3. 举例说明
例如:用户在一次消费扣款时,无论点击了多少次,或网络震荡引起多次付费请求,一个订单最终的结果也只是完成一次付费。
4. 技术方案
a. 查询操作(在数据不变的前提下,SELECT 为幂等操作)
b. 删除操作(数据删除一次和多次影响的结果是一样的。DELETE为幂等操作)
c.创建唯一索引或唯一组合索引 。通过数据的唯一性,保证在操作时不会产生脏数据,并且程序也会返回相应的约束提醒,当并发出现时,则再查询一次返回结果即可。
d. token机制。请求操作数据前,先获得此次操作的token,然后再与数据共同提交完成token验证,操作完成则token失效。
e. 悲观锁。 select * from tableName where id='唯一标识' ,值得注意的是要建立好主键或唯一索引,否则会引起锁表,影响服务正常运行。
f. 乐观锁。在表中加入 version 字段,操作数据时 update tableName set remark='备注' ,version=version+1 where 1=1 and version='源数据版本' ,仅仅锁定一条记录,所以性能要比悲观锁高一些。
总结:在涉及支付、库存等操作时要重点考虑到幂等,防止出现多次扣费、扣库存等问题影响用户体验。