嵌入式 Hazelcast 备份读取与同步备份
Embedded Hazelcast backup reads with sync backups
我对 运行 嵌入 hazelcast 时的备份读取有疑问。
如果启用了同步备份并且我们还启用了备份读取,我们在锁内进行更新时是否仍然存在过时读取的风险?
澄清一下我想知道的。
如果我使用上面描述的配置。
如果所有更新都使用悲观锁定模式完成,例如:
map.lock(key);
try {
Value value = map.get(key);
value.amount++;
map.put(key, value);
} finally {
map.unlock(key);
}
使用备份读取时,锁内的读取是安全的吗?
因为每次放置都会确保在使用同步备份时更新所有备份?
是的,如果您使用同步备份,那么您的数据在 Hazelcast 成员之间是一致的,因此您的代码片段可以按预期工作。这一切都是假设 Hazelcast 集群本身是稳定的(没有 split-brain)。
但是请注意,锁定并不是实现目标的最佳方式。请看Hazelcast EntryProcessor.
我对 运行 嵌入 hazelcast 时的备份读取有疑问。
如果启用了同步备份并且我们还启用了备份读取,我们在锁内进行更新时是否仍然存在过时读取的风险?
澄清一下我想知道的。
如果我使用上面描述的配置。
如果所有更新都使用悲观锁定模式完成,例如:
map.lock(key);
try {
Value value = map.get(key);
value.amount++;
map.put(key, value);
} finally {
map.unlock(key);
}
使用备份读取时,锁内的读取是安全的吗? 因为每次放置都会确保在使用同步备份时更新所有备份?
是的,如果您使用同步备份,那么您的数据在 Hazelcast 成员之间是一致的,因此您的代码片段可以按预期工作。这一切都是假设 Hazelcast 集群本身是稳定的(没有 split-brain)。
但是请注意,锁定并不是实现目标的最佳方式。请看Hazelcast EntryProcessor.