【问题标题】:The HBase CheckAndMutate is atomic is it also consistent?HBase CheckAndMutate 是原子的,它也是一致的吗?
【发布时间】:2020-08-25 20:30:05
【问题描述】:

我了解 HBase 使用 Multi-version concurrency control,并且 CheckAndMutate 的文档解释说它是一个原子操作。我不确定这意味着什么?

  • 这是否意味着所有 mutate 操作都以原子方式执行?
  • 是否意味着CHECK也包含在同一个原子伞下?

假设我有:

  • 值为 5 的单元格。
  • 如果值为 5,则 2 个工作人员同时想要更改单元格的值(使用 checkAndMutate
  • worker-1 检查单元格值是否为 5,然后将值设置为 6
  • worker-2 检查单元格值是否为 5,然后将值设置为 7

如果读取包含在同一个原子保护伞下,那么只有一个工作人员会成功。如果读取不包含在原子保护伞下,那么两者都可以成功。

【问题讨论】:

    标签: hbase consistency


    【解决方案1】:

    checkAndMutate 在 HBase 中的工作方式是在 checkAndMutate 操作中的读取之前对需要更新的行进行 写锁。所以,是的,读取也包含在原子性保证中,并且只有一名工作人员会在您提出的场景中成功。

    【讨论】:

      【解决方案2】:

      我无法对此进行测试,但基于此code 基础,我认为 Get 发生在锁定之后,因此上述案例中只有一个工作人员会成功。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-13
        • 2011-12-26
        • 1970-01-01
        相关资源
        最近更新 更多