高并发情况下如何保证数据的一致性

1.业务层面乐观锁CAS,使用版本号解决ABA问题,实际使用中使用时间戳,更新的时候把查出来的时间戳带上,如果更新失败可以自旋,获取最近值和时间戳,直到更新成功。
2.DB层面开启一个事务,然后select一行for update给这一行加上排它锁,再去更新行,然后提交,其他事务就会阻塞在select for update。
3.分布式锁适合竞争不激烈的情况保证一致性,因为性能比较差,按CAP理论来讲应该是保证了CP放弃了A,zk或者redis保证一致性P,只有拿到锁的线程才能执行,保证一致性C

posted @ 2020-04-13 10:47  再见傅里叶  阅读(3347)  评论(0编辑  收藏  举报