为什么要使用分布式锁 为了保证一个方法在高并发情况下的同一时间只能被同一个线程执行,在传统单体应用单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLcok或synchronized)进行互斥控制。但是,随着业务发展的需要,原单体单机部署的系统被演化成分布式系统后,由于分布 ...
分类:
其他好文 时间:
2018-09-06 18:15:45
阅读次数:
116
1.分库分表。 2.b树与hash索引的区别 3.zk的分布式原理 4.设计模式:单例,工厂模式 5.Redis分布式锁 6.lru最近最少使用淘汰算法 自己实现一下 7.new ArrayList(100)/new HashMap(100)扩容几次 8.同步的三种方式 9.创建对象的两种方式 10 ...
分类:
其他好文 时间:
2018-09-03 22:30:34
阅读次数:
201
大多数互联网系统都是分布式部署的,分布式部署确实能带来性能和效率上的提升,但为此,我们就需要多解决一个分布式环境下,数据一致性的问题。 当某个资源在多系统之间,具有共享性的时候,为了保证大家访问这个资源数据是一致的,那么就必须要求在同一时刻只能被一个客户端处理,不能并发的执行,否者就会出现同一时刻有 ...
分类:
其他好文 时间:
2018-09-03 17:19:44
阅读次数:
150
前言 分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细 ...
分类:
编程语言 时间:
2018-08-31 19:29:26
阅读次数:
165
网上到处都是分布式锁的代码,基本都是通过setNX 和 expire 这两个不是院子操作,然后各自发挥,用setNX的value当做过期时间等等。但是好像都不太好,或者多少有点问题。 从一个大神那里得来的代码 获取锁,通过一个条指令来获取并且同时设置超时。 另外,解锁是通过获取锁的时候设置的key ...
分类:
编程语言 时间:
2018-08-29 14:11:46
阅读次数:
194
原文:https://blog.csdn.net/Kincym/article/details/78697472 关于redisson的源代码请参考官网:https://github.com/redisson/redisson redisson官方讲解参考:https://github.com/re ...
分类:
其他好文 时间:
2018-08-28 14:25:36
阅读次数:
160
原文:https://blog.csdn.net/qq1010267837/article/details/79697572 依赖jar包 compile group: 'redis.clients', name: 'jedis', version:'2.8.1'compile group: 'or ...
分类:
其他好文 时间:
2018-08-28 14:25:01
阅读次数:
1005
为什么要有分布式锁? 比如说,我们要下单,分为两个操作,下单成功(订单服务),扣减库存(商品服务)。如果没有锁的话,同时两个请求进来。先检查有没有库存,一看都有,然后下订单,减库存。这时候肯定会出现错误。我们想要的结果是。只有一个请求可以进来。当完成这个操作之后,下一个请求再进来。这才不会出现库存卖 ...
分类:
编程语言 时间:
2018-08-27 01:06:06
阅读次数:
250
大多数互联网系统都是分布式部署的,分布式部署确实能带来性能和效率上的提升,但为此,我们就需要多解决一个分布式环境下,数据一致性的问题。 当某个资源在多系统之间,具有共享性的时候,为了保证大家访问这个资源数据是一致的,那么就必须要求在同一时刻只能被一个客户端处理,不能并发的执行,否者就会出现同一时刻有 ...
分类:
其他好文 时间:
2018-08-24 14:05:52
阅读次数:
151
大多数互联网系统都是分布式部署的,分布式部署确实能带来性能和效率上的提升,但为此,我们就需要多解决一个分布式环境下,数据一致性的问题。 当某个资源在多系统之间,具有共享性的时候,为了保证大家访问这个资源数据是一致的,那么就必须要求在同一时刻只能被一个客户端处理,不能并发的执行,否者就会出现同一时刻有 ...
分类:
其他好文 时间:
2018-08-24 13:18:05
阅读次数:
171