Java应用程序复制状态

时间:2011-02-25 12:47:24

标签: java jgroups

我在多台计算机上运行相同的服务器端应用程序。

我想提供一种方法来推动对所有应用程序的更改。我对对象本身的状态/属性更改更感兴趣,而不是文件复制等等。

所以我想象一个管理控制台,在那里我会更改一些属性,并让更改影响每个应用程序状态。

我目前正在研究JGroups,这是一个可靠的多播通信工具包。在这种情况下,每个应用程序都会侦听同一个多播组,管理控制台会向组发送更改。

还有其他解决方案/技术吗?

4 个答案:

答案 0 :(得分:5)

有很多技术,corba,rmi等等。但是如果你想要一个没有中央服务器的完全分布式系统,我个人会推荐JGroups

如果您有中央服务器,则可以

  • 让服务器将更改推送到所有客户端。服务器必须直接或通过让客户端自己注册来了解所有客户端。
  • 让客户端轮询服务器。

答案 1 :(得分:3)

其他简单的解决方案可能包括轮询中央数据库或中央文件。

快速Google搜索出现了:http://www.hazelcast.com/product.jsp。这看起来很有希望,但我没有经验。

答案 2 :(得分:3)

对于更复杂的场景,我不能完全推荐terracotta。 本质上,terracotta将堆的一部分分配给网络,这意味着您的应用程序共享堆的一部分。共享堆中的一个应用程序所做的更改将对共享堆的其他应用程序可见。主要缺点是兵马俑需要专用服务器,因为它是一个中心和辐条设计。

答案 3 :(得分:2)

来自Hadoop项目的Apache ZooKeeper也可能很有趣。我没有使用它的经验,但从网页我得出结论,它提供了一个分层数据模型。每个对更改感兴趣的应用程序都可以监视特定节点的更改并根据更改进行操作。

http://zookeeper.apache.org/doc/trunk/index.html