1

我有 2 个复制因子 = 1 的节点,这意味着每个节点将有 1 组数据副本。

基于以上描述,当我使用 murmur3partitioner 时,

  1. 数据会在节点之间共享吗?比如节点 1 中 50% 的数据和节点 2 中 50% 的数据?
  2. 当我读取对节点 1 的请求时,它会在内部与节点 2 连接以保持一致性吗?

我的意图是制作一个副本,两个节点都应该独立地处理请求,而不需要相互通信。

4

1 回答 1

4

首先,请尝试在每个帖子中只问一个问题。

我有 2 个复制因子 = 1 的节点,这意味着每个节点将有 1 组数据副本。

不正确。RF=1 表示您的整个集群将拥有 1 个数据副本。

数据会在节点之间共享吗?比如节点 1 中 50% 的数据和节点 2 中 50% 的数据?

这就是它将尝试做的事情。请注意,它可能并不准确。它可能类似于 49/51-ish。

当我读取对节点 1 的请求时,它会在内部与节点 2 连接以保持一致性吗?

RF = 1,不,它不会。根据您的分区键的哈希令牌值,它将仅定向到包含数据的节点。

例如,对于具有 2 个节点的 RF=2,这将取决于为您的操作设置的一致性级别。在 ONE 处读取将始终只读取一个副本。在 QUORUM 处读取将始终从具有 2 个节点的 2 个副本中读取(毕竟 2 的 QUORUM 等于 2)。全部读取将需要所有副本的响应,如果它们不同意,则启动读取修复。

需要注意的是,您不能强制驱动程序连接到特定的 Cassandra 节点。您可以提供一个端点,但它会通过 gossip 找到另一个端点,并根据需要使用它。

于 2018-02-08T18:42:05.770 回答