幂等的定义
从数学的角度来说,就是无论处理多少次,返回的结果和处理一次是一样的,比如:1的n次方和1。
幂等性是系统对外的一种承诺而不是实现,承诺只要接口调用成功,外部系统调用一次和多次的影响是一致的。声明为幂等的接口认为外部系统调用失败是常态,并且失败之后一定会有重试。
操作的幂等说明
对数据的读操作,在数据不变的情况下,无论执行多少次,返回的结果也是一直的,是天然的幂等性;
对数据的删除操作,也是幂等性的,因为不论是删除一次还是删除多次,实现的效果是一致的;
对于数据的新增操作,因为可能向数据库中插入重复的多条记录,因为不是幂等性的;
对于数据的更新操作,也会出现多次重复被更新的情况,一次也不是幂等性的;
幂等的业务场景
账户资金的加减操作;
电商订单的创建;
页面的多次提交问题;
并发下的计数问题;
大型系统中的消息消费问题;
幂等的解决方案
幂等只是一个承诺,一个概念,保证调用多次返回结果的一致性,具体实现需要考虑多种环境下的高并发情况,并根据不同的场景选择合适的方案;
对于新增的幂等性问题,可以配合数据库的唯一索引进行控制;
对于数据的更新幂等性问题,可以通过悲观锁,乐观锁,缓存的分布式锁来控制并发;
对于页面的多次提交,可以通过token机制进行控制;
消息消费的场景,可以通过在消息上设置一个taskid来进行控制;
总结
幂等性是优秀程序员必备的一个基因,在实现业务过程中,是应该被首先考虑的问题,尤其是在银行,金融的系统里,要同时保证数据的高效和准确性。
整理了下之前的大数据知识分享,空了记得复习哦!
领取专属 10元无门槛券
私享最新 技术干货