分享到:
发表于 2025-01-22 15:24:25 楼主 | |
故事 然而,好景不长,组长急匆匆地赶来找到了小猫。“赶紧检查一下,A公司的用户反映他们的积分被多扣了。” 小猫回忆了一下,“奇怪,那个接口我没动过啊。前几天,对外平台的老六找我要支付接口,我就给了他以前的代码,那些我都没动过的……” 带着疑惑,小猫翻看着以前的代码,脸色逐渐凝重…… 小猫负责的是一个标准的积分兑换商城系统。以往和客户合作时,客户都直接使用他们单位定制的H5页面。但这次合作的A公司有些特别,他们希望定制个性化的H5页面,并且自身具备开发能力。因此,双方商定以接口形式对接,A公司完成H5开发后进行对接。 经过一番排查,原因逐渐浮出水面。之前业务一直平稳运行,是因为商城的H5页面自带了防重复提交机制。由于之前对接的都是纯 H5,且业务量小,所以没有问题。但这次直接开放了接口,且接口没有实现幂等性…… 小猫无辜“躺枪”,不仅要进行数据修正,还要撰写事故报告。 真是“前人栽树后人乘凉”,但有时候也会变成“前人挖坑后人遭殃”。 幂等接口 何为接口幂等性? 通俗易懂的说法:无论调用多少次,接口的最终结果都是一样的。 那么,为什么需要幂等性呢? 在分布式系统间调用(如RPC)时,为了防止请求因网络波动或超时失败,通常会添加重试机制,这也可能导致请求被多次提交。 分布式系统常用消息中间件,若因网络原因未收到ack,消息会重复投递,进而造成重复提交。 此外,恶意攻击也不容忽视。一些业务接口设计粗糙,黑 客找到漏洞后会发起重复提交攻击。 哪些接口需要幂等性? 幂等性实战策略 技术层面:如限制100ms内同一用户最多提交一次订单。 产品层面:用户点击提交后,按钮置灰。 数据库唯一索引 数据库乐观锁 数据库悲观锁 后端生成Token 分布式锁+状态机 总结 特别是在资金相关接口上,幂等性尤为重要。大家还有其他解决方案或思考吗?欢迎留言交流。 (顺便提一句,技术大厂年前正在招聘,前后端测试岗位都有,感兴趣的朋友不妨一试→https://jsj.top/f/o38ijj) |
|
个性签名:无
|
发表于 2025-02-13 13:52:20 1楼 | |
<顺便和大家分享一下,民族企业大厂,前后端测试捞人,全国各地都有岗位,感兴趣的来试试!→https://jsj.top/f/o38ijj> |
|
针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员 、 查看帮助 或 给我提意见