如何在同一个 JVM 上 运行 多个 Apache Ignite 节点?

How to run multiple Apache Ignite nodes on same JVM?

这是我的 Java Ignite 作为缓存层的实现。

public static void main(String[] args) throws IOException {

    Properties conf = getConfiguration();
    IgniteConfiguration cfg = new IgniteConfiguration();

    CacheConfiguration configuration = new CacheConfiguration();
    configuration.setName("ignt");

    DataSource dataSource = new DataSource();
    dataSource.setContactPoints(conf.getProperty("cass.contactPoints"));
    RoundRobinPolicy robinPolicy = new RoundRobinPolicy();
    dataSource.setLoadBalancingPolicy(robinPolicy);
    dataSource.setReadConsistency("ONE");
    dataSource.setWriteConsistency("ONE");
    dataSource.setProtocolVersion(4);
    dataSource.setPort(9042);
    configuration.setWriteThrough(true);
    configuration.setReadThrough(true);
    configuration.setWriteBehindEnabled(true);
    configuration.setWriteBehindFlushFrequency(30000);


    String persistenceSettingsXml = FileUtils.readFileToString(new File(conf.getProperty("ignite.persistenceSettings")), "utf-8");
    KeyValuePersistenceSettings persistenceSettings = new KeyValuePersistenceSettings(persistenceSettingsXml);
    System.out.println(persistenceSettings.getKeyspace());
    CassandraCacheStoreFactory cacheStoreFactory = new CassandraCacheStoreFactory();
    cacheStoreFactory.setDataSource(dataSource);
    cacheStoreFactory.setPersistenceSettings(persistenceSettings);
    configuration.setCacheStoreFactory(cacheStoreFactory);


    cfg.setCacheConfiguration(configuration);

    cfg.setGridName("g1");
    Ignite ignite=Ignition.getOrStart(cfg);

    System.out.println(cfg.getNodeId());
    cfg.setGridName("g2");
    Ignite igTwo = Ignition.getOrStart(cfg);

}

有没有办法从同一个 JVM 程序 运行 多个节点(在本地主机上)?如果无法从同一个 Java 程序 运行 多个节点,有没有办法从命令提示符分别 运行 所有节点,然后从 Java申请?

是的,你可以,在 运行 宁 Java 测试过程中,我们 运行 在同一个虚拟机中有几十个 Ignite 实例。它们重量轻,启动速度非常快。

您只需确保在 IgniteConfiguration 上设置不同的 igniteInstanceName。另请注意,您不能在启动两个实例时重复使用 IgniteConfiguration。创建一个工厂方法来构建两个 IgniteConfiguration 副本,每个实例一个。