以下是关于写入(LINK)
的cassandra文档的引用如果受影响的行键的所有副本都已关闭,则它仍然是 如果使用写入一致性级别,写入可能成功 任何。在这种情况下,提示和写入的数据存储在 协调器节点,但在提示之前将无法读取 被写入拥有该行的实际副本。任何 一致性级别以成本提供绝对写入可用性 一致性,因为无法保证何时写入数据 可读取(取决于副本的关闭时间)。 是 任何一致性级别也可能会增加负载 集群,因为协调节点必须临时存储额外的行 只要副本不可用于接受写入。
我的问题是:如果我们使用 ANY 的一致性级别而不是使用 ONE 的一致性级别时的写入,那么写入cassandra的速度会慢吗?
答案 0 :(得分:2)
在写入时无法访问适当的副本节点时会生成提示。然后在请求协调器节点上本地序列化写请求。一旦有效的副本节点可用并且协调器节点获知它,该请求就会传递给新的可用副本。
在此背景下,有两种写时间方案需要考虑:
1)受影响的行至少有一个副本。在这种情况下,ANY
和ONE
的一致性级别之间没有差异。写入只是转到副本,并且不会触发提示切换。 没有性能差异。
2)受影响的行的所有副本都已关闭。这是提示进入图片的地方。使用一致性ANY
,在请求时在协调器节点上还有额外的工作要做,因为提示被写入本地系统表以供以后重放。使用一致性ONE
,您只需在相同的情况下获得拒绝写入。 ONE
会向客户端公开写入失败,并且会比ANY
更快。
基本上,权衡是拒绝请求而不是将工作推送到剩余节点,但仅在负责存储该行的节点停止时。