一.分布式锁溯源
分布式锁出现的原因,主要日益流行的分布式系统所需要
下面简单介绍下分布式架构:
1.分布式架构:
就是把所有的功能、模块、业务拆分成不同的子项目,部署在多台不同的服务器上,这些子项目相互协作,共同对外提供服务。
简单来说,就是之前的一个单体应用(后台管理系统),通过拆分,拆分成用户中心、产品中心、客户中心等多个小应用服务,这种把一个大的单体应用项目,拆分成多个小应用项目的方式,就是分布式系统应用
2.分布式和集群区别
集群:
集群就是将相同的程序、功能,部署在两台或多台服务器上,这些服务器对外提供的功能是完全一样的,集群是通过不断横向扩展增加服务器的方式,以提高服务的能力。
分布式:
分布式就是将两个或多个程序、功能分别运行在两台或多台主机服务器上,这些服务器对外提供的功能并不一样,它们通过相互协作最终完成某一个服务或功能。
在服务器部署的代码功能完全一样就是集群
,代码功能不一样就是分布式
3.分布式锁的出现
单服务的时候,锁用synchronized,Lock 就能解决事务并发,但是服务拆分之后,每个服务都是单独的机器,无法解决,所以出现了分布式锁
分布式系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机并发控制锁策略失效,为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁的由来
二.分布式锁的实现
1.分布式锁的作用
- 解决业务层幂等性
- 解决 MQ 消费端多次接受同一消息
- 确保串行|隔离级别
- 多台机器同时执行定时任务
2.常见分布式锁
如何实现分布式锁呢?目前主流的有三种实现方式:
(1)、基于数据库;
(2)、基于redis;
(3)、基于Zookeeper。