Cassandra 中的摘要请求

Digest request in Cassandra

我对摘要请求的问题很少,我通读了文档,但以下信息不是重点,

1) 假设我有 10 个节点集群,RF =3 且 RC = 2,

另外为了便于理解,设副本为节点 1、节点 2 和节点 3,协调器为节点 4。

对于读取请求,根据我的理解,第一个协调器(节点 4)将直接请求发送到延迟较低的节点之一(动态告密器),比如节点 1 并获取数据,然后在接收到数据后它将摘要请求发送到下一个延迟节点之一,例如节点 2,并仅获取哈希并与从直接请求计算的哈希进行比较。

问题 1:摘要请求是否与直接请求(或)在收到直接请求后并行发送(到节点 2)它发送摘要请求?

问题 2 : 我知道节点 3 的摘要请求也会被发送以保证数据一致性,但是协调器(节点 4)什么时候发送摘要请求到第三个副本(节点 3)?是在协调员回复客户之后吗?

问题3 : 另外文档中提到只有在完成读取修复后协调器才会响应客户端?

问题4 :除了Tracing之外,谁能解释一下实时识别读写请求流程的方法?

太好了,如果你们能用工作流程解释一下这些问题,对每个人都有用。

我看了视频也供参考:https://www.youtube.com/watch?v=HuDJBTPdaOA&list=PLm-EPIkBI3YorKfmT9LXpBhyeZMYAM1M7

我假设你的情况。这里 N4 是协调器节点。您向 N2(它是一个副本)发送了直接请求。在收到来自 N2 的响应后,协调器节点(N4)将向包含其他副本的任何节点(N3 或 N1)发送摘要请求。假设 N3 更接近节点。因此,摘要请求将发送到 N3 以满足一致性级别。 N4收到N3的响应后,会将N2和N3的数据进行比较,并将更新后的数据return发送给客户端。

N1节点中有另一个副本。现在协调节点向所有其他副本发送摘要请求。(在本例中为 N1)。如果 N4 发现任何节点(N1、N2、N3)未更新,它就会运行读取修复请求。

p.s: 我不知道答案 4。

https://docs.datastax.com/en/cassandra/2.1/cassandra/dml/architectureClientRequestsRead_c.html

https://teddyma.gitbooks.io/learncassandra/content/client/read_requests.html

对于第4题,您可以启用cass_log_set_level并将日志级别设置为调试信息,您可以获得实时调试信息。