我有一个相当大的 DataSnap 服务器,它将 24/7 运行,它将替代当前运行的 MIDAS (COM) 服务器。现在我面临的问题是如何更新该服务器而不必强制断开所有连接的客户端。
使用当前的 midas 服务器(顺便说一下,没有大量的流量可供服务),我只需等到没有连接,然后关闭服务器应用程序并替换 exe 文件。如果在服务器“关闭”时发生新连接(作为 COM 对象),它将被操作系统“拉起”,不会给客户端带来任何问题。
新的 DataSnap 架构不再基于 COM(太棒了!),但这样我就失去了停止服务器而不导致新连接失败的机会。
我认为某种 TCP“代理”或“隧道”可以解决我的问题,因此我可以简单地将新的服务器 exe 放在某处,并让该“代理”将客户端连接重定向到新的 DS 服务器。我尝试过 TIdMappedPortTCP,但它在服务器-客户端对话框的随机点处持续挂起。
有任何想法吗?
编辑:出于效率原因,我在纯 TCP/IP 传输上使用 DataSnap,因此 http 代理不适合我的具体情况。
也许您应该看看相当于命名服务的东西?可以像 Datasnap 服务器一样简单,您可以在该服务器上进行方法调用并返回“主”服务器的 IP 地址。然后,当您想要删除服务器进行维护时,您可以更改命名服务器分发的 IP 地址,这样新的客户端就会路由到它。当您的主服务器备份后,您可以将 IP 更改回来。
您仍然遇到引导程序问题(即,它们如何找到命名服务器的 IP),但这可以很简单,只需在客户端的配置文件中包含几个 IP 地址,如果第一个失败,则返回到第二。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)