美文网首页
zookeeper分布式锁设计(二)

zookeeper分布式锁设计(二)

作者: totohui | 来源:发表于2018-04-16 17:28 被阅读0次

    前面的设计有一个缺点就是锁的粒度比较大。举个例子,有个商品服务-检查库存,订单服务-创建订单,只有当库存大于订单里的商品数量时,才创建订单。

    上面的设计缺陷是,无论订单的商品是否相同,都去获得同一个锁,实际上,不同的商品应该申请不同的锁。

    /locks/distributed_lock -->/locks/distributed_lock[id]

    locks是总节点,永久节点;distributed_lock[id]必须为临时节点,这样在session异常断开的情况下,可以释放锁。

    在AdvancedDistributedLock里需要把原来的计数器

    // 用于挂起当前请求,并且等待上一个分布式锁释放

    private static CountDownLatch zkLatch = new CountDownLatch(1);

    更改为

    private static Map<String, CountDownLatch> zkLatchMap = new HashMap();

    相关文章

      网友评论

          本文标题:zookeeper分布式锁设计(二)

          本文链接:https://www.haomeiwen.com/subject/luvekftx.html