首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

聊聊“幂等”

幂等的定义

从数学的角度来说,就是无论处理多少次,返回的结果和处理一次是一样的,比如:1的n次方和1。

幂等性是系统对外的一种承诺而不是实现,承诺只要接口调用成功,外部系统调用一次和多次的影响是一致的。声明为幂等的接口认为外部系统调用失败是常态,并且失败之后一定会有重试。

操作的幂等说明

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

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

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

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

幂等的业务场景

账户资金的加减操作;

电商订单的创建;

页面的多次提交问题;

并发下的计数问题;

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

幂等的解决方案

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

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

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

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

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

总结

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

整理了下之前的大数据知识分享,空了记得复习哦!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180212G0B6ZU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券