方案1:数据库的唯一 原理:当想要获得锁时,就向表中插入一条记录,释放锁时就删除这条记录。唯一索引录只被插入一次,那么就可以用这个记录是否存在来判断是否存于锁定。 存在的问题 锁没有失效时间,解锁失败的话其他线程无法再获得锁。 只能是非阻塞锁,插入失败直接就报错了,无法重试。 不可重入,已经获得锁的 ...
分类:
其他好文 时间:
2018-09-22 00:57:21
阅读次数:
245
SETNX key value 起始版本:1.0.0 时间复杂度:O(1) 将key设置值为value,如果key不存在,这种情况下等同SET命令。 当key存在时,什么也不做。SETNX是”SET if Not eXists”的简写。 返回值 Integer reply, 特定值: 1 如果key ...
分类:
编程语言 时间:
2018-09-20 01:11:16
阅读次数:
227
https://mp.weixin.qq.com/s?__biz=MzAxNjM2MTk0Ng==&mid=2247484976&idx=2&sn=a0b6771f0b4e471c710f8cd51c243971&chksm=9bf4b685ac833f936f3722a795ae202a3be37 ...
分类:
其他好文 时间:
2018-09-19 10:15:15
阅读次数:
128
原文链接:https://blog.csdn.net/sinat_25295611/article/details/80420086 https://www.cnblogs.com/yangzhilong/p/7605807.html 业务场景:在电商项目中,往往会有这样的一个功能设计,当用户下单后 ...
分类:
编程语言 时间:
2018-09-18 13:47:50
阅读次数:
297
分布式锁就是多台机器,分布在不同的JVM中,这些不同JVM内的方法需要获取一个唯一锁,比如获取锁之后要把数据写入数据库,保证数据在同一时刻只有一台机器写入数据库。 分布式锁的实现有多种实现方法,除了今天聊到的ZK实现的分布式锁还有Redis通过SETNXPX或Lua脚本实现,还可以通过数据库的锁实现 ...
分类:
其他好文 时间:
2018-09-15 16:40:36
阅读次数:
167
Zookeeper作为一个分布式协调系统提供了一项基本服务: 分布式锁服务 ,分布式锁是分布式协调技术实现的核心内容。像配置管理、任务分发、组服务、分布式消息队列、分布式通知/协调等,这些应用实际上都是基于这项基础服务由用户自己摸索出来的。 1.Zookeeper在大数据系统中的常见应用 zooke ...
分类:
其他好文 时间:
2018-09-15 11:33:16
阅读次数:
164
Zookeeper介绍 Zookeeper是分布式应用程序的协调服务框架,是Hadoop的重要组件。ZK要解决的问题: 1.分布式环境下的数据一致性。 2.分布式环境下的统一命名服务 3.分布式环境下的配置管理 4.分布式环境下的分布式锁 5.集群管理问题 Zookeeper指令与数据结构 Zk数据 ...
分类:
其他好文 时间:
2018-09-13 23:13:29
阅读次数:
251
在JAVA多线程编程中,经常会用到synchronized、lock和原子变量等,分布式系统中,由于分布式系统的分布性,即多线程和多进程并且分布在不同机器中,synchronized和lock这两种锁将失去原有锁的效果,需要我们自己实现分布式锁来处理并发问题。分布式系统处理并发的办法有三种 1.队列 ...
分类:
其他好文 时间:
2018-09-12 20:02:29
阅读次数:
188
https://blog.csdn.net/qq_26525215/article/details/79182687 集成Redis 首先在pom.xml中加入需要的redis依赖和缓存依赖 1 2 3 4 5 6 7 8 9 10 第二个spring-boot-start-cache的依赖,是使用 ...
分类:
编程语言 时间:
2018-09-10 21:23:17
阅读次数:
324
第1章 课程介绍(Java并发编程进阶课程)什么是Disruptor?它一个高性能的异步处理框架,号称“单线程每秒可处理600W个订单”的神器,本课程目标:彻底精通一个如此优秀的开源框架,面试秒杀面试官。本章会带领小伙伴们先了解课程大纲与重点,然后模拟千万,亿级数据进行压力测试。让大家感性认知到Di ...
分类:
编程语言 时间:
2018-09-08 19:00:34
阅读次数:
1600