这是我想做的:
try to lock a few documents
if any lock fails:
unlock any docs we've locked so far
wait until all locks are cleared
retry from beginning
do something
但是,我不知道如何有效地等待所有锁被清除。除了使用“无限”循环来检查锁定尝试是否返回临时失败错误外,我在Couchbase文档中找不到任何内容。有什么好的方法可以等待正确的时间再重试?(加上一些随机时间以避免重复冲突)
重试之前等待15秒以上并不是那么用户友好。
没有直接。
两种可能的优化可以使其效率更高一些。
一种是,您可以在应用程序级别上制定一种方案,如果您无法获取该锁,则可以在该锁上由服务员维护一条记录,因此只有最顶层的一两个在尝试获取该锁。
二是您可能应该使用指数退避重试来有效地重试锁定。如果您真的想变得更复杂,则可以根据负指数在最有可能使用锁的时间构建和训练模型。随着“最后期限”的临近,您将在此处进行更频繁的轮询,并使用负指数函数来描述该数学。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句