仅使用一个端口一起设计两个服务器
Design two servers together using only one port
我是与服务器合作的新手,我有一个服务器设计问题。我目前有两个单独的应用程序服务器,可以通过以下方式一起使用:
初始连接是使用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一无所知(。
- 如何在C++中从两个单独的for循环中添加两个数组
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 如何返回一个类的两个对象相加的结果
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 两个字符串在 c++ 中不相等
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 两个文件使用彼此的功能-如何解决
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 停止cmake target_link_libraries将插件中静态库的两个对象文件链接到静态库本身
- 将fold表达式与std::一起用于两个元组
- 如何在C++中比较两个char数组
- 在构建服务器上将 dll C++生成到两个平台 (x86+x64)
- 仅使用一个端口一起设计两个服务器
- Windows,C++:一个服务器套接字上有两个连接
- UNIX中两个进程之间通信的最佳方式:一个运行ruby服务器,另一个运行C++客户端
- 为什么同一服务器的两个版本的行为不同?
- 我需要制作两个c++脚本来压缩和解压两个不同平台windows移动和PHP服务器上的字符串