Wesley13 Wesley13
3年前
java锁学习(二)
类锁类锁!!!!java类有很多对象,但是只有一个class对象!!!!所以,类锁,就是针对当前类的Class对象的锁类锁同一时刻只能被一个对象获取1.synchronized放在static方法上(静态锁)2.synchronized放在class对象上静态锁classSyncClassSt
Stella981 Stella981
3年前
Redis分布式锁,基于StringRedisTemplate和基于Lettuce实现setNx
使用redis分布式锁,来确保多个服务对共享数据操作的唯一性一般来说有StringRedisTemplate和RedisTemplate两种redis操作模板。根据keyvalue的类型决定使用哪种模板,如果kv均是String类型,则使用StringRedisTemplate,否则使用RedisTemplateredis加锁操作必须
Wesley13 Wesley13
3年前
MySQL中的共享锁与排他锁
在MySQL中的行级锁,表级锁,页级锁(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.hollischuang.com%2Farchives%2F914)中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突。行级锁分为共享锁和排他锁两种,本文将详细
Wesley13 Wesley13
3年前
JUC系列
Java的内置锁一直都是备受争议的,在JDK1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略,但是与Lock相比synchronized还是存在一些缺陷的:虽然synchronized提供了便捷性的隐式获取锁释放锁机制(基于JVM机制),但是它却缺少了获取锁与释放锁的可操作性,可中断、超时获取锁,
Stella981 Stella981
3年前
ES利用zookeeper集群组建高可用服务
搭建zookeeper集群:环境准备:准备三台linux服务器。由于zookeeper是java编写的,需要java环境。我这里已经装好jdk1.8.我的三台服务器ip:10.10.10.106、10.10.10.107、10.10.10.1081、下载zookeeper(我使用的是3.4.6)并上传到/usr/local/softw
Wesley13 Wesley13
3年前
Java多线程锁释放
Java多线程运行环境中,在哪些情况下会使对象锁释放?由于等待一个锁的线程只有在获得这把锁之后,才能恢复运行,所以让持有锁的线程在不再需要锁的时候及时释放锁是很重要的。在以下情况下,持有锁的线程会释放锁:(1)执行完同步代码块,就会释放锁。(synchronized)(2)在执行同步代码块的过程中,遇到异常而导致线程终止,锁也会被释放。(exc
Stella981 Stella981
3年前
Spring Boot中建议关闭Open
前言一天,开发突然找过来说KLock(https://gitee.com/kekingcn/springbootklockstarter)分布式锁失效了,高并发情况下没有锁住请求,导致数据库抛乐观锁的异常。一开始我是不信的,KLock是经过线上大量验证的,怎么会出现这么低级的问题呢?然后,协助开发一起排查了一下午,最后经过不懈努力和一探到
Stella981 Stella981
3年前
Redis 事务(8)
为什么要用事务Redis的单个命令是原子性的(比如getsetmgetmset),如果涉及到多个命令的时候,需要把多个命令作为一个不可分割的处理序列,就需要用到事务。例如我们之前说的用setnx实现分布式锁,我们先set,然后设置对key设置expire,防止del发生异常的时候锁不会被释放,业务处理完了以后再del,这三个动作我们就
Wesley13 Wesley13
3年前
Java集群优化——dubbo+zookeeper构建高可用分布式集群
不久前,我们讨论过Nginxtomcat组成的集群,这已经是非常灵活的集群技术,但是当我们的系统遇到更大的瓶颈,全部应用的单点服务器已经不能满足我们的需求,这时,我们要考虑另外一种,我们熟悉的内容,就是分布式,而当下流行的Dubbo框架,不容我们忽视,这里,咱们一起来探讨一下这个框架的使用。一,背景  以前我们需要远程调用他人的接口,我们是这么
京东云开发者 京东云开发者
1个月前
深入理解分布式锁:原理、应用与挑战
作者:京东物流刘浩前言在单机环境中,我们主要通过线程间的加锁机制来确保同一时间只有一个线程能够访问某个共享资源或执行某个关键代码块,从而防止各种并发修改异常。例如,在Java中提供了synchronized/Lock。但是在分布式环境中,这种线程间的锁机制