java - Apache Ignite : REPLICATION mode, 计数似乎不一致

标签 java ignite

我创建了一个包含 200 条记录的 Apache Ignite (V2.7) 复制缓存。我运行了该代码的 2 个实例。当我打印 cache.localSizeLong 时,它不会在两个节点上打印 200。它在节点 1 中打印 120,在节点 2 中打印 80。当我重新运行时,数字会有所不同。看起来它正在创建分区缓存?

初始化缓存的代码:

private void initCache() {
    IgniteConfiguration configuration = new IgniteConfiguration();
    configuration.setIncludeEventTypes(EventType.EVT_CACHE_OBJECT_PUT);//Can take multiple

    CacheConfiguration cacheCfg = new CacheConfiguration("myCacheConfig");
    //https://apacheignite.readme.io/docs/cache-modes

    cacheCfg.setCacheMode(CacheMode.REPLICATED);

    System.out.println("Default cache mode:----" + cacheCfg.getCacheMode());
    log.debug("Default cache mode:----" + cacheCfg.getCacheMode());

    configuration.setCacheConfiguration(cacheCfg);
    cacheCfg.setCopyOnRead(false);
    cacheCfg.setBackups(0);


    Ignite ignite = Ignition.start(configuration);
    cache = ignite.getOrCreateCache("myIgniteCache");       
}

最佳答案

默认情况下,cache.localSizeLong 返回节点作为主节点的多个条目。即使缓存被复制,它仍然像分区一样实现 - 每个节点都是某些数据的主节点,并保留其余数据的备份副本。

使用cache.localSizeLong(CachePeekMode.ALL)来计算主实体和备份实体。

关于java - Apache Ignite : REPLICATION mode, 计数似乎不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54952947/

相关文章:

java - Apache 点燃;连接集群失败,连接失败

java - 过期政策是否仍然适用于从检查点/持久存储读取数据?

java - 如何测试 private 方法,变量或者内部类

java - 匹配 Spring RequestMapping 中的任何内容

java - 归并排序错误

ignite - Apache Ignite 缓存中的 SQL 查询

java - 使用 FileChannel 连接文本文件

java - 使用带有多个参数的 Java 枚举

java - 尝试在 jdbc ignite 瘦客户端中提供多个 IP

linux - 如何通过docker部署web控制台,docker run -d -p 80 :80 -v <host_absolute_path>:/var/lib/mongodb --name, 主机绝对路径是什么?