为啥需要分布式锁??
前言
最近我产生了很多的好奇,之前在学习一门技术的时候,总想着怎么去使用它,会怎么使用就完事了。到现在才发现,理清一个技术的来龙去脉才是最主要的。为啥需要这项技术?不要这项技术会发生啥?这项技术是必须要的吗?这项技术(思想)的产生对我们的系统带来了哪些改变?**我想,这应该才是学习一门新技术的正确思想导向。话不多少,上重点,为啥需要分布式锁??
传统的单体系统
图解:
从图中可以看出,传统的单体应用模式的锁是直接在服务端的代码中实现。使用lock,synchronized来控制并发请求,完全是没有任何问题的。接下来再看看目前的系统架构。
目前的分布式系统
图解:
从上图可以看出,在分布式背景下,假如多个客服端访问同一个业务逻辑,负载均衡器刚好将请求分发到三个服务器上,且同时执行,是不是就已经产生线程安全问题了呢?即使每个服务器都有lock,synchronized来锁,但是你总不能锁A的时候,又去锁B吧,代码写在A中的,怎么可能去锁B呢?所以这就是问题产生的原因。但是,我非要实现线程安全怎么办呢??
分布式锁的产生
图解:
当有大量请求的时候,为了保证同一时间只执行一个业务逻辑,这个时候就需要服务器(redis/zookeeper)来统筹兼顾这个分布式集群。
结论
分布式锁存在的意义就在于处理分布式下锁安全的问题,类似的还有分布式session等等。希望篇幅不长的文章对大家有点帮助!谢谢大家!!!