我需要模拟Java中有主系统和多个工作系统的系统。每个工作人员可以在本地处理其数据,但需要与主人通信以从其他节点读取数据。工人应该同时工作。Java中的分布式主 - 工作者体系结构模拟设计
如何模拟此系统?我是否需要为每个正在运行的工作者和主线程启动一个新线程?有另一种方法吗?
我需要模拟Java中有主系统和多个工作系统的系统。每个工作人员可以在本地处理其数据,但需要与主人通信以从其他节点读取数据。工人应该同时工作。Java中的分布式主 - 工作者体系结构模拟设计
如何模拟此系统?我是否需要为每个正在运行的工作者和主线程启动一个新线程?有另一种方法吗?
如果你想这样做,一台机器上,然后我看到两个选项:
Master
类的实例和Worker
类的多个实例。让Master
在单独的线程中运行,并让每个Worker
也在其自己的线程中运行。因此,第一个选项是将每个“节点”(master或worker)作为单独的进程运行,而第二个选项是将每个“node”作为单独的线程运行。
这是一个非常通用的问题,对许多架构解决方案都是开放的。我想介绍一下我以前用过的那个。我在这里使用了RMI来简化远程调用。
所有主从进程都是RMI服务。使用RMI守护进程(RMID)可以生成主服务器和从服务器,这些守护进程可以在发生JVM崩溃或任何其他“异常”原因导致服务中断的情况下具有“提升”服务的额外功能。一般RMI服务基于定义客户端和服务器之间契约的接口工作。比方说,例如,我必须写一个解决方程式的服务。
我们从创建两个服务开始:主从服务。这两个服务都实现/向客户端展示相同的接口。唯一的区别是,“主”服务将全权负责跨作业“分叉”给不同的奴隶代理人,获得响应(或者根据需要重新安排他们)并将其返回给客户端。主人是一个简单的RMI服务,它接受“方程式”列表并将其拆分到不同的客户端。很显然,这里的主控制器引用了它在RMI句柄方面管理的所有客户机(即主机和从机之间的通信又是一个RMI调用)。
在这里,我们还有很多配置主人“查找”奴隶的可能性,但我相信你可以很容易地解决这个问题。该体系结构具有基于网格的解决方案的优势,在这种解决方案中,您不受单个进程限制,无需为您完成所有工作,从而获得适用于JVM进程的单一堆大小的弹性和自由。