微服务架构——分布式锁探索
本问主要针对zookpeer、redis实现分布式锁进行探讨, 文中有什么不严谨之处,欢迎批评指正。 redis方面:有开源redisson的jar包供你使用。 zookpeer方面:有开源的curator的jar包供你使用 需要说明的是,Google有一个名为Chubby的粗粒度分布锁的服务,然而,Google Chubby并不是开源的,我们只能通过其论文和其他相关的文档中了解具体的细节。值得庆幸的是,Yahoo!借鉴Chubby的设计思想开发了Zookeeper,并将其开源,因此本文不讨论Chubby。至于Tair,是阿里开源的一个分布式K-V存储方案。我们在工作中基本上redis使用的比较多,讨论Tair所实现的分布式锁,不具有代表性。 因此,主要分析的还是redis和zookpper所实现的分布式锁。 1、使用分布式锁的目的: 无外乎就是保证同一时间只有一个客户端可以对共享资源进行操作。通俗的讲,即:一个方法在高并发情况下的同一时间只能被同一个线程执行! 使用分布式锁的原因: (1)提升效率 采取锁定可以避免不必要地执行相同的工作两次(例如,一些昂贵的计算)。如果锁定失败并且两个节点最终完成相同的工作,结果是成本略有增加(最终为云服务支付的费用比您原本要多5美分)或稍有不便(例如用户最终)两次收到相同的电子邮件通知)。 (2)提升正确性