同步群集中的Web应用程序

时间:2012-02-15 12:41:11

标签: java web-applications

我有一个Web服务器集群,每个服务器运行相同的Java Web应用程序。所有这些Web应用程序实例共享相同的数据库(用于数据存储)和相同的网络文件存储(它们保存一些必需的文件)。

我需要能够同步Web应用程序的实例。例如,其中一个应用程序实例从客户端接收某个请求,它会进行一些重新计算并更新其内部缓存。此时,我需要为集群中的所有其他Web应用程序更新内部缓存,以便它们中的每一个都在同一数据集上运行。

实现此类功能的最佳方法是什么?当然,我可以实现一些定制组件,它将定期轮询共享资源(数据库表中的标志或文件存储上的文件),并在满足条件时启动所需的处理。但也许我可以使用一些已经存在的库/组件/应用程序?

1 个答案:

答案 0 :(得分:3)

有很多现有的库和组件。您可以谷歌了解cache coherence.有不同的即用型解决方案,Jboss缓存,Oracle一致性,GridGain等。

如果你想编写手写代码,方法很少,怎么办呢。群集中的每个节点都应该了解其他节点(最简单的情况)。数据可以以不同的方式复制。

同步复制仅当写入提交给其他节点时,才会在本地缓存中进行写入。

异步复制。写入发生在本地节点中,稍后在其他节点上复制。

缓存失效。当数据发生变化时,所有节点都会收到信号,使数据无效并从数据库中重新读取数据。

自己实现它可能会很棘手,你需要特殊的协议(你可以使用JGroups),你的节点将使用它来交换数据。我建议你找到现成的解决方案