起因
在被问到什么是分布式锁的时候,我在想,分布式 锁 ,什么是分布式,这个锁又是个什么玩意,干什么用的,怎么用?麽知,麽知,麽知道...而且在这个问题上还有一个盲区叫`集群`这玩意又是个啥。
分布式锁是什么
概念:分布式是指多个系统协同合作完成一个特定任务的系统。它是不同的系统部署在不同的服务器上,服务器之间相互调用。
多个系统一起做一个任务?
不同的系统之间是怎么相互调用的?
一个系统的任务分给多个系统在多台机器上完成,反过来说就是多个系统做的任务组合到一起成为一个完整的系统任务,那这个`完整的系统`是什么意思,或者说那些分出来的多个系统共同处理的是什么?
我的理解是这个特定的任务里有不同的处理,那要是一个系统做可能处理不了,那就分一下,好几个系统一起干,可能干一样的任务也可能干不一样的任务总之最后的目的是完成这个复杂的任务。
不同的项目也就是发布在不同的服务器上,那不同的服务器肯定有不同的ip地址,这样就可以做到系统间的区别调用。
到目前位置,我理解的所以的程序,最基础最根本的其实就是数据处理,数据逻辑也好,数据增删改查也好,说到底还是对数据的处理,那这个一个机器就是一个系统也好,多个机器组成一个系统也好,那终归是数据处理,所以,也就是把一个数据处理复杂、大的操作分开在不同的系统上操作处理数据。
为什么要用分布式锁
分布式锁常用在分布式系统中,因为分布式系统有时候会同时访问一个资源,对同一个资源进行相同或者不相同增删改查的操作,那么有时候数据处理就有可能会乱、错,怎么样才能规避约束这个问题呢...那就可以用其中一种方法,那就是分布式锁来处理。
分布式锁的作用:
- 数据一致性:在分布式系统中,多个节点可能同时访问和修改共享资源。如果没有适当的同步机制,这些并发操作可能会导致数据不一致。分布式锁可以确保在任意时刻只有一个节点能够访问或修改共享资源,从而保持数据的一致性。
- 避免并发冲突:在分布式系统中,多个节点可能同时执行相同的操作,如更新库存、处理订单等。如果没有分布式锁,这些并发操作可能会导致冲突,如超卖、重复处理等。通过分布式锁,可以确保同一时间只有一个节点执行特定操作,从而避免并发冲突。
- 简化编程模型:在分布式系统中,开发人员需要处理各种并发和同步问题。使用分布式锁可以简化编程模型,使开发人员能够更专注于业务逻辑的实现,而无需过多关注并发和同步的细节。
- 提高系统可靠性:在某些情况下,如节点故障、网络分区等,分布式锁可以确保系统的可靠性和容错性。例如,当某个节点持有锁并失败时,其他节点可以等待锁释放或尝试获取锁以继续处理任务。
- 支持复杂的分布式事务:在分布式系统中,事务可能涉及多个节点和多个操作。使用分布式锁可以支持复杂的分布式事务,确保在事务执行过程中数据的完整性和一致性。