幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。
发生的场景 : 多数是在添加操作和修改操作。因为添加操作和修改操作对数据做出了改变。而查询没有影响最终的结果。删除是因为多次调用删除方法,第一次返回删除一行,N次点击后,删除的也是一行。
为什么要保证幂等性: 设想实际业务是一笔银行的消费业务,因为当时网络抖动等原因。消费者点击多次支付按钮,扣除多次金额。 这就MMP……
那么我们如何保证幂等:
其实保证幂等性的方式有很多,根据实际需要选择不同的解决方式。
比如: 控制按钮的重复点击的方式,这种方式大多出现在单体架构当中。因为在 微服务 下解决不了实际产生的问题。
设想如果在微服务中,服务之间的调用发生网络抖动引起重试机制。而网络抖动刚好出现在返回结果时,那该如何控制。
所以有了第二种解决方式,全局唯一值。简单地来说解释用唯一值来记录当前的这次操作是否执行成功。而唯一值得的方式也有很多种,比如: 关系型数据库 记录唯一值,非关系型数据库记录唯一值。
关系型数据库和非关系型数据的使用取决于实际的业务需要。如果是分库分表的情况下该如何记录唯一。如果采用 关系数据库 是否能够满足业务需要。
所以,一定要根据业务需要选择合适的方法。

你还不知道什么答案!!