xml - 使用 CacheStore、JDBC 驱动程序和 xml 配置部署 Ignite 应用程序的最佳选择

标签 xml postgresql jdbc deployment ignite

部署 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成功了。

  1. 我更改了应用程序以在服务器模式下启动 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

  1. 我使用 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/

相关文章:

xml - 在 Ruby 中区分两个 XML 文档?

c# - 解析 XML 内容 - C#

PHP - 将 XML 用于配置文件是元素优于属性还是相反?

python - Scrapy 加载没有将所有信息加载到 postgres 中。为什么?

jdbc - 我应该如何将 UUID 与 JavaDB/Derby 和 JDBC 一起使用?

java - PostgreSQL JDBC 中 int/numeric 列上的 PreparedStatement.setString

xml - Chrome : Inspect Element vs View Source

python - 使用 python 和 postgres,execute 函数中的变量?

spring - 是否可以在 Spring Repository @Query 注释中使用 Array 对象作为参数?

java - 带有空 URI 和 null Marshaller 的 Spring Web 服务请求