【发布时间】:2018-06-11 15:49:10
【问题描述】:
我是 Aerospike 的新手。
我想知道在所有可能的超时情况下,如此链接所述:
https://discuss.aerospike.com/t/understanding-timeout-and-retry-policies/2852
客户端无法在指定的超时 (timeout=) 内连接。超时为零 表示没有设置超时。
客户端在指定超时 (timeout=) 前未收到响应。
服务器在它自己的处理过程中超时事务(默认 如果客户端未指定超时,则为 1 秒)。为了调查这件事, 确认服务器事务延迟不是瓶颈。
M 次重试后客户端超时,但没有错误 由于节点故障或连接失败。
客户端在 N 次重试后无法获得有效节点(其中重试次数为 从您的客户那里设置)。
客户端在 X 次重试后无法获得有效连接。重试 count 通常是限制因素,而不是超时值。这 推理是,如果您在 R 重试后无法获得连接,您 永远不会,所以早点超时。
在提到的所有超时场景中,在哪些情况下我可以绝对确定事务的最终结果是 FAILED?
Aerospike 是否提供任何服务,例如在客户端不响应时回滚事务?
在最坏的情况下,如果我不能确定最终结果,我怎么能确定交易的最终状态?
提前非常感谢。
编辑: 我们想出了一个临时解决方案:
为该记录保留 [generation -> value read] 的映射(可能是后台线程不断读取记录等),然后在超时时,我们会定期检查映射(键 = 预期生成)以查看是否真正的书面价值实际上是放在地图上的价值。如果相同,则表示写入成功,否则表示写入失败。
你们认为有必要这样做吗?还是有其他办法?
【问题讨论】:
标签: database nosql timeout aerospike acid