分布式锁
mtsbv110
这个作者很懒,什么都没留下…
展开
-
(一)分布式锁解决方案-初识JVM synchronized
分布式锁一般有三种实现方式:数据库乐观锁; 基于Redis的分布式锁; 基于ZooKeeper的分布式锁单体应用上根据时间戳+num++ 实现唯一ID首先我们定义一个接口public interface IGenerateGlobalId { public String idGenerator(); }实现两个子类,一个是使用synchronized修饰,一...原创 2020-05-08 10:27:28 · 184 阅读 · 0 评论 -
(二)分布式锁解决方案-Zookeeper两种实现方式(zkclient实现)
业务场景在分布式情况,生成全局订单号ID产生问题在分布式(集群)环境下,每台JVM不能实现同步,在分布式场景下使用时间戳生成订单号可能会重复分布式情况下,怎么解决订单号生成不重复使用分布式锁 提前生成好,订单号,存放在redis取。获取订单号,直接从redis中取。使用分布式锁生成订单号技术1.使用数据库实现分布式锁缺点:性能差、线程出现异常时,容易出现死锁...原创 2020-05-08 15:30:21 · 407 阅读 · 0 评论 -
(三)分布式锁解决方案-Zookeeper两种实现方式(ZkCurator实现)
public class ZkCuratorLockUtil { public static String idGenerator(IGenerateGlobalId iGenerateGlobalId,InterProcessMutex lock) { String idGenerator = null; try { lock.acquire(); idGener...原创 2020-05-08 15:32:43 · 283 阅读 · 0 评论 -
(四)分布式锁解决方案-Redis实现方式(Jedis实现)
基于Redis的分布式锁使用常用命令SETNXSETNX key val当且仅当key不存在时,set一个key为val的字符串,返回1;若key存在,则什么都不做,返回0。Expireexpire key timeout为key设置一个超时时间,单位为second,超过这个时间锁会自动释放,避免死锁。Deletedelete key删除key在使用R...原创 2020-05-08 15:36:34 · 368 阅读 · 0 评论