[英]How to configure Ignite as cache for a clustered Tomcat application
我正在使用將在Tomcat上運行並使用Apache Ignite作為緩存的Web應用程序。 該應用程序必須在集群環境中運行,該環境已經具有Zookeeper用於其他目的。
我的問題是如何最好地配置和微調Ignite節點?
Q1。 我是否應該: a)我在同一客戶端Web應用程序中的Tomcat中運行每個Ignite節點? 或b)有一個單獨的進程運行Ignite並僅以客戶端身份在Web應用程序中啟動Ignite。
Q2。 如何限制分配給Ignite的內存量? 如果我在單獨的進程中運行,則可以僅在啟動時限制該JVM,但是我可以在Tomcat中運行時對資源消耗和垃圾回收崩潰實現類似的限制嗎?
我的當前配置在下面的代碼摘錄中,用於將CacheConfiguration
設置為CacheMode.PARTITIONED
。
private ZookeeperDiscoverySpi getZookeeperDiscoverySpi() {
ZookeeperDiscoverySpi zkDiscoverySpi = new ZookeeperDiscoverySpi();
zkDiscoverySpi.setZkConnectionString("127.0.0.1:2181");
zkDiscoverySpi.setZkRootPath("/apacheIgnite");
return zkDiscoverySpi;
}
private IgniteConfiguration getDefaultConfiguration(CacheConfiguration cacheCfg) {
IgniteConfiguration igniteConfig = new IgniteConfiguration();
igniteConfig.setIgniteInstanceName("IgniteInstanceName");
igniteConfig.setCacheConfiguration(cacheCfg);
igniteConfig.setClientMode(clientMode); // set to true for Tomcat webapp, false for Ignite node process
igniteConfig.setPeerClassLoadingEnabled(false);
igniteConfig.setMetricsLogFrequency(0);
igniteConfig.setDiscoverySpi(getZookeeperDiscoverySpi());
igniteConfig.setMetricsLogFrequency(0);
return igniteConfig;
}
Q1,您可以使用兩種方法。 您可以從在同一JVM中擁有Ignite服務器節點開始,看看是否適合您的情況。
Q2從Ignite 2.0開始,它將不使用太多堆,而是使用堆外內存來存儲數據。 您可以通過更改數據存儲配置中(默認)數據區域的大小來指定內存余量。 然后啟用頁面驅逐以確保您不會用完該內存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.