介面冪等性設計

2021-10-10 18:09:35 字數 714 閱讀 4315

在系統中,乙個介面執行多次,與執行一次的效果是一致的

冪等性的核心思想:通過唯一的業務單號保證冪等

update自身帶鎖。直接update不會出現併發修改問題。樂觀鎖是先查詢在修改

update 商品表 set 庫存 = 庫存 - 購買量 ,version = 查詢version值+1 where version = # and 商品id= #

根據唯一業務號去刪除

多次執行刪除,對業務並不會產生影響。

不是根據唯一屬性刪除(如根據狀態刪除)

在第一次刪除後,又有相應的狀態資料產生,再次執行又會進行刪除。可能這時候這些資料是不能刪除的。這就會產生問題。

可以使用token機制,保證冪等性

根據唯一業務號去更新資料的情況

使用者查詢出要修改的資料,系統將資料返回頁面,將資料版本號放入隱藏域。可以使用update的樂觀鎖來實現。

更新操作沒有唯一業務號,可使用token機制

可以token機制

有唯一業務號的insert操作,

沒有唯一業務號的insert操作token特點:要申請,一次有效性、設定有效時長

注意: redis要用刪除操作來判斷token,刪除成功代表token校驗通過,如果用select+delete來校驗token,存在併發問題,不建議使用

介面冪等性

例如 在http協議中,get請求,會得到同樣的資料 bool get money id,amount 1引數 id 使用者的賬戶 amount 表示取多少錢 返回值 true 表示取錢成功 false 表示取錢失敗 情景一 1 一位使用者a 取100塊錢,這個請求,傳送到了伺服器 2 伺服器正常的...

介面冪等性

token機制 服務端提供傳送token的介面,在分析業務的時候,哪些業務是存在冪等問題的,就必須在執行業務前,先去獲取token,伺服器會把token儲存到人redis中 然後呼叫業務介面請求時,把token攜帶過去,一般放在請求頭 伺服器判斷token是否存在redis中,存在表示第一次請求,然...

介面冪等性

冪等性是系統服務對外一種承諾,承諾只要呼叫介面成功,外部多次呼叫對系統的影響是一致的。宣告為冪等的服務會認為外部呼叫失敗是常態,並且失敗之後必然會有重試 select col1 from tab1 wher col2 2,無論執行多少次都不會改變狀態,是天然的冪等。update tab1 set c...