同步群集中的Web应用程序

and*_*w.z 6 java web-applications

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

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

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

Ant*_*ton 3

有很多现有的库和组件。你可以google一下cache coherence.有不同的现成可用的解决方案,Jboss缓存,Oracle coherence,GridGain等。

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

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

异步复制。写入发生在本地节点,然后复制到其他节点。

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

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