下游传递唯一序列号如何实现幂等性?
生活随笔
收集整理的這篇文章主要介紹了
下游传递唯一序列号如何实现幂等性?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
所謂請求序列號,其實就是每次向服務端請求時候附帶一個短時間內唯一不重復的序列號,該序列號可以是一個有序?ID,也可以是一個訂單號,一般由下游生成,在調用上游服務端接口時附加該序列號和用于認證的?ID。
當上游服務器收到請求信息后拿取該?序列號?和下游?認證ID?進行組合,形成用于操作 Redis 的?Key,然后到 Redis 中查詢是否存在對應的?Key?的鍵值對,根據其結果:
- 如果存在,就說明已經對該下游的該序列號的請求進行了業務處理,這時可以直接響應重復請求的錯誤信息。
- 如果不存在,就以該 Key 作為 Redis 的鍵,以下游關鍵信息作為存儲的值(例如下游商傳遞的一些業務邏輯信息),將該鍵值對存儲到 Redis 中 ,然后再正常執行對應的業務邏輯即可。
適用操作
- 插入操作
- 更新操作
- 刪除操作
使用限制
- 要求第三方傳遞唯一序列號;
- 需要使用第三方組件 Redis 進行數據效驗;
“ 上面步驟中插入數據到 Redis 一定要設置過期時間。這樣能保證在這個時間范圍內,如果重復調用接口,則能夠進行判斷識別。如果不設置過期時間,很可能導致數據無限量的存入 Redis,致使 Redis 不能正常工作。
?
總結
以上是生活随笔為你收集整理的下游传递唯一序列号如何实现幂等性?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 防重 Token 令牌如何实现幂等性?
- 下一篇: 双重检查(Double-Check)