专家原创聊聊“幂等”

Posted VIPTEST

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了专家原创聊聊“幂等”相关的知识,希望对你有一定的参考价值。

这是 VIPTEST 的第 024 期内容



幂等的定义

从数学的角度来说,就是无论处理多少次,返回的结果和处理一次是一样的,比如:1的n次方和1。幂等性是系统对外的一种承诺而不是实现,承诺只要接口调用成功,外部系统调用一次和多次的影响是一致的。声明为幂等的接口认为外部系统调用失败是常态,并且失败之后一定会有重试。

操作的幂等说明


对数据的读操作,在数据不变的情况下,无论执行多少次,返回的结果也是一直的,是天然的幂等性;

对数据的删除操作,也是幂等性的,因为不论是删除一次还是删除多次,实现的效果是一致的;

对于数据的新增操作,因为可能向数据库中插入重复的多条记录,因为不是幂等性的;

对于数据的更新操作,也会出现多次重复被更新的情况,一次也不是幂等性的。


幂等的业务场景


账户资金的加减操作;

电商订单的创建;

页面的多次提交问题;

并发下的计数问题;

大型系统中的消息消费问题。


幂等的解决方案


幂等只是一个承诺,一个概念,保证调用多次返回结果的一致性,具体实现需要考虑多种环境下的高并发情况,并根据不同的场景选择合适的方案;

对于新增的幂等性问题,可以配合数据库的唯一索引进行控制;

对于数据的更新幂等性问题,可以通过悲观锁,乐观锁,缓存的分布式锁来控制并发;

对于页面的多次提交,可以通过token机制进行控制;

消息消费的场景,可以通过在消息上设置一个taskid来进行控制。


总结


幂等性是优秀程序员必备的一个基因,在实现业务过程中,是应该被首先考虑的问题,尤其是在银行,金融的系统里,要同时保证数据的高效和准确性。


——end——


V咖分享会第八期就在今晚八点

扫描下方二维码回复“831”即可报名




VIPTEST

公益之路,持续前行!

以上是关于专家原创聊聊“幂等”的主要内容,如果未能解决你的问题,请参考以下文章

聊聊“幂等”

聊聊接口幂等性设计

聊聊接 API 口幂等性设计

每个工程师都应该了解的:聊聊幂等

聊聊幂等设计

每个工程师都应该了解的:聊聊幂等