ignite有兩種配置方式,一種是基于XML檔案的配置,一種是基于JAVA代碼的配置:
這裡将ignite常用的配置集中羅列出來了,一般建議使用xml配置。
1,基于XML的配置
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
<bean id="igniteCfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<!-- Consistent globally unique node identifier which survives node restarts. -->
<!-- 全局一緻性id -->
<!--<property name="consistentId" value="cord"/>-->
<!--Set to true to enable distributed class loading for examples, default is false. -->
<!-- 分布式計算class傳播 -->
<property name="peerClassLoadingEnabled" value="true"/>
<!-- Set deployment mode. -->
<!-- 部署模式,控制類加載. -->
<property name="deploymentMode" value="CONTINUOUS"/>
<!-- Disable missed resources caching. -->
<!-- 禁用丢失資源緩存 -->
<property name="peerClassLoadingMissedResourcesCacheSize" value="0"/>
<!-- 設為false表示服務端模式 -->
<property name="clientMode" value="false"/>
<!-- Network timeout -->
<!-- 連接配接逾時時間 -->
<property name="networkTimeout" value="10000" />
<!--Exclude force peer class loading of a class, even if exists locally.-->
<!-- 配置需要傳播的class的路徑 -->
<property name="peerClassLoadingLocalClassPathExclude">
<list>
<value>org.cord.*</value>
</list>
</property>
<!-- 配置需要監聽的事件類型-->
<property name="includeEventTypes">
<list>
<util:constant static-field="org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_PUT"/>
<util:constant static-field="org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_READ"/>
<util:constant static-field="org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_REMOVED"/>
</list>
</property>
<!-- Configure internal thread pool. -->
<!-- 公共線程池大小-->
<property name="publicThreadPoolSize" value="64"/>
<!-- Configure system thread pool. -->
<!-- 系統線程池大小-->
<property name="systemThreadPoolSize" value="32"/>
<property name="cacheConfiguration">
<list>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<!-- 緩存名-->
<property name="name" value="IGNITE_CACHE_KEY_PCOMM_RATE"/>
<!-- 原子模式類型,ATOMIC:原子型,保證性能; TRANSACTIONAL:事務型,分布式鎖-->
<property name="atomicityMode" value="ATOMIC"/>
<!--PARTITIONED:分區; REPLICATED:複制;LOCAL:本地 -->
<property name="cacheMode" value="REPLICATED"/>
<!-- 備份數量-->
<property name="backups" value="1"/>
<!-- 禁用jcache标準中緩存讀取擷取的是副本的機制 -->
<property name="copyOnRead" value="false"/>
<!-- 記憶體區名-->
<property name="dataRegionName" value="Default_Region"/>
<!-- 是否以二進制形式存儲-->
<!--<property name="storeKeepBinary" value="true"/>-->
<!-- 索引類型-->
<property name="indexedTypes">
<list>
<value>java.lang.Long</value>
<value>com.palic.demo.data.domain.CommRate</value>
</list>
</property>
</bean>
</list>
</property>
<!-- Redefining maximum memory size for the cluster node usage. -->
<property name="dataStorageConfiguration">
<bean class="org.apache.ignite.configuration.DataStorageConfiguration">
<!-- Redefining the default region's settings -->
<!-- 預設存儲區間配置-->
<property name="defaultDataRegionConfiguration">
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<!-- 存儲區名-->
<property name="name" value="Default_Region"/>
<!-- 存儲區大小-->
<!-- Setting the size of the default region to 1GB. -->
<!--<property name="maxSize" value="#{1L * 1024 * 1024 * 1024}"/>-->
<property name="maxSize" value="#{512 * 1024 * 1024}"/>
<!-- 是否開啟持久化-->
<!-- Enabling Apache Ignite Persistent Store. -->
<!--<property name="persistenceEnabled" value="true"/>-->
</bean>
</property>
<property name="dataRegionConfigurations">
<list>
<!-- 自定義記憶體區-->
<!--
Defining a data region that will consume up to 500 MB of RAM and
will have eviction and persistence enabled.
-->
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<!-- Custom region name. -->
<property name="name" value="500MB_Region"/>
<!-- 100 MB initial size. -->
<property name="initialSize" value="#{100L * 1024 * 1024}"/>
<!-- 500 MB maximum size. -->
<property name="maxSize" value="#{500L * 1024 * 1024}"/>
<!-- Enabling persistence for the region. -->
<!--<property name="persistenceEnabled" value="true"/>-->
</bean>
</list>
</property>
<!-- 預寫日志模式-->
<!-- Sets property that defines behavior of wal fsync. -->
<!--<property name="walMode">-->
<!--<util:constant static-field="org.apache.ignite.configuration.WALMode.DEFAULT"/>-->
<!--</property>-->
<property name="walMode" value="DEFAULT"/>
<!-- 檢查點頻率-->
<!--Checkpointing frequency which is a minimal interval when the dirty pages will be written to the Persistent Store.-->
<property name="checkpointFrequency" value="180000"/>
<!--<property name="checkpointFrequency" value="10000"/>-->
<!-- 檢查點線程數-->
<!-- Number of threads for checkpointing.-->
<property name="checkpointThreads" value="4"/>
<!-- 在檢查點同步完成後預寫日志曆史保留數量 -->
<!-- Number of checkpoints to be kept in WAL after checkpoint is finished.-->
<property name="walHistorySize" value="20"/>
<!--<property name="walHistorySize" value="2"/>-->
<!-- 持久化檔案路徑 -->
<!--<!– Path where data and indexes will be persisted. –>-->
<!--<property name="storagePath" value="D:\\Test\\db" />-->
<!--<!– Path to the directory where WAL (Write Ahead Log) is stored. –>-->
<!--<property name="walPath" value="D:\\Test\\db\\wal" />-->
<!--<!– Path to the directory where WAL (Write Ahead Log) archive is stored. –>-->
<!--<property name="walArchivePath" value="D:\\Test\\db\\wal\\archive" />-->
</bean>
</property>
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="localPort" value="48500"/>
<property name="localPortRange" value="20"/>
<property name="joinTimeout" value="0"/>
<property name="networkTimeout" value="5000" />
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<!-- 叢集ip清單-->
<list>
<value>127.0.0.1:48500..48520</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
<property name="communicationSpi">
<bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
<property name="localPort" value="48100"/>
</bean>
</property>
</bean>
</beans>
基于此XML配置啟動ignite節點的方式如下:
@Configuration
public class IgniteConfig {
@Autowired
private IgniteConfiguration igniteCfg;
@Bean
@ConditionalOnMissingBean
public Ignite initIgnite() {
//推薦借助spring bean的方式注入ignite配置資訊,隻需要将配置xml檔案import即可
//啟動類加上注解@ImportResource(locations={"classpath:default-config.xml"})
Ignite ignite = Ignition.start(igniteCfg);
//Ignite ignite = Ignition.start(classpath:default-config.xml)
}
}
2,基于JAVA代碼的配置
......
IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setClientMode(false);
//配置叢集發現
cfg.setDiscoverySpi(new TcpDiscoverySpi().setLocalPort(48500).setLocalPortRange(20)
.setIpFinder(new TcpDiscoveryVmIpFinder().setAddresses(Arrays.asList("127.0.0.1:48500..48520"))));
//基本配置
cfg.setCommunicationSpi(new TcpCommunicationSpi().setLocalPort(48100));
cfg.setDeploymentMode(CONTINUOUS);
cfg.setPeerClassLoadingEnabled(true);
cfg.setPeerClassLoadingLocalClassPathExclude("com.org.ignite.*");
cfg.setIncludeEventTypes(EventType.EVT_TASK_STARTED, EventType.EVT_TASK_FINISHED, EventType.EVT_TASK_FAILED);
cfg.setPublicThreadPoolSize(64);
cfg.setSystemThreadPoolSize(32);
//添加cache配置
List<CacheConfiguration> cacheConf = new ArrayList<>();
CacheConfiguration<String, Integer> conf = new CacheConfiguration<String, Integer>("test")
.setCacheMode(CacheMode.REPLICATED)
.setIndexedTypes(String.class, Integer.class)
.setAtomicityMode(CacheAtomicityMode.ATOMIC)
.setCopyOnRead(false)
.setBackups(1);
cacheConf.add(conf);
cfg.setCacheConfiguration(cacheConf.toArray(new CacheConfiguration[]{}));
//基于java代碼配置啟動
Ignition.start(cfg);
......
一般建議基于XML配置,spring bean注入,如果确實需要JAVA配置,可以結合XML配置靈活處理。
在ignite叢集中,配置資訊是可以動态傳播的,而如果是修改配置檔案,則需要重新開機節點才可生效,并且如果有些關鍵配置不一緻,也會導緻啟動節點報錯,無法加入叢集。是以最好的做法是,在普通節點中隻配置節點相關配置,以及叢集發現配置,至于變動性最大的緩存cache配置,可以由應用節點配置,這樣便于的集中管控緩存配置。除此之外,使用xml配置,可以保證普通節點與應用節點的配置的一緻性,而不需要單獨再維護一套代碼配置。
轉載于:https://www.cnblogs.com/cord/p/9397613.html