一.分布式锁溯源

分布式锁出现的原因,主要日益流行的分布式系统所需要

下面简单介绍下分布式架构:

1.分布式架构:

就是把所有的功能、模块、业务拆分成不同的子项目,部署在多台不同的服务器上,这些子项目相互协作,共同对外提供服务。

简单来说,就是之前的一个单体应用(后台管理系统),通过拆分,拆分成用户中心、产品中心、客户中心等多个小应用服务,这种把一个大的单体应用项目,拆分成多个小应用项目的方式,就是分布式系统应用

2.分布式和集群区别

集群:
集群就是将相同的程序、功能,部署在两台或多台服务器上,这些服务器对外提供的功能是完全一样的,集群是通过不断横向扩展增加服务器的方式,以提高服务的能力。

分布式:
分布式就是将两个或多个程序、功能分别运行在两台或多台主机服务器上,这些服务器对外提供的功能并不一样,它们通过相互协作最终完成某一个服务或功能。
 

在服务器部署的代码功能完全一样就是集群,代码功能不一样就是分布式

3.分布式锁的出现

 单服务的时候,锁用synchronized,Lock 就能解决事务并发,但是服务拆分之后,每个服务都是单独的机器,无法解决,所以出现了分布式锁

分布式系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机并发控制锁策略失效,为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁的由来

 

二.分布式锁的实现

1.分布式锁的作用

  • 解决业务层幂等性
  • 解决 MQ 消费端多次接受同一消息
  • 确保串行|隔离级别
  • 多台机器同时执行定时任务

2.常见分布式锁

如何实现分布式锁呢?目前主流的有三种实现方式:

(1)、基于数据库;

(2)、基于redis;

(3)、基于Zookeeper。