在分布式系统中,常常 需要去协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。
分布式锁是: 控制分布式系统之间同步访问共享资源的一种方式。
实现分布式锁的几种方案:
1.基于数据库的实现
基于数据库的悲观锁 for update(行锁)实现(写入的并发的太大)
2.zookeeper实现:(CP)
基于zookeeper的文件系统及通知机制
3.基于redis的实现(推荐):
基于redis单线程模型+setnx
选择redis的原因:
Zookeeper:主要俩个功能: 1.文件管理也叫注册中心(在根目录里面创建节点)
2.也可以作为配置中心
3.watch 监听机制
Zookeeper的四种节点:
顺序节点就是相同的节点后面加上节点以示区分
Zookeeper的常见的指令: