在多线程的环境下,为保证数据唯一性,例如在高并发情况下,如果多条请求同时传入生成订单号(订单号机制:当前时间点+当日已存在的订单数量),此时极有可能出现订单号相同的情况,如果微服务部署在同一台jvm上边可以使用synchronized或者是添加可重入锁的方式规避这种情况,但是在大型环境下,此时服务部署在不同的服务器上边,并非同一台jvm,所以这时候常规加锁机制无法控制高并发情况,就要用到分布式锁。
分布式锁的三种实现方式:
1.使用MySQL数据库乐观锁的方式实现(线上环境脑子进水才会用,并发量不够);
2.redis实现分布式锁(redis原生代码实现;redission实现)
3.zookeeper实现分布式锁
为什么使用分布式锁
最新推荐文章于 2024-08-15 14:47:41 发布