部署 ignite 应用程序的最佳方式是什么? ZeroDeployment 听起来很简单,但我还没有找到简单的方法。我构建了一个应用程序来尝试 Ignite 的后写方法。我扩展了使用 PostgreSQL jdbc 插入数据的 CacheStoreAdapter。它在 IDE 中运行良好,但我还没有找到将它部署到服务器的好方法。我的笔记本电脑通过 VPN 连接到安装了 Ignite 和 PostgreSQL 的服务器。我笔记本电脑的 JDBC 通过 vpn,所以我想测试应用程序在服务器上运行时的性能。
我尝试了两种方式: 1. 应用程序在客户端模式下启动,它有效,但我发现部署涉及几个步骤。 - 将包含 jdbc 驱动程序的 fat jar 复制到 ignite/libs 文件夹中。 - 将 config.xml 复制到配置文件夹 - 使用 ignite.sh config/config.xml 启动服务器节点 - 使用 java -jar application.jar 启动客户端节点 - 客户端程序成功完成但服务器后写代码 (CacheStoreAdapter.write) 出错并提示找不到 jdbc 驱动程序。复制一个单独的postgresql-9.4.1212.jre6.jar到libs并重启Ignite服务器节点后,write behind成功了。
- 我更改了应用程序以在服务器模式下启动 ignite。 fat jar 文件中包含 xml 文件。
- 同上:将包含 jdbc 驱动程序的 fat application.jar 复制到 ignite/libs 文件夹中。
- 使用 java -jar application.jar 启动服务器节点 写入缓存成功,但后写代码出错,并且还提示找不到 jdbc 驱动程序。请注意 postgresql-9.4.1212.jre6.jar 存在于 ignite libs 文件夹中。我只启动并运行了这个服务器节点。
[00:24:20,244][SEVERE][flusher-0-#23%null%][GridCacheWriteBehindStore] 无法更新底层存储:com.xxxx.xxx.xxx.datastore.CustomStore@555cf22 ………… 引起:java.sql.SQLException: No suitable driver found for jdbc:postgresql://xxx.xxxx.xxxx.com:5432/customdb
- 我使用 ignite.sh config/config.xml 启动服务器节点,然后使用 java -jar application.jar 在服务器模式下启动 ignite。现在我有两个服务器节点。这一次,一切顺利完成。好像异步write-behind有特定的方法来寻找jdbc驱动程序?
有更好的方法吗?我同意在接近生产的情况下,具有多个服务器节点的集群可能是现实。如果我更改了 xml 中的配置,更改会填充到其他节点吗?或者我也应该更新其他节点中的 xml 吗?还是使用 java 配置对象更好,因为它会自动加载到对等点?
感谢您的宝贵时间和建议!
最佳答案
我看到您尝试部署两件事:配置(xml 文件)和库。对于您的情况,我建议采用以下方法:
- 配置文件不应部署在每个服务器节点上,但服务器和客户端应该能够相互找到。这意味着用于客户端和服务器节点的 ignite 配置应该包含正确配置的 IP 查找器(VmIpFinder 或 MulticastIpFinder)。 https://apacheignite.readme.io/docs/cluster-config服务器节点的配置可以不包含缓存配置等。
- 应在所有节点上部署库(JDBC 存储和 JDBC 驱动程序)。零部署不适用于这种情况。缓存配置中的所有类都应该在所有节点上可用。
关于xml - 使用 CacheStore、JDBC 驱动程序和 xml 配置部署 Ignite 应用程序的最佳选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41950452/