接口防重復提交的技術解決方案


無論是http接口,還是rpc接口,防重復提交(接口防重)都是繞不過的話題。

重復提交與冪等,既有區別,又有聯系。冪等的意思是,對資源的一次請求與多次請求,作用是相同的。HTTP的POST方法是非冪等的。如果程序處理不好,重復提交會導致非冪等,引起系統數據故障。防重復提交,要通過技術手段來實現。保證冪等性既要通過技術手段來實現,又要有對業務數據的驗證。

 

常見的B/S場景的重復提交,用戶手抖或因為網絡問題,服務端在極短時間內收到同樣的http請求。

rpc接口的重復提交,一種是不恰當的程序調用,即程序漏洞導致重復提交。在一種,比如拿dubbo來說,因為網絡傳輸問題,會導致重試調用。

 

防重提交的方案,常見的是加鎖。java單體應用可以用語言本身的synchronized鎖機制。分布式系統,一般是借助redis或zk等分布式鎖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM