【问题标题】:Cassandra datacenter replicaton versus Couchbase datacenter replicationCassandra 数据中心复制与 Couchbase 数据中心复制
【发布时间】:2013-03-25 12:34:19
【问题描述】:

我试图了解在 Cassandra 和 Couchbase 中实现的数据中心复制之间的区别。 看起来在 Cassandra 中,如果我有两个数据中心(DC),我的所有数据都会在两个数据中心中复制。在 Couchbase 中,两个 DC 保存不同的数据,并且可以手动配置在不同 DC 之间复制数据子集。 对吗?

客户如何知道数据在 Couchbase 中的位置?如果我在 DC1 中查询 DC2 中保存的数据,会发生什么?

在 Couchbase 中,整个系统如何知道数据的复制位置?

提前谢谢你!

【问题讨论】:

    标签: database cassandra database-replication couchbase


    【解决方案1】:

    Couchbase 跨数据中心复制 (XDCR) 将所有数据从源存储桶复制到目标存储桶(连续)。

    如果您在纽约数据中心有存储桶 A,在旧金山数据中心有存储桶 B,并且您将 XDCR 从存储桶 A 配置到存储桶 B,则存储桶 A 中的所有数据都会复制到存储桶 B。您无法配置任何其他筛选。然而,这种复制只是一个方向。因此,如果您还将数据直接写入存储桶 B,您将不会在两个数据中心中拥有所有数据。如果你想拥有两个数据中心的所有数据,你还需要配置从B桶到A桶的XDCR。这在手册中称为双向复制。在这 2 个集群配置中,它将为您提供所有数据中心中的所有数据。

    Couchbase 客户端 SDK 配置为与单个集群通信。这意味着客户端必须知道要连接到哪个集群,如果您的纽约集群中存储的数据与旧金山集群不同,您的应用程序必须具有知道在哪里查找数据的逻辑。

    对于高可用性用例,通常会在区域之间设置双向复制,并且应用程序被设计为首选集群。部署在纽约附近的应用程序可能更喜欢纽约集群。只要没有问题,它就可以读取和写入该集群。如果出现问题,比如纽约数据中心出现故障,应用程序可以通过切换到旧金山数据中心继续运行。但同样,所有这些逻辑都将在您的应用程序中。

    Robin 提到的“智能集群图”用于在单个集群内查找数据。重要的是要了解这不会定位存储在不同区域的数据。

    【讨论】:

    • 非常感谢!这是我一直在寻找的详尽答案!我要求它准备一篇论文的相关工作。 Unlucky 很难找到对这种 Couchbase 行为的引用。你能推荐任何引用它的文件吗?
    • 您可能已经咨询过manual。另外,您可以观看webinar
    【解决方案2】:

    请注意,最新版本的 Couchbase(4.0 及更高版本)XDCR 确实允许过滤。键名上的简单正则表达式允许选定的数据子集可以在数据中心之间复制。更多信息请访问http://developer.couchbase.com/documentation/server/4.0/xdcr/xdcr-filtering-setup.html

    【讨论】:

      【解决方案3】:

      在 Couchbase 中,跨数据复制工作桶到桶。 Couchbase 允许两种类型的复制 - 双向和单向。如果您使用双向,两个数据集将是相同的。如果您使用单向,理论上您可以拥有一个比另一个大的数据集,但通常不会。

      客户端 SDK 知道数据在 Couchbase 中的位置,因为它使用智能集群映射。此 Cluster Map 始终跟踪数据所在的位置,从而将请求发送到正确的节点。

      【讨论】:

      • 谢谢!所以每个客户端都有一个数据存储位置的完整地图,对吗?如果是这样,客户如何选择更近的数据中心?是不是对客户不透明,对吧?
      • 是的,在当前版本的couchbase 2.0.x中,一个bucket的所有数据都会复制到目标集群中。
      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 2012-01-30
      • 2018-10-14
      相关资源
      最近更新 更多