如何在同一个 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 副本,每个实例一个。
这是我的 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 副本,每个实例一个。