【问题标题】:Cassandra for storing payment informationCassandra 用于存储支付信息
【发布时间】:2011-10-21 19:52:34
【问题描述】:

我正在尝试构建一个高度可用的大容量购物车应用程序。该应用程序的容量很大,我正在考虑使用 cassandra 而不是 mysql 作为数据库。

现在,在购物车系统中,大多数数据库操作必须 100% 一致,而其他则不必。

100% 一致操作示例: 保存付款确认。 保存购买的商品列表。

不需要 100% 一致行动的示例: 保存客户的地址(如果付款时,数据库中没有保存地址,假设丢失,再次询问客户)。 其他类似的东西。

现在,如果我在同一区域 (Amazon EC2) 中运行服务器集群,是否有任何主要障碍将所有事务作为最大一致事务执行。这会提供与 mySQl 关系数据库相同的可靠性吗?请记住,我们在这里处理的是金融交易。

我的数据在 cassandra 中通常“安全”吗?我的意思是完全意外的电源故障、随机磁盘故障等。

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    具体到您关于可用性和 EC2 的问题......正如 Theodore 所写,Cassandra 中的一致性级别将决定数据的“安全性”程度。您将面临的问题是如何确保数据到达 Cassandra、实现您的事务目标并得到适当的保存。

    在 Apache Cassandra 用户的邮件列表中有一些关于事务和解决此问题的好帖子。

    Cassandra 本身不适合交易:

    要解决这个问题,您需要“某种东西”,可以利用 Cassandra 作为数据存储来管理数据层之上的事务。

    总结...您不能单独保证与 Cassandra 的金融交易

    【讨论】:

      【解决方案2】:

      定义一致性的方法有很多种。如果通过“最大一致性事务”,您的意思是在 ConsistencyLevel ALL 上进行读取和写入,那么这将提供一致性,即您的读取将永远不会返回过时的值,并提供持久性,即您的写入将存储在返回之前的所有节点。

      但是,这与 事务 不同。 Cassandra 不支持事务。它不像 MySQL 那样提供不同行之间的一致性。例如,假设您将商品添加到购物篮,并更新购物车中的总成本。单独地,每个操作都将被一致且持久地存储。但是,可能会有一个时间窗口,您可以在其中看到一个更改,但看不到另一个更改。在关系数据库中,您可以将它们分组到一个事务中,这样您就只能看到两者,或者都不能看到。

      就安全而言,Cassandra 在执行任何其他操作之前将所有写入磁盘的内容存储在提交日志中,就像关系数据库使用事务日志一样。因此,对于系统崩溃,它同样安全。关于节点故障,如果你写在 CL.ALL,那么只要每个副本集中的一个节点存活,你就永远不会丢失数据。关于磁盘故障,这与您的底层硬件设置有关,例如RAID。

      【讨论】:

      • 感谢您提供了很多清晰的信息。为了弥补交易不足的问题,可以采取以下措施:我创建了一个名为“locks”的 cassandra 表。当我想在数据库上执行事务时,我将代表我将写入的行的 uuid 添加到 locks 表中。在我用 QUORUM 写完感兴趣的行之后,我从 locks 表中删除了 uuid。如果同时尝试独立查询,它将首先检查锁表中是否存在相关的 uuid,如果存在则不允许。这会允许交易吗?只有非常慢的?
      • 不幸的是,这仍然容易出现以下情况的竞争条件: 1. 客户端 A 检查锁表,但一无所获。 2. 客户 A 读取购物篮。 3. 客户端 B 写入锁表。 4. 客户 B 更新购物篮和总费用。 5. 客户端 B 清除锁。 6、客户端A读取总费用,现在与之前读取的购物篮不一致。如果不使用更强大的分布式协议,例如 Zookeeper 提供的协议(@sdolgy 提到),这个问题就无法解决
      • 我认为您跳过了其中一个步骤。最初的步骤应该是: 1. 客户端 A 检查锁表,但什么也没找到。 2. 客户端 A 在它打算读取或写入的每个项目上插入一个锁。 3. 客户 A 读取购物篮。 3. 客户端 B 检查锁表并在它感兴趣的项目上找到锁,因此它停止。 4. 客户 A 完成操作。
      猜你喜欢
      • 2022-11-10
      • 1970-01-01
      • 2012-01-07
      • 2012-08-26
      • 1970-01-01
      • 2010-11-29
      • 2012-02-28
      • 2015-07-22
      • 2012-08-15
      相关资源
      最近更新 更多