(1)进程多线程如何互斥?
(2)一个手机上两个APP访问一个文件如何互斥?
(3)分布式环境下多个服务访问一个资源如何互斥?
归根结底,是利用一个互斥方能够访问的公共资源来实现分布式锁,具体这个公共资源是redis来setnx,还是zookeeper,相反没有这么重要。
58到家APP新上线了导入通讯录好友功能,测试的同学发现,连续点击导入会导入重复数据:
解决思路:同一个用户同时只能有一个导入请求,需要做互斥,最简易的方案,使用setnx快速解决。
(1)同一个用户,多个service进行并发操作,service需要先去抢锁
(2)抢到锁的service,才去数据库操作
具体这个锁用setnx,还是zookeeper都不太重要,利用一个互斥方能够访问的公共资源来实现分布式锁,这才是的重点。
转载于:http://www.sohu.com/a/121511814_464071