Zookeeper实现分布式锁的分析和理解

Zookeeper实现分布式锁 创建临时顺序节点执行create -e -s /znode即可实现分布式锁。 zk中锁的分类 读锁(读锁共享):大家都可以读。上锁前提:之前的锁没有写锁 写锁(写锁排他):只有得到写锁的才能写。上锁...

CAP定理和BASE定理

CAP定理 CAP理论为:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。 —致性(Consistency) 一致性指"all nodespsee th...

Zookeeper的集群搭建和ZAB协议详解

Zookeeper的集群搭建 1)zk集群中的角色 Zookeeper集群中的节点有三个角色: Leader:处理集群的所有事务请求,集群中只有一个Leader Follwoer:只能处理读请求,参与Leader选举 Observer:只能处理读请求,提升...

Redis实现持久化和集群的搭建

一、Redis的持久化方案 1)RDB持久化 RDB(Redis Database Backup file),Redsi数据备份文件或Redis数据快照。 把内存中的所有快照文件称为RDB文件,默认是保存在当前运行目录。 RDB持久化在四种情况下会执行: ...

对CAS的理解和分析

CAS CAS(CompareAndSet 或 CompareAndSwap)又称 无锁,乐观锁,实现方式是非阻塞同步。 CAS指令有三个操作数,分别是内存位置(在Java中可以简单地理解为变量的内存地址,用V表示)、旧的预期值(用A表示)和...

对volatile的理解及DCL的解决方法

volatile的原理 volatile 的底层实现原理是内存屏障,Memory Barrier(Memory Fence) 加入 volatile 关键字后,写指令(被 volatile 修饰的变量在对此变量修改时)会加入写屏障,读指令(被 volatile 修饰的变量...

wait / notify原理

Monitor 中有三个部分:Owner,EntrySet 和 WaitSet。 Owner 是拥有锁的线程地址,EntrySet 是其他线程想要获取锁的列表,WaitSet 是拥有锁的线程一些条件未满足调用 wait() 方法,进入的WaitSet列表,并且释放...

对于synchronized关键字的理解

现象: 两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,最后输出的 counter一定为0 吗? @Slf4j(topic = "c.Test17") public class Test17 { static int counter = 0; ...