3

我有一个相当大的 DataSnap 服务器,它将 24/7 运行,它将替代当前运行的 MIDAS (COM) 服务器。现在我面临的问题是如何更新该服务器而不必强制断开所有连接的客户端。

使用当前的 midas 服务器(顺便说一下,它没有大量的服务流量)我只是等到没有连接,然后关闭服务器应用程序并替换 exe 文件。如果在服务器“关闭”时发生新连接,作为 COM 对象,它将被操作系统“拉起”,不会给客户端带来任何问题。

新的 DataSnap 架构不再基于 COM(太棒了!),但是这样我就失去了停止服务器而不会导致新连接失败的机会。

我认为某种 TCP“代理”或“隧道”可以解决我的问题,所以我可以简单地将新的服务器 exe 放在某个地方,并让该“代理”将客户端连接重定向到新的 DS 服务器。我已经尝试过 TIdMappedPortTCP,但它不断地挂在服务器-客户端对话框的随机点上。

有任何想法吗?

编辑:出于效率原因,我在纯 TCP/IP 传输上使用 DataSnap,因此 http 代理不适合我的具体情况。

4

1 回答 1

1

也许你应该看一下命名服务的等价物?可以像 Datasnap 服务器一样简单,您可以对其进行方法调用并返回“主”服务器的 IP 地址。然后,当您想要删除服务器进行维护时,您可以更改命名服务器分配的 IP 地址,以便将新客户端路由到它。当您的主服务器备份时,您可以将 IP 更改回来。

您仍然有引导问题(即,他们如何找到命名服务器的 IP),但这可以简单到在客户端的配置文件中有几个 IP 地址,如果第一个失败,则返回到第二。

于 2012-08-16T01:08:55.050 回答