天猫二面:在高并发下如何保证接口的幂等性?

作者: 今晚不改bug早点睡分类: 计算机技术 发布时间: 2024-03-21 13:59:53 浏览:5021 次

天猫二面:在高并发下如何保证接口的幂等性?

玉白箐蓝:
你这个方法只能叫如何防止重复提交,不叫保证接口的幂等性。 你这个文章开头还在普及幂等概念:多次执行操作的影响与一次执行的影响相同,再看看你获取token方法:如果不存在token就抛异常。 假如我有个提交,不小心连点了两下或者说连续提交了(不管怎么实现的),按幂等性的定义,这两下操作的响应应该是一样的,都返回相同的结果。但是按你的方法,第二次无论如何都会抛异常,返回错误信息。根据定义,你这个叫幂等吗?我看迷瞪了还差不多了。

【回复】首先,新增也是有幂等性的。其次操作,接口,数据是一整个完整的流程,在这整个过程中都得保证幂等性。高并发他确实没说清楚,但是概念就是同时进行多个请求处理,举个例子:一个商品的秒杀,有一万个人抢,这个时候就会存在高并发,但是商品只能被卖一次,所以对于这个商品的操作就存在幂等性,即无论多少人执行购买操作,只会生成一个订单,只会卖出一次
【回复】回复 @Papa-kkkk : 新增操作本身不具备幂等。所以接口的幂等,他的影响范围就只关心操作影响到的数据?对于接口本身,其影响范围是不应该考虑? 另外,标题是高并发,结果视频却是一个重复提交的场景。看了一堆文章视频有时候真搞不懂,什么叫高并发
【回复】理解错了,幂等性的结果一致是指的影响一致,你说的防重复提交是一种实现方式。而不是说几次操作的结果得到的反馈就完全一样。 例如创建订单,重复操作要得到一致的结果是只有一个订单创建成功,而不是我每次操作都告诉我创建成功,甚至在第一次创建成功后,第二次就可以提示你操作太快了或者请勿重复提交订单这样的
夏八区的雨:
不是很懂原子性这个部分,这个redis的get和del不是一定会分开么

【回复】回复 @谭谭谭12311 :所以是要用事务保证get和del命令的原子性么?
【回复】redis是单线程的,如果get和del这两个命令是一次性发送到redis的,就能保证中间不会穿插其他操作

科技猎手 科技 程序员 接口幂等性 如何保证接口幂等性 面试 计算机技术 java 高并发 java面试题

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

更多相关阅读