可以在cassandra.yaml中指定读取请求超时:
# How long the coordinator should wait for read operations to complete
read_request_timeout_in_ms: 10000
我需要对此超时进行一些澄清。
根据客户端请求文档,读取请求可以有两种类型:外部请求或后台修复请求。
问题 1:此超时是否对两种类型的请求施加,每种情况下会发生什么?
现在,只关注外部读取。同样,在上面链接的文档中,它说在读取过程中,启动后台进程以保持一致性。
Q2:对于外部读取请求,超时是否包括后台进程所花费的时间?
我问这些问题是因为我想对每个读取请求施加超时,但我不希望它影响链接到读取的任何其他后台进程。
Q1:我相信后台读取修复将使用read_request_timeout_in_ms进行操作。
Q2:对于来自客户端的外部请求,后台修复所需的时间通常在"后台"中,不计入超时值。[1] "read_request_timeout_in_ms"计时在协调器收到请求时开始。对于小于 ALL 的一致性,如果在超时值之前从所需数量的副本收到响应,则响应将返回到客户端。对于一致性级别 ALL,在后台读取修复完成之前不会返回响应 [2]。
[1] http://www.datastax.com/documentation/cassandra/1.2/webhelp/?pagename=docs&version=1.2&file=#cassandra/architecture/../dml/dml_config_consistency_c.html[2] http://wiki.apache.org/cassandra/ReadRepair