我有 2 个复制因子 = 1 的节点,这意味着每个节点将有 1 组数据副本。
基于以上描述,当我使用 murmur3partitioner 时,
- 数据会在节点之间共享吗?比如节点 1 中 50% 的数据和节点 2 中 50% 的数据?
- 当我读取对节点 1 的请求时,它会在内部与节点 2 连接以保持一致性吗?
我的意图是制作一个副本,两个节点都应该独立地处理请求,而不需要相互通信。
我有 2 个复制因子 = 1 的节点,这意味着每个节点将有 1 组数据副本。
基于以上描述,当我使用 murmur3partitioner 时,
我的意图是制作一个副本,两个节点都应该独立地处理请求,而不需要相互通信。
首先,请尝试在每个帖子中只问一个问题。
我有 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 找到另一个端点,并根据需要使用它。