分布式锁

锁模式

  • Null(NL)

    允许其他进程加锁,避免资源在无锁时销毁

  • Concurrent Read(CR)

    表达读的需求,允许其他进程读写,但是不允许独占

  • Concurrent Write

    表达读和写的需求,允许其他进程读写,但是不允许独占

  • Protected Read

    传统共享锁。表达读的需求,阻止其他进程写

  • Protected Write

    传统更新锁。表达读和写的需求,阻止其他进程写

  • Exclusive

    传统排他锁。阻止其他进程读写

image-20200604212027087

CAP理论:任何一个系统无法同时满足以下三项:

  • 一致性
  • 可用性
  • 分区容错性

20180614145850162

image-20200604215946722

锁:用于多线程环境中,任意时刻只有一个线程访问同步代码块。

实现方式:使用所有线程可见的标记。如Java中synchronized在对象头标记,Lock接口实现使用int型volatile变量,linux内核使用互斥量或信号量等内存数据标记。

对CAP理论,互联网场景中通常牺牲一致性,获得高可用性,实现最终一致性。

最终一致性通常通过分布式事务、分布式锁等实现。问题是在分布式环境下,使标记对多个进程可见。

参考资料

Distributed lock manager

Java分布式锁看这篇就够了

三种实现分布式锁的方式

Welcome to Apache Curator