我想这个问题如何使用Java分布式锁,先需要知道有哪些分布式锁实现共享文件锁比如NAS、S3上,注意必须是网络文件系统不能是单机文件系统;第一个能写文件成功的客户端能拿到锁;用完清理这里并发场景下原子操作有一定的风险(判断文件是否存在+写文件);。
数据库中一条记录作为锁第一个能写成功记录的人能拿到锁;并发控制通过DB来保证;Redis分布式锁这方面的资料比较多,方案比较轻量,大部分场景都可以适用考虑Redis主从切换异步,不能严格保证锁不会分配给多个客户端。
对锁有严格要求的考虑下面的方案4;ZooKeeper,集群高可用和数据一致性比较好适合分布式锁要求比较准确的场景缺点是支持的锁数量不能太多(百万级别)互联网用户、账号维度作为锁这个方案就不太合适
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。