实现客户端 - masterserver / slaveserver应用程序java

时间:2009-02-16 14:16:30

标签: java client

我们有一个字符串处理服务(c ++,使用stdin / out for in / output),它有不同的布局,每个布局分别运行(最终将在不同的机器上运行),每个布局需要时间加载,这就是为什么它必须首次运行后继续运行。

我必须使用客户端实现一个系统,该系统将要求主服务器将其连接到实际运行相关布局服务的相关从服务器。从服务器将从客户端传递到服务的数据进行通信,完成后将在主服务器上为其他客户端提供。

问题是实施服务器的最佳方法是什么?我应该在slave / master之间保持一个开放的连接,直到进程完成,通知主节点连接已经结束,或者在同步函数中保留某种var来检查它吗?

我忽略了任何其他重要的输入(或其他设计),Thanx!

2 个答案:

答案 0 :(得分:0)

假设你无法取代C ++的东西,我就是这样做的。

我会设置一个主服务器。该服务器将运行一个接受请求的进程(可能是通过HTTP,因此它是一个Web服务),我会让它读取请求,解析它是什么,然后调用正确的从服务器。基本上它充当代理。一旦它收到来自从服务器的响应,它就会将其转发回呼叫者。这里的简单性意味着,如果您开始获得更多类型的请求,您可以为其设置其他服务器并向其提出循环请求。

从属服务器将是打开C ++程序并转发输入和检索输出的Web服务。这就是它所能做的一切。

我不打算保持打开连接(除了根据你的描述在slave和C ++程序之间)。只是对这个东西使用Web请求将在进程中保持主服务器和从服务器之间的连接打开,但这应该不是问题。这样您就不必担心这个细节了。

如果我是你,我会认真考虑用Java重新实现C ++代码或通过JNI或其他东西调用它。如果你可以避免它,我认为避免围绕C ++的Java包装器将是一个很好的设计目标。 Java可以在启动过程中执行任何昂贵的过程,然后像C ++代码一样在内存中保存一些内容。

我希望这会有所帮助。

答案 1 :(得分:0)

根据您的可扩展性需求,您可能需要查看Java NIO package。这将为您提供构建可扩展,无阻塞的服务器实现的起点。

相关问题