使用 CacheStore、JDBC 驱动程序和 xml 配置部署 Ignite 应用程序的最佳选择
The best to deploy an Ignite application with CacheStore, JDBC driver and xml configuration
部署 ignite 应用程序的最佳方式是什么? ZeroDeployment 听起来很简单,但我还没有找到简单的方法。我构建了一个应用程序来尝试 Ignite 的后写方法。我扩展了 CacheStoreAdapter,它使用 PostgreSQL jdbc 来插入数据。它从 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。 xml 文件包含在 fat jar 文件中。
- 同上:将 fat application.jar 包括 jdbc 驱动程序复制到 ignite/libs 文件夹中。
- 使用java -jar application.jar启动服务器节点
写入缓存成功,但后写代码出错,并且还抱怨找不到 jdbc 驱动程序。请注意 postgresql-9.4.1212.jre6.jar 存在于 ignite libs 文件夹中。我只启动了这个服务器节点 运行.
[00:24:20,244][严重][flusher-0-#23%null%][GridCacheWriteBehindStore] 无法更新底层存储:com.xxxx.xxx.xxx.datastore.CustomStore@555cf22
…………
原因:java.sql.SQLException:找不到适合 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 驱动程序)应部署在所有节点上。零部署不适用于这种情况。缓存配置中的所有 类 应该在所有节点上可用。
部署 ignite 应用程序的最佳方式是什么? ZeroDeployment 听起来很简单,但我还没有找到简单的方法。我构建了一个应用程序来尝试 Ignite 的后写方法。我扩展了 CacheStoreAdapter,它使用 PostgreSQL jdbc 来插入数据。它从 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。 xml 文件包含在 fat jar 文件中。
- 同上:将 fat application.jar 包括 jdbc 驱动程序复制到 ignite/libs 文件夹中。
- 使用java -jar application.jar启动服务器节点 写入缓存成功,但后写代码出错,并且还抱怨找不到 jdbc 驱动程序。请注意 postgresql-9.4.1212.jre6.jar 存在于 ignite libs 文件夹中。我只启动了这个服务器节点 运行.
[00:24:20,244][严重][flusher-0-#23%null%][GridCacheWriteBehindStore] 无法更新底层存储:com.xxxx.xxx.xxx.datastore.CustomStore@555cf22 ………… 原因:java.sql.SQLException:找不到适合 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 驱动程序)应部署在所有节点上。零部署不适用于这种情况。缓存配置中的所有 类 应该在所有节点上可用。