2

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

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

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

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

是否有其他可用的解决方案/技术?

4

4 回答 4

5

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

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

  • 让服务器将更改推送到所有客户端。服务器必须直接或通过让客户端注册自己来了解所有客户端。
  • 让客户端轮询服务器。
于 2011-02-25T12:54:18.263 回答
3

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

一个快速的谷歌搜索出现了:http ://www.hazelcast.com/product.jsp 。这看起来很有希望,但我没有这方面的经验。

于 2011-02-25T12:50:44.280 回答
3

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

于 2011-02-25T13:17:57.513 回答
2

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

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

于 2011-02-25T13:07:52.580 回答