【问题标题】:What are the guarantees of a Hazelcast transaction?Hazelcast 交易的保证是什么?
【发布时间】:2019-09-27 15:28:31
【问题描述】:

Hazelcast 具有事务的概念,您可以以事务的方式将多个条目放入分布式映射中。我想知道,Hazelcast 交易保证了哪些 ACID 属性?

documentation 中,声明事务以特定的隔离级别进行隔离,并且只要您使用TWO_PHASE 事务类型,它们就是持久的。我假设事务也是原子的,因为这是事务的基本概念,但我们最近发现了some cases where they are not。那么根据您的经验 - 我可以依赖 Hazelcast 交易吗?

【问题讨论】:

    标签: transactions atomic hazelcast acid


    【解决方案1】:

    您的问题有点模糊和开放式。失败和/或不遵守记录行为的用例或测试用例将有助于回答。至于 Github 问题,我刚刚更新了票证,这里再次解释一下——为了取消 MapInterceptor 中的 put 操作,您需要抛出异常,请参阅 Javadoc: https://github.com/hazelcast/hazelcast/blob/master/hazelcast/src/main/java/com/hazelcast/map/MapInterceptor.java#L76

    为了符合 ACID,Hazelcast 支持具有不同隔离级别的 ONE_PHASE、TWO_PHASE 和 XA 事务。 XA 事务将有助于在分布式应用程序中保留 ACID 属性。

    【讨论】:

    • 可能github issue中的重现代码不够清晰,但是MapInterceptor.interceptPut()抛出了异常,方法是checkState()(from guava library)。因此,我们似乎按照 Hazelcast 文档中的说明进行操作。此外,当一个节点在操作期间死亡,而不是来自拦截器的异常时,也会发生同样的非原子性。
    猜你喜欢
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2017-05-11
    • 2018-12-23
    • 2011-03-01
    • 1970-01-01
    相关资源
    最近更新 更多