关于集群并发问题
参考:
http://www.cnblogs.com/PurpleDream/p/5559352.html
http://blog.csdn.net/zxp_cpinfo/article/details/53692922
集群并发问题解决的是因集群部署产生的同步问题。
这里对锁提出几点要求:
1.可以保证在分布式部署的应用集群中,同一个方法在同一时间只能被一台机器上的一个线程执行。
2.这把锁要是一把可重入锁(避免死锁)
3.这把锁最好是一把阻塞锁(根据业务需求考虑要不要这条)
4.有高可用的获取锁和释放锁功能
5.获取锁和释放锁的性能要好
锁机制基本就是这个流程
提供三种解决方案:
1.数据库锁
简单的理解:对需要加锁的方法或资源插入一条唯一的数据到数据库,每次操作前都做这个动作,能够插入成功则表示占用成功,如果失败表示锁被占用。处理完成删除数据释放锁。对数据库存在依赖,需要手动释放锁。
2.缓存锁
redis,memcached都可以实现,可集群,可设置失效时间。
3.zookeeper 这种方式没有研究。有兴趣的可以研究下,上面有参考地址。