zookeeper 使用的是zab协议,类似 raft 的 Strong Leader 模式 redis 的哨兵 在 崩溃选举的时候采用的是 raft的那一套term。 因为redis 采用的是异步数据副本的节点同步方式,所以在做分布式锁的时候可能会存在 setNx之后,没有同步到从节点,主节点崩溃 ...
分类:
其他好文 时间:
2019-06-05 20:03:34
阅读次数:
185
[toc] String应用场景 分布式锁 setnx key value,当key不存在时,将 key 的值设为 value ,返回1。若给定的 key 已经存在,则setnx不做任何动作,返回0。 当setnx返回1时,表示获取锁,做完操作以后del key,表示释放锁,如果setnx返回0表示 ...
分类:
其他好文 时间:
2019-06-04 22:13:02
阅读次数:
141
Type 的话是gson的类型,为了实体跟String相互转换,cahekey对应的缓存key 调用的地方 ...
分类:
其他好文 时间:
2019-06-01 17:44:30
阅读次数:
99
1, Curator包含了几个包: curator-framework:对zookeeper的底层api的一些封装 curator-client:提供一些客户端的操作,例如重试策略等 curator-recipes:封装了一些高级特性,如:Cache事件监听、选举、分布式锁、分布式计数器、分布式Ba ...
分类:
其他好文 时间:
2019-05-31 10:18:35
阅读次数:
132
前言 分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细 ...
分类:
其他好文 时间:
2019-05-29 23:20:09
阅读次数:
127
大多数互联网系统都是分布式部署的,分布式部署确实能带来性能和效率上的提升,但为此,我们就需要多解决一个分布式环境下,数据一致性的问题。当某个资源在多系统之间,具有共享性的时候,为了保证大家访问这个资源数据是一致的,那么就必须要求在同一时刻只能被一个客户端处理,不能并发的执行,否者就会出现同一时刻有人 ...
分类:
其他好文 时间:
2019-05-27 22:03:16
阅读次数:
153
Java高级开发常问到的面试题: 1.项目中用到了Spring框架的哪些功能模块? 2.Spring事务及事务传播性、隔离性 3.AOP应用场景及动态代理模式底层实现方式 4.Spring MVC工作流程 5.Redis数据类型、常用命令(比如:List添加)、分布式锁、持久化 6.多线程及线程池 ...
分类:
编程语言 时间:
2019-05-25 12:44:22
阅读次数:
102
1.什么是并发竞争 就是多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了。或者是多客户端同时获取一个key,修改值之后再写回去,只要顺序错了,数据就错了。 2.怎么解决 采用分布式锁+数据修改的时间戳 方案来解决。 ①想要向缓存中写入数据时,必须要获得分布式锁,只有获得锁 ...
分类:
其他好文 时间:
2019-05-24 01:07:43
阅读次数:
121
redis事务 Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 批量操作在发送 EXEC 命令前被放入队列缓存。 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。 一个事务 ...
分类:
其他好文 时间:
2019-05-20 22:46:26
阅读次数:
161
一、缓存更新 一般来说缓存的更新有两种情况: 先删除缓存,再更新数据库。 先更新数据库,再删除缓存。 这两种情况在业界,大家对其都有自己的看法。具体怎么使用还得看各自的取舍。当然肯定会有人问为什么要删除缓存呢?而不是更新缓存呢?你可以想想当有多个并发的请求更新数据,你并不能保证更新数据库的顺序和更新 ...
分类:
其他好文 时间:
2019-05-19 23:23:21
阅读次数:
137