
什麼是幂等性
解釋:
數學方面:幂等元素運作多次,還等于它原來的運算結果。
程式方面:在系統中,一個接口運作多次,與運作一次的效果是一緻的。
為什麼會産生接口幂等性問題
- 網絡波動, 可能會引起重複請求。
- 使用者重複操作,使用者在操作時候可能會無意觸發多次下單交易,甚至沒有響應而有意觸發多次交易應用。
- 使用了失效或逾時重試機制(Nginx重試、RPC重試或業務層重試等)。
-
使用浏覽器後退按鈕重複之前的頁面操作,導緻重複送出表單。
注意:
不是所有接口都要求幂等性,要根據業務而定。
幂等性接口設計
Select操作:不會對業務資料有影響,天然幂等。
select * from user where user_id = 1;
Delete操作:第一次已經删除,第二次也不會有影響。
delete from user where user_id = 1;
Update操作:更新操作傳入資料版本号,通過樂觀鎖實作幂等性。
update user set username = 'zhangsan' where user_id = 1
update user set age = age + 1 where user_id = 1
insert into order(pkid, order_id, xx) values (1, '20210304020226953568', ...);