【发布时间】:2020-04-03 16:35:08
【问题描述】:
有一个长连接的 TCP 套接字。最多两个客户端可以连接到服务器。换句话说,负载并不高。但是,一旦建立 TCP 连接,除非发生意外,例如服务器掉电或网络故障,否则套接字不会断开连接。重新启动进程时是否可以重用现有的 TCP 套接字?我认为不能使用像 AWS NLB 这样的 TCP 负载均衡器,因为现有的套接字不会移动到新的应用程序中。我希望在没有停机的情况下进行部署,因为我正在使用的系统是一个在套接字损坏和数据丢失时可能遭受财务损失的系统。低级套接字编程是可以的。
我已经阅读了 CloudFlare 的 https://blog.cloudflare.com/graceful-upgrades-in-go/ 文章,解释了 Nginx 的优雅重载机制。由于 HTTP 服务器是一个经常打开和关闭套接字的服务器,所以那篇文章假设服务器的连接有一天会关闭,但我的情况略有不同。所以我不确定这是否可以使用。
【问题讨论】:
-
你可能无法替换这个被设计协议破坏的东西?
-
哈哈..当它们断开连接时,它们会再次相互连接。恐怕只有在TCP连接丢失时才会丢失。当然最好改成request-response后终止的协议。
标签: sockets