Java - 分布式编程,RMI?

Ale*_*Lim 2 java simulation distributed rmi traffic-simulation

我在这里遇到了一个问题.我的目标是构建一个框架,以允许集成不同的流量模拟模型.这种集成基于链接连接,链接成本和模拟之间的车辆的共享.

为了进行分布式仿真,我计划建立一个"协调器"(星形拓扑).所有参与的模拟只需注册,并只与协调员交谈.然后协调员协调每次模拟之间各种任务的执行.

分布问题的一个快速示例是,当一个模拟"负责"某些对象(如道路)时.另一个是其他道路的"负责人".但是,这些道路是相互连接的(因此,我们需要在这些模拟之间进行同步,并且需要能够远程交换数据/调用方法).

我已经看过RMI了,我认为它可能适合这项任务.(以抽象出必须创建一个线上信令规则).

这样理智吗?这里的问题是模拟参与者需要将他们的一些数据存储集中在"协调器"中,以确保模拟之间的显式同步.此外,一些模拟可能需要来自其他模拟的组件或方法.(因此使用RMI的想法).

我的基本方法是让'协调员'运行一个巨大的RMI注册表.每个模拟只需查找注册表中的所有内容,确保在每个步骤中使用正确的对象.

任何人都有任何关于沿着这条道路前进的提示

Tal*_*urk 10

您可能还想查看Hazelcast.Hazelcast是队列,主题,映射,集合,列表,锁定和执行程序服务的开源事务,分布式/分区实现.它非常容易使用; 只需将hazelcast.jar添加到您的类路径中并开始编码.几乎不需要配置.

如果您有兴趣以分布式方式执行Runnable,Callable任务,请查看http://code.google.com/docreader/#p=hazelcast上的 Distributed Executor Service文档.

Hazelcast是在Apache许可下发布的,并且还提供企业级支持.


cle*_*tus 5

这样理智吗?恕我直言 我会告诉你原因.但首先我要添加免责声明,这是一个复杂的话题,所以任何答案都必须被视为几乎没有表面.

首先,我将向您简要介绍一下我之前写过的Java网格/集群技术.它是一个基本完整的清单.

星型拓扑对于"天真"(我并不意味着以一种糟糕的方式)实现是"自然的",因为点对点很简单并且集中关键控制器逻辑也很简单.但它不是容错的.它引入了可伸缩性问题和单一瓶颈.它引入了通信效率低下(即通过中心通过两步过程进行通信).

你真正想要的是一个集群(而不是数据/计算网格)解决方案,我建议你看看Terracotta.理想情况下,你会看到Oracle Coherence,但毫无疑问它是昂贵的(与免费相比).虽然这是一个很棒的产品.

这两种产品可以通过多种方式使用,但两者的核心是将缓存视为分布式地图.你把东西放进去,你把东西拿出来然后你就会发现改变缓存的代码.在这方面的连贯性(我更熟悉)可以很好地扩展.对于真正的集群,这些是更"基于服务器"的产品.

如果您正在研究更分散的模型,那么您可能应该考虑更多基于SOA的方法.