1. 程式人生 > >關於冪等性的解決方案

關於冪等性的解決方案

所謂冪等性,簡單得理解可以認為多次相同引數的呼叫返回同樣的結果
  • 查詢類

純天然支援冪等性,多次呼叫均返回同樣的結果。

  • 更新類

  冪等性的控制主要是在服務提供方進行控制,當然服務呼叫方也可以進行一些簡單的控制,比如 failback(失敗立即返回),頁面防止重複呼叫等。

在服務呼叫方的完整解決方案可以這麼來:

    呼叫方每次呼叫均需傳一個唯一的呼叫流水tradeid。服務提供方每次拿到該流水都去redis查詢是否有該流水,若有該流水證明已呼叫過,直接返回快取結果。若不存在則將該tradeid存入redis,並設定有效期。

    其次,有些呼叫流水是需要長時間保持一致,這時候可以將該tradeid。作為唯一性索引入庫,若存在了,那麼肯定插不進去。

這是第二重保證。

關於結果快取:可以分成多級快取,JVM,REDIS,然後直接查庫。

冪等性的實現:可以考慮在中間層操作實現,比如Dubbo的filter。。先獲取具體的呼叫流水,去查詢。若存在則查詢快取或者直接查庫返回結果