marc45 / lock Goto Github PK
View Code? Open in Web Editor NEW分布式锁,基于zookeeper或者redis
分布式锁,基于zookeeper或者redis
分布式锁的基本实现原理 ----- 网上的大多文章都提到了分布式锁,要么基于zookeeper实现,要么基于redis实现. 写得好的文章,贴个链接: http://rdc.gleasy.com/%E4%B8%A4%E7%A7%8D%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E5%AE%9E%E7%8E%B0%E6%96%B9%E6%A1%882.html 本文就基于简单的demo来展示他们背后的实现原理 ----- zookeeper有三个实现: zk. zk2. zk3. zk 跟 redis的项目结构很像,都是提供了一个LockListener, 使用 public static enum LockStat{ NONEED, SUCCESS } 标明 入锁结果... zk2更简单. 有测试用例,看看代码就懂了. zk3比 zk跟zk2还要强大,加入了读写锁的功能.读锁不阻塞 ----- redis 只有一种实现: /** *使用Redis实现的分布式锁 *基本工作原理如下: *1. 使用setnx(key,时间戮+超时),如果设置成功,则直接拿到锁 *2. 如果设置不成功,获取key的值v1(它的到期时间戮),跟当前时间对比,看是否已经超时 *3. 如果超时(说明拿到锁的结点已经挂掉),v2=getset(key,时间戮+超时+1),判断v2是否等于v1,如果相等,加锁成功,否则加锁失败,等过段时间再重试(200MS) */
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.