分布式锁服务
2016-05-20 21:52
211 查看
简介
如果我们的需求很简单,例如对于用户的账户资金,要保证原子性操作。并且不同的客户端在同一时间内只能提交一个对象操作。lock、单例?!在单台上还可以,但是大型web项目上,负载均衡是常用的技术手段手段,同一意义的对象可能存在不同的副本,这时我们又如何保证排他操作。数据库的事务!除了这个,接下来我们引出本章的主题、分布式锁服务。
一个简单的锁服务实现起来并不难,甚至利用memcache很快就能构造一套分布式锁系统。我们只需要在操作对象时写入kv键值对,操作完毕时释放kv,在读取对象时判断kv中是否有数据就可以了,我们甚至还可以给它一个默认的释放时间。
这是一种解决方案,但是如果我们的要求更高一点,我们需要权限认证(例如只能来自xxx域名的请求)、需要上下级节点关联(例如一个用户的资金账户被锁住,同时锁住他的购物车、积分等)、需要监视器回调、甚至需要考虑单点故障问题。那么,虫子在这里推荐另一套方案----zookeeper。
如果我们的需求很简单,例如对于用户的账户资金,要保证原子性操作。并且不同的客户端在同一时间内只能提交一个对象操作。lock、单例?!在单台上还可以,但是大型web项目上,负载均衡是常用的技术手段手段,同一意义的对象可能存在不同的副本,这时我们又如何保证排他操作。数据库的事务!除了这个,接下来我们引出本章的主题、分布式锁服务。
一个简单的锁服务实现起来并不难,甚至利用memcache很快就能构造一套分布式锁系统。我们只需要在操作对象时写入kv键值对,操作完毕时释放kv,在读取对象时判断kv中是否有数据就可以了,我们甚至还可以给它一个默认的释放时间。
这是一种解决方案,但是如果我们的要求更高一点,我们需要权限认证(例如只能来自xxx域名的请求)、需要上下级节点关联(例如一个用户的资金账户被锁住,同时锁住他的购物车、积分等)、需要监视器回调、甚至需要考虑单点故障问题。那么,虫子在这里推荐另一套方案----zookeeper。
相关文章推荐
- SQL Server Concurrency
- 《程序员面试笔试宝典》学习笔记(五)程序设计基础
- Hibernate初探【4】
- SM2算法第十九篇:秘钥交换协议交互了哪些参数?
- 网络地址转换NAT
- 关于《白鹿原》的所思所想
- HDU-4685-Prince and Princess(二分匹配+强连通分量)
- java并发-ReentrantLock的lock和lockInterruptibly的区别
- jQuery最基础最全面的选择器大览
- 第二阶段冲刺(一)
- Hbase过滤器Filter的使用心得(爬坑经验)
- hdu 1241 Oil Deposits
- 设计模式 - Decorator模式
- LeetCode 337
- LeetCode 55
- 括号配对问题
- spark yarn分布式安装
- 牛客网的题,重建二叉树。(用树的先序,中序,还原二叉树)
- POJ 2253 Frogger(翻译/最短路/floyd/思维)
- Java并发教程(Oracle官方资料)