锁 是一种用来解决多个执行线程 访问共享资源 错误或数据不一致问题的工具。
如果 把一台服务器比作一个房子,那么 线程就好比里面的住户,当他们想要共同访问一个共享资源,例如厕所的时候,如果厕所门上没有锁...更甚者厕所没装门...这是会出原则性的问题的..
装上了锁,大家用起来就安心多了,本质也就是 同一时间只允许一个住户使用。
而随着互联网世界的发展,单体应用已经越来越无法满足复杂互联网的高并发需求,转而慢慢朝着分布式方向发展,慢慢进化成了 更大一些的住户。所以同样,我们需要引入分布式锁来解决分布式应用之间访问共享资源的并发问题。
一般情况下,我们使用分布式锁主要有两个场景: