代码之家  ›  专栏  ›  技术社区  ›  Franz Wimmer

如何为Apache Ignite缓存配置持久存储?

  •  0
  • Franz Wimmer  · 技术社区  · 6 年前

    我正在尝试为ApacheIgnite配置持久存储,这样我的IgniteCache实例就不会在应用程序重新启动时丢失数据。我的安装程序是一个本地单节点群集,从我的代码启动,如下所示:

    IgniteConfiguration cfg = new IgniteConfiguration();
    cfg.setWorkDirectory("C:\\ignite");
    
    // Ignite persistence configuration.
    DataStorageConfiguration storageCfg = new DataStorageConfiguration();
    storageCfg.setStoragePath("ignitedb/storage");
    storageCfg.setWalPath("ignitedb/wal");
    storageCfg.setWalArchivePath("ignitedb/wal/archive");
    
    // Enabling the persistence.
    
    storageCfg.getDefaultDataRegionConfiguration().setPersistenceEnabled(true);
    
    // Applying settings.
    cfg.setDataStorageConfiguration(storageCfg);
    
    Ignite ignite = Ignition.getOrStart(cfg);
    ignite.active(true);
    // Get all server nodes that are already up and running.
    Collection<ClusterNode> nodes = ignite.cluster().forServers().nodes();
    // Set the baseline topology that is represented by these nodes.
    ignite.cluster().setBaselineTopology(nodes);
    return ignite;
    

    缓存的创建方式如下:

    cacheConfiguration = new CacheConfiguration<>();
    cacheConfiguration.setBackups(1);
    cacheConfiguration.setAtomicityMode(CacheAtomicityMode.ATOMIC);
    cacheConfiguration.setName("UserCache");
    cacheConfiguration.setCacheMode(CacheMode.LOCAL);
    cacheConfiguration.setReadFromBackup(true);
    cacheConfiguration.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
    cacheConfiguration.setIndexedTypes(String.class, User.class);
    IgniteCache<String, User> cache = ignite.getOrCreateCache(cacheConfiguration);
    

    存储 User 缓存中的对象可以工作。Ignite在下面创建目录结构 C:\ignite . 但重新启动应用程序时,所有数据都会丢失。如何正确配置?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Roman Guseinov    6 年前

    根本原因似乎是 LOCAL 缓存模式。尝试使用 REPLICATED PARTITIONED : https://apacheignite.readme.io/docs/cache-modes