【问题标题】:Master-less model in Cassandra vs master-slave model in MongoDB?Cassandra 中的无主模型与 MongoDB 中的主从模型?
【发布时间】:2018-07-04 05:29:54
【问题描述】:

我知道在 Mongo 中我们可以有一个 master 和多个 slave,其中 master 将用于写入,slave 将用于读取操作。假设 M1、M2、M3 是以 M1 作为主节点的节点

但我读到 Cassandra 据说是一个无主模型。每个节点都被称为主节点。我没明白是什么意思?

说M1,M2,M3是节点,M1是主节点,M2,M3是Mongo中的从节点 我相信写总是走 M1,读总是走 M2、M3

说 C1、C2、C3 是 Cassandra 中的节点 在这里,我相信写入和读取请求可以到达任何节点。这就是为什么它被称为无主模型。

【问题讨论】:

    标签: mongodb cassandra nosql


    【解决方案1】:

    你是对的,Cassandra 中的节点都是平等的,它们都可以响应用户的查询。这是因为 Cassandra 在 CAP Theorem 中选择了 AvailabilityPartition Tolerance(而 MongoDB 选择了 ConsistencyPartition Tolerance) . Cassandra 可以通过简单地将新节点添加到节点环中来处理更多数据,从而实现线性可扩展性。

    这里的权衡是一致性问题。在 Cassandra 中,他们提供了一种称为 Replication Factor 和 Consistency Level 的解决方案,以尽可能确保一致性,同时保持强大的可用性。

    这里很好地解释了 Cassandra 中的读、写和复制如何工作:brief-introduction-apache-cassandra

    【讨论】:

    【解决方案2】:

    在 Cassandra 中,Masterless 意味着任何人都可以处理请求。接收到请求的节点称为协调节点,其职责是协调读写请求。

    协调节点使用基于仲裁的协议来处理读/写操作。根据一致性级别,从识别出的可能有数据的节点发出R读请求,然后比较数据时间戳,返回最新更新的。

    对于所有响应陈旧数据的节点,然后发送更新请求,以便他们现在可以拥有最新数据,这可能被称为提示修复。

    同样的事情发生在写操作上,它至少要等待 w 节点确认写成功,然后才宣布操作成功。

    特定数字 (r & w) 的选择定义了所使用的一致性级别。假设读写节点数量的总和超过了可用节点总数 (N) (r + w >= N),那么您始终可以保证拥有最新数据,但这是以可用性为代价的。

    类似地,如果 r + w

    【讨论】:

      猜你喜欢
      • 2013-07-26
      • 2011-11-21
      • 2019-01-17
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 2017-05-25
      • 1970-01-01
      相关资源
      最近更新 更多