首页 > 解决方案 > 如何在 Cassandra 中保持绝对一致性?

问题描述

我一直在为银行(宠物项目)定义一个数据模型模式,在那里我遇到了一个极端情况,其中 2 个人同时尝试在帐户中贷记和借记钱。

我曾想过使用 Quorom 级别的一致性,但我认为它不会适用于同时事务。

任何帮助表示感谢

标签: cassandra

解决方案


如果您使用 QUORUM 一致性级别,您的数据将是一致的,但不适用于您的边缘情况。它不处理您的案例的并发性和隔离性,最后一次写入将获胜。

Cassandra 没有像其他关系数据库那样的事务系统,如果这是您需要扩展的系统的核心,也许您必须考虑另一种技术。

您可能对使用轻量级事务(LWT)感兴趣,它可以帮助您实现您想要的。但请注意它的性能,因为其中使用的 paxos 算法使所有节点都进行通信以处理该问题。

这是一篇解释 LWT 的文章: https ://www.datastax.com/blog/2013/07/lightweight-transactions-cassandra-20

我希望这会有所帮助。


推荐阅读