日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

下游传递唯一序列号如何实现幂等性?

發(fā)布時間:2024/4/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 下游传递唯一序列号如何实现幂等性? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

所謂請求序列號,其實就是每次向服務(wù)端請求時候附帶一個短時間內(nèi)唯一不重復的序列號,該序列號可以是一個有序?ID,也可以是一個訂單號,一般由下游生成,在調(diào)用上游服務(wù)端接口時附加該序列號和用于認證的?ID。

當上游服務(wù)器收到請求信息后拿取該?序列號?和下游?認證ID?進行組合,形成用于操作 Redis 的?Key,然后到 Redis 中查詢是否存在對應的?Key?的鍵值對,根據(jù)其結(jié)果:

  • 如果存在,就說明已經(jīng)對該下游的該序列號的請求進行了業(yè)務(wù)處理,這時可以直接響應重復請求的錯誤信息。
  • 如果不存在,就以該 Key 作為 Redis 的鍵,以下游關(guān)鍵信息作為存儲的值(例如下游商傳遞的一些業(yè)務(wù)邏輯信息),將該鍵值對存儲到 Redis 中 ,然后再正常執(zhí)行對應的業(yè)務(wù)邏輯即可。

適用操作

  • 插入操作
  • 更新操作
  • 刪除操作

使用限制

  • 要求第三方傳遞唯一序列號;
  • 需要使用第三方組件 Redis 進行數(shù)據(jù)效驗;
  • 下游服務(wù)生成分布式 ID 作為序列號,然后執(zhí)行請求調(diào)用上游接口,并附帶唯一序列號與請求的認證憑據(jù)ID
  • 上游服務(wù)進行安全效驗,檢測下游傳遞的參數(shù)中是否存在序列號憑據(jù)ID
  • 上游服務(wù)到 Redis 中檢測是否存在對應的序列號認證ID組成的 Key,如果存在就拋出重復執(zhí)行的異常信息,然后響應下游對應的錯誤信息。如果不存在就以該序列號認證ID組合作為 Key,以下游關(guān)鍵信息作為 Value,進而存儲到 Redis 中,然后正常執(zhí)行接來來的業(yè)務(wù)邏輯。
  • “ 上面步驟中插入數(shù)據(jù)到 Redis 一定要設(shè)置過期時間。這樣能保證在這個時間范圍內(nèi),如果重復調(diào)用接口,則能夠進行判斷識別。如果不設(shè)置過期時間,很可能導致數(shù)據(jù)無限量的存入 Redis,致使 Redis 不能正常工作。

    ?

    總結(jié)

    以上是生活随笔為你收集整理的下游传递唯一序列号如何实现幂等性?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。