高併發情況下如何保證數據的一致性,從哪些放方面下手.

1.業務層面樂觀鎖CAS

業務層面樂觀鎖CAS,使用版本號解決ABA問題,實際使用中使用時間戳,更新的時候把查出來的時間戳帶上,如果更新失敗可以自旋,獲取最近值和時間戳,直到更新成功。


2.DB層面開啓一個事務

DB層面開啓一個事務,然後select一行for update給這一行加上排它鎖,再去更新行,然後提交,其他事務就會阻塞在select for update。


3.分佈式鎖

分佈式鎖適合競爭不激烈的情況保證一致性,因爲性能比較差,按CAP理論來講應該是保證了CP放棄了A,zk或者redis保證一致性P,只有拿到鎖的線程才能執行,保證一致性C.

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