锁和分布式锁的核心区别主要在于作用范围和适用场景。
锁,我们常用的就是synchronized,ReentrantLock等,他们通常是在单个进程内起作用的同步机制,用于控制对共享资源的访问。多个线程或进程之间可以使用锁来确保对关键资源的互斥访问。
这种锁,主要适用于单体应用,确保在同一JVM进程内多个线程同步共享资源的访问。
分布式锁,作用范围更广泛,可以跨越多个计算机或多个进程,用于协调分布式系统中的不同节点,以确保在全局范围内对共享资源的互斥访问。
分布式锁适用于分布式系统中,各个节点之间需要协调共享资源访问的情况。在分布式环境中,传统的锁机制可能无法有效地处理多节点之间的同步问题,因此需要分布式锁来确保一致性。
所以,普通的锁主要用于单机环境,用于控制同一JVM进程中多个线程对共享资源的互斥访问。而分布式锁则适用于分布式环境,用于协调多个计算机或多个进程之间对共享资源的互斥访问,确保分布式系统的一致性。