之前有写过ZK分布式锁,ZK天然分布式锁所以省去了很多中间操作,还有Redis和数据库两种形式坑填一填,本身没有难度,就是熟悉与否。
巨人肩膀:https://segmentfault.com/a/1190000040211221
1、分布式锁应用的场景有哪些?分布式锁是什么,应该具备哪些特点?
锁的作用是保证多个进程或线程在并发操作操作共享资源时资源的正确性。在分布式应用中,一个服务需要部署多个实例,对于操作分布式环境下的共享资源,就需要使用分布式锁来保证操作的正确性。
分布式锁应该具有特点
(1)互斥
(2)可重入
(3)锁超时
(4)高可用
其中前面几个特点和本地锁具体的特点相同,高可用是分布式锁需要具备的重要的特点。
使用Redis实现分布式锁应该考虑的问题
(1)加锁和解锁过程必须是原子操作(涉及到lua脚本)
(2)保证高可用,使用Redis Cluster集群部署(涉及到节点数据同步带来的问题)
巨人肩膀:https://segmentfault.com/a/1190000041172633
使用数据库实现分布式锁应该考虑的问题
(1)保证高可用,数据库的单点故障问题
(2)性能问题,数据库连接数量对请求的限制
(3)数据库锁的释放
巨人肩膀:https://segmentfault.com/a/1190000040018649
总结一下,都是套路,都是八股,没什么可多说的
不如思考算法