java - 如何将 Ignite 配置为集群 Tomcat 应用程序的缓存

标签 java tomcat ignite

我正在开发一个将在 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 开始,它不会使用太多堆,而是使用堆外内存来存储数据。您可以通过更改数据存储配置中(默认)数据区域的大小来指定内存余量。然后启用页面逐出以确保您不会用完此内存。

关于java - 如何将 Ignite 配置为集群 Tomcat 应用程序的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54278443/

相关文章:

c++ - 检查连接状态 - Ignite 的 C++ odbc 驱动程序

ignite - Apache 点燃: "Blocked system-critical thread has been detected" exception in partition-exchanger

java - 了解 Ringdroid 代码 + Android

java - struts2.xml - 不能包含其他 .xml 文件

java - 带 Android 注释的自定义标题

tomcat - 无法连接到部署在 Tomcat 中的 ServerEndpoint

tomcat - CDI/焊接网络应用程序的有用环境

java - 在 Windows 中的 Tomcat 7 上安装 PHP

java - Apache Ignite - 如何发展带注释的类的架构/属性

java - 从文本文件读取并行数组