锁:让共享资源按照预期进行执行。
分布式锁:在分布式环境中,让共享资源按照预期进行执行。
分布式问题最终还是单点解决(单点可以是集群)
分布式锁实现方式
分布式问题最后还是用非分布式方式解决
数据库实现
1.设计一张表,通过唯一键做控制。比如插入同一个值到表中, 成功的插入的则取得了权限。非阻塞。
2.select for update 建议添加where条件,并且条件中的字段走索引。不然锁全表。阻塞,试下简单。
redis方式实现
1.使用nx中的redis原子++
2.使用lua脚本
底层使用redis的单线程操作原理。 非阻塞。。。
zk方式实现