c - 在部署新代码或热插拔代码时维护套接字连接?

标签 c node.js sockets erlang distributed-computing

<分区>

是否可以在更新代码、重启进程或热插拔代码时保持套接字连接?

我正在考虑我正在开发的下一代分布式服务器应用程序(目前是用 node.js 编写的),我希望能够在服务器和远程客户端有网络连接,即使服务器代码更新或特定实例重新启动或消失。

是否可能出现以下情况?

  • 在代码重新启动之前,它存储套接字信息,而远程端保持打开状态。这似乎在 C 中完全可行。
  • 在代码重新启动之前,它将套接字信息发送到另一个实例或进程?
  • 在 Erlang 案例中,如果一段特定的代码被热交换,数据结构和连接是否不会受到干扰?
  • 在一些元组空间中分配套接字。我对此一无所知,但至少听起来很有趣。

有什么我应该看的引用资料吗?在我看来,Erlang 是该系统 future 版本的一个很好的候选者,但除了玩具示异常(exception),我没有将它用于任何其他用途。

编辑:在 linux 上运行

最佳答案

编辑:修正一个拼写错误。

好吧,您没有提到它在哪个平台上运行,所以我假设是 Linux/Unix。至少有两种方法可以做到这一点。

  1. 向应用发送信号,意思是“fork and exec your newer self”。新的自己继承套接字。

  2. 您应该能够通过 unix-pipes 传递套接字 fds。你可以有一些最小的管家应用程序,它将向 app-v1 发送一个信号以将套接字转储到预定义的管道,完成后将其杀死,然后启动 app-v2 并通过 unix-pipe 再次将套接字传递给它。

关于c - 在部署新代码或热插拔代码时维护套接字连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830145/

相关文章:

c - 二维数组的排序

c - 什么是评价?

c - 大文件搜索算法

c - free() 在 char 数组上崩溃,但前提是该数组恰好包含 7 个元素

node.js - 如何解决 Mongoose 中的 UnhandledPromiseRejectionWarning?

javascript - 在 webpack 编译的 JavaScript 中读取 NodeJS process.argv

c - 使用 CRIU 工具迁移特定的 TCP 连接

c++ - 关闭套接字时防止 FIN_WAIT2

node.js - 如何使用proxyquire和mocha在单元测试中模拟方法调用时模拟时间延迟(超时)?

java - 打洞后未建立 TCP 连接