仅使用一个端口一起设计两个服务器

Design two servers together using only one port

本文关键字:服务器 两个 一起 一个      更新时间:2023-10-16

我是与服务器合作的新手,我有一个服务器设计问题。我目前有两个单独的应用程序服务器,可以通过以下方式一起使用:

初始连接是使用Server1进行的,该连接做出了一些决定(关于端口号和其他参数(,并在同一台计算机上使用这些参数启动Server2(我将可以访问所有创建的所有内容(。所有其他请求直接来自每个客户端。由于数据,我们每个客户端都需要处理Server2的单个版本。(我们的负载不大,所以这绝不是问题(

问题是所选端口号。他们并不总是为我们的客户开放。因此,我的问题是如何重新设计此系统,以便我仍然有单个版本的Server2版本,但是所有请求都来并通过Server1,因此仅在外部使用其端口(所有端口都可以在机器上内部可用,服务器正在运行该端口(?例如,可以使两家服务器以某种方式互相交谈,也许可以重定向到另一个服务器?如果我试图这样做,那么多个客户的TCP规格会变得相同吗?是否可以完全这样做,还是我必须重新考虑整个系统?

(如果完全重要的话,这两个服务器均按照Poco库在其文档中所建议的完全编写(

(

我不需要特定的代码,只是一些有关存在哪些可能性的准则。任何帮助和建议将不胜感激。

不确定您在这里处理哪些协议,但在我看来,您需要一个服务服务器(Server1(提供两个服务,例如" Hello"answers" Data Exchange"。然后,Server1应该能够识别其接收到的传入连接的种类,以及必须派遣它的何处。如果您需要为每个客户提供单独的流程,则有一些可能性。一个简单的方法是每个新数据交换连接为新的过程提供一个新的过程(我在这里用unix说话,但是Windows也有可能,请参阅此问题(。但是,这可能是太多的开销,相反,您可能更喜欢拥有长期寿命的每个客户server2实例。在这种情况下,一个选项是让Server1充当代理,将客户端请求通过本地/UNIX套接字或其他一些IPC机制转发到相应的Server2(在此体系结构中,使用POCO中的反应器框架可能是有意义的(;但是,这最终要求所有客户端的所有数据都可以通过Server1进行,这可能是首先将问题划分为多个过程的原因。因此,您拥有的选项是在Server2进程中复制客户端打开连接套接字(然后关闭Server1中的clock(。阅读此内容以及有关如何在Unix上进行操作或Windows的文档的问题(我不知道Poco抽象要做,但是我对Poco一无所知(。