2011-06-08 107 views
0

我有一个集群在两个WebSphere V7节点上的Java EE应用程序。如果客户端更改了持久化到节点1上的数据库的数据,我想确保数据在节点2上立即更新。如何同步服务器节点之间的数据?

我考虑使用EJB定时器服务,每隔几分钟检查一次数据库。但是如果我想要在时间上执行更新,节点2没有任何延迟并且没有将间隔设置为一秒左右,我该怎么办?那么我可以从节点1调用节点2上的servlet,并以这种方式触发更新。但在这种情况下,我的应用程序必须知道所有节点的http地址。这不是我想要的。还有其他建议吗?

在服务器节点之间是否存在同步数据更改的最佳做法?

回答

0

我会推荐使用提供不同同步方法的Jboss JGroups。

+0

那么我宁愿为我的问题使用更轻量级的解决方案 - 如果可能的话,不使用额外的瓶子或框架。 – mwalter 2011-06-09 07:09:43

+0

我明白了。但是,即使您不使用Jgroups实现,jgroups文档也提供了一些可能有用的模式。 – HamoriZ 2011-06-09 08:17:22

0

假设您的两个WebSphere节点与同一个数据库对话并且您尚未添加任何形式的缓存,那么只要节点2在数据库上运行SQL查询,数据就会立即可用。

我错过了你的问题吗?

+0

事情是我在应用程序启动时将主数据加载到单例POJO中。初始化后,所有请求都使用单例访问此数据,以避免额外(且长时间运行)的主数据数据库访问。但是因为应用程序是聚类的,所以我不幸有两个单例(每个节点上有一个单元),我必须保持同步... – mwalter 2011-06-14 07:27:57

1

由于您使用的是WebSphere,我建议使用内置于WAS中的DistributedMap

+0

嗯..听起来很有希望。但是我没有读到有关服务器节点之间同步的任何信息。它看起来更像是JSP和servlet输出的常见缓存?你有更多的信息/经验吗? – mwalter 2011-06-29 14:37:30

相关问题