冪等及技術方案

冪等(idempotent)
一個冪等操作的特點是:任意多次所產生的影響均與一次執行的影響相同。
冪等函數,可以使用相同參數重複執行,並能獲得相同結果的函數。

實現冪等的技術方案

  1. 查詢,select就是冪等操作

  2. 刪除

  3. 唯一索引,防止新增髒數據

  4. token機制,防止頁面重複提交

  5. 悲觀鎖,解決併發事務的更新丟失問題

    1. 使用select … for update來執行(select * from employee where id = 1 for update; )
    2. 事務A使用悲觀鎖後,事務B再使用時將會被阻塞
    3. 使用commit可以解除阻塞
    4. 解除阻塞後,事務B可以看到事務A的修改
  6. 樂觀鎖,(邏輯實現,數據庫不提供支持)做法:版本號控制和時間戳控制(每次更新版本號變更)

    1. 樂觀鎖只是在更新數據那一刻鎖表,其他時間不鎖表,所以相對於悲觀鎖,效率更高
    2. 通過版本號實現 update table_xxx set name=#name#,version=version+1 where id=#id# and version=#version#
    3. 通過條件限制 update table_xxx set avai_amount=avai_amount-#subAmount# where id=#id# and avai_amount-#subAmount# >= 0
  7. 分佈式鎖

    1. 通過第三方系統redis或zookeeper,在業務系統插入或更新數據,獲取分佈式鎖,然後操作再釋放鎖。
  8. 狀態機冪等,有限狀態機

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章