更好的架构将资源密集型工作外包给另一个程序
Better architecture to outsource resource-intensive work to another program
我想找到一个更好的架构来将命令发送到另一个处理资源密集型工作的程序。
我们目前的工作流程
我们有一个 JBoss 服务器 (Java EE6 Jboss 7.1.3),它为另一个程序创建一个命令文件。另一个是从 JBoss 上下文中使用标准输入参数启动的,它正在读取命令文件要做什么。在作业期间,服务器会收到某个项目已被处理的消息。如果作业完成(例如,创建 300 个包含内容的 Word 文档,或调用 Web 服务),服务器将通过 RMI 收到通知。
新要求
工作者程序现在应该放在不同的机器上。呼叫也应该通过 tcp。应该有几个实例可以在不同的作业(甚至机器)上工作。此程序也必须始终 运行.
java中的任何框架都支持这种工作流程吗?
你会怎么做?您会使用 RMI 还是套接字?
一些常见的方法是 jmx/mbeans 或 JMS。
注意:Spring 使得将 bean 发布为 mbean 变得非常容易。更多信息 here
mbean 的另一个注意事项是 jconsole(jdk 的一部分)有一个 mbeans plugin(需要安装)。这有助于调试,也可以在生产中用于调用方法。
使用套接字进行通信,并在执行工作的服务器上使用本机软件。
没有很好的框架来处理这个主题,因为它是非常特定于应用程序的。写这样的东西:https://gist.github.com/Doralitze/fa3f81640da4be046b40
你可以用任何你喜欢的语言编写远程软件,但我推荐c++。也可以在 java 中编写软件(但我真的建议使用 gcj 本地编译它)。无论如何(如果你决定使用 c++)你应该使用编译器标志来优化你的代码以达到最佳性能并启用 cpu 特定的优化。
我想找到一个更好的架构来将命令发送到另一个处理资源密集型工作的程序。
我们目前的工作流程
我们有一个 JBoss 服务器 (Java EE6 Jboss 7.1.3),它为另一个程序创建一个命令文件。另一个是从 JBoss 上下文中使用标准输入参数启动的,它正在读取命令文件要做什么。在作业期间,服务器会收到某个项目已被处理的消息。如果作业完成(例如,创建 300 个包含内容的 Word 文档,或调用 Web 服务),服务器将通过 RMI 收到通知。
新要求
工作者程序现在应该放在不同的机器上。呼叫也应该通过 tcp。应该有几个实例可以在不同的作业(甚至机器)上工作。此程序也必须始终 运行.
java中的任何框架都支持这种工作流程吗? 你会怎么做?您会使用 RMI 还是套接字?
一些常见的方法是 jmx/mbeans 或 JMS。
注意:Spring 使得将 bean 发布为 mbean 变得非常容易。更多信息 here
mbean 的另一个注意事项是 jconsole(jdk 的一部分)有一个 mbeans plugin(需要安装)。这有助于调试,也可以在生产中用于调用方法。
使用套接字进行通信,并在执行工作的服务器上使用本机软件。 没有很好的框架来处理这个主题,因为它是非常特定于应用程序的。写这样的东西:https://gist.github.com/Doralitze/fa3f81640da4be046b40
你可以用任何你喜欢的语言编写远程软件,但我推荐c++。也可以在 java 中编写软件(但我真的建议使用 gcj 本地编译它)。无论如何(如果你决定使用 c++)你应该使用编译器标志来优化你的代码以达到最佳性能并启用 cpu 特定的优化。