關於冪等性的解決方案

所謂冪等性,簡單得理解能夠認爲屢次相同參數的調用返回一樣的結果redis

  1. 查詢類

純自然支持冪等性,屢次調用均返回一樣的結果。緩存

  1. 更新類 冪等性的控制主要是在服務提供方進行控制,固然服務調用方也能夠進行一些簡單的控制,好比 failback(失敗當即返回),頁面防止重複調用等。

在服務調用方的完整解決方案能夠這麼來:索引

調用方每次調用均需傳一個惟一的調用流水tradeid。服務提供方每次拿到該流水都去redis查詢是否有該流水,如有該流水證實已調用過,直接返回緩存結果。若不存在則將該tradeid存入redis,並設置有效期。    調用方每次調用均需傳一個惟一的調用流水tradeid。服務提供方每次拿到該流水都去redis查詢是否有該流水,如有該流水證實已調用過,直接返回緩存結果。若不存在則將該tradeid存入redis,並設置有效期。查詢

    其次,有些調用流水是須要長時間保持一致,這時候能夠將該tradeid。做爲惟一性索引入庫,若存在了,那麼確定插不進去。這是第二重保證。filter

關於結果緩存:能夠分紅多級緩存,JVM,REDIS,而後直接查庫。di

冪等性的實現:能夠考慮在中間層操做實現,好比Dubbo的filter。。先獲取具體的調用流水,去查詢。若存在則查詢緩存或者直接查庫返回結果時間

相關文章
相關標籤/搜索