深入理解接口幂等性

本文详细介绍了接口幂等性的概念及其重要性,分析了需要保证幂等性的场景,如SQL更新操作,讨论了引入幂等性对系统的影响,包括降低执行效率和增加业务复杂性。同时,提出了实现接口幂等性的多种方法,如乐观锁、悲观锁、数据库唯一性索引、分布式锁和Token令牌机制,帮助开发者确保接口在异常情况下的安全性。
摘要由CSDN通过智能技术生成

一. 什么是接口幂等性

幂等性原本是数学上的概念,用在接口上就可以理解为:同一个接口,多次发出同一个请求,必须保证操作只执行一次。它是系统服务对外的一种承诺(注意不是一种实现),接口服务提供方承诺只要调用接口成功了,外部多次调用对系统的影响是一致的。

举一个最常见的例子,用户购买商品后支付扣款成功,但是此时网络发生了异常,导致返回结果失败。因为没收到返回结果,用户就会再次点击付款按钮,就会多付了一笔钱,一旦用户发现余额少了,开发人员就等着被祭天吧,这就是没有保证接口的幂等性。

需要强调一点是,声明为幂等的服务会认为调用方调用失败是常态,并且调用失败后必然会有重试。

现在我们已经知道了什么是接口幂等性,那又有哪些场景需要保证幂等性呢?

二. 需要保证幂等性的场景分析

以 SQL 为例,有下面三种场景,只有第三种场景需要开发人员使用策略来保证幂等性:

1. 场景一:查询

SELECT column1 FROM table1 WHERE column2 = 2

无论执行多少次都不会改变状态,是天然的幂等。

2. 场景二:常量赋值更新

UPDATE table1 SET column1 = 1 WHERE column2 = 2

无论

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盛夏温暖流年

可以赏个鸡腿吃嘛~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值