点燃从备份节点读取的过时数据



我在ignite 2.8.1版本上遇到了一致性数据问题。我有三个节点作为集群运行,缓存配置为:

CacheConfiguration<String, Balance> cacheConfiguration = new CacheConfiguration<>(Balance.class.getSimpleName());
cacheConfiguration.setIndexedTypes(String.class, Balance.class);
cacheConfiguration.setSqlIndexMaxInlineSize(100);
cacheConfiguration.setSqlSchema("PUBLIC");
cacheConfiguration.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
cacheConfiguration.setCacheMode(CacheMode.PARTITIONED);
cacheConfiguration.setBackups(4);
cacheConfiguration.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);

然后我有一个非常简单的代码来添加循环中的余额:

for (int i = 0; i < 10000; i++) {
balance = balanceDao.findByKey(accountId, "USD");
balance.setQuantity(balance.getQuantity().add(BigDecimal.ONE));
balanceDao.save(balance);
}

当在主节点上运行时,我的余额总是正确地增加了10000,但当在备份节点上运行它时,有时我的余额增加了8k左右,有时增加了9k。

如果setWriteSynchronizationMode设置为PRIMARY_SYNC,setReadFromBackup设置为false,那么我可以在所有节点上获得正确的平衡。

这是2.8.1上的错误还是我的配置有什么问题?

如果是readFromBackup == true(默认值(,则可以读取备份节点上的过时值。将其设置为false以避免过时的读取。

相关内容

  • 没有找到相关文章

最新更新