0 0

Erlang中进程占用稀有资源(例如listen-port)时, 如何进行"热替换"?10

这几天看Erlang中的"热替换"这个特性时, 发现一个问题, 如下:
我用gen_tcp:listen(8888, ...)占用了8888这个端口, 然后我想在程序运行的状态下, 重新修改下Src (ReCompile), 我的步骤是这样的:
1. c(test).
2. test:listen(8888).
3. 修改test的src
4. c(test).
5. test:listen(8888).  %%这里错误了.

原本我想的比较简单, 按照一般的程序来说, 直接运行一个新的版本, 后续的client程序就会调用到这个新的版本上, 但是现在看不能这么做.

我想在不中断test程序的基础上进行"热替换",
请问前辈们是如何解决这个问题的呢???

备注:
我目前想到的一种方法是"绕过", 即把listen()的程序和process()的程序分别写在不同的module中, 这样recompile的时候只recomiple - process()的模块, 应该就可以避免这个问题, 这也是我能想到的唯一解决这个问题的方法了~_~

2009年7月24日 10:38
目前还没有答案

相关推荐

    Erlang应用部署与热代码替换--理解2

    - 如何处理不兼容的热代码替换,例如当新版本API与旧版本不兼容时。 - 热代码替换的最佳实践,包括测试和回滚策略。 - 在大规模集群中的热代码替换策略,如分批更新或蓝绿部署。 总之,理解和掌握Erlang的应用部署...

    erlang 中进程

    在Erlang中,进程是并发执行的基本单元,它们轻量级且独立,彼此通过消息传递进行通信。下面将详细介绍Erlang中的进程以及如何使用它们进行并发开发。 1. 进程概念 在Erlang中,进程不同于操作系统中的线程或进程。...

    erlang port driver test

    在 Erlang 中,Port Driver 是一种机制,允许 Erlang 进程与外部 C 库或者其他语言编写的程序进行通信。Port Driver 提供了一种方式,使得 Erlang 系统能够与外部世界交互,执行低级别的I/O操作或调用非Erlang代码...

    erlang-asn1-19.3.6.4-1.el7.x86_64.rpm

    erlang-asn1-19.3.6.4-1.el7.x86_64.rpm

    erlang代码热替换与应用部署

    本文将深入探讨Erlang中的代码热替换(Code Replacement)技术及其在应用部署中的重要性。 代码热替换是Erlang的一大特色,它允许在不中断运行服务的情况下更新和替换正在运行的代码。这一特性使得Elang系统可以在...

    最新版erlang-23.3.4.3-1.el7.x86_64.rpm(CentOS7)

    Erlang以其轻量级进程、消息传递模型和热代码更新等特性,为构建高可用性和可扩展性的系统提供了强大的支持。 RabbitMQ是一个开源的消息代理和队列服务器,它基于AMQP(Advanced Message Queuing Protocol)标准...

    erlang-xmerl-22.3-1.el7.x86_64.rpm 镜像下载

    erlang-xmerl-22.3-1.el7.x86_64.rpm,rabbitMQ安装需要依赖此环境。Erlang 是一种多用途编程语言,主要用于开发并发和分布式系统。它最初是一种专有的编程语言,Ericsson 使用它来开发电话和通信应用程序。

    erlang-sd_notify-1.0-2.el7.x86_64.rpm

    erlang-sd_notify-1.0-2.el7.x86_64.rpm

    esl-erlang-26.0.2x86-64.zip

    error: /tmp/esl-erlang_26.0.2-1~alinux~3_x86_64.rpm : not an rpm package (or packape manifest): arning: /tmp/rabbitmg-erver 3.12.4-1 all.rpm: Header V4 RSA/SHA512 Signature, key ID 6026dfca: NOKEY ...

    erlang_版本24.3.4.4

    Erlang以其强大的错误恢复能力和轻量级进程(称为Erlang进程)而闻名,这些进程具有内置的并发性和容错性。 在安装Erlang 24.3.4.4之前,首先需要了解你的操作系统是否支持。Erlang支持多种平台,包括Windows、...

    erlang 深度分析

    - **概念**: Port驱动程序允许Erlang进程与外部程序进行通信。 - **实现**: 通过`erlang:open_port/2`函数创建一个Port。 - **应用场景**: 实现Erlang与C语言编写的程序之间的交互。 #### 13. SMP支持 - **概念**: ...

    erlang-rpm-21.3.4.zip

    1. **轻量级进程**:Erlang中的进程非常轻便,消耗资源少,可以实现大量并发处理,适合构建高并发、高可用性的系统。 2. **分布式计算**:Erlang节点间可以通过网络进行通信,允许在多台机器上分布运行程序,提高了...

    Erlang 中的Module级别热部署

    2. **进程间通信 (IPC)**:Erlang 支持进程之间的消息传递,这使得旧版本的进程可以通过 IPC 与新版本的进程进行通信。 3. **代码迁移**:Erlang 提供了机制来优雅地让旧版本的进程迁移到新版本的模块上。 #### 四...

    erlang-24.0.3-1.el8.x86_64.rpm资源

    erlang-24.0.3-1.el8.x86_64.rpm资源

    erlang-erts-19.3.6.4-1.el7.x86_64.rpm

    erlang-erts-19.3.6.4-1.el7.x86_64.rpm

    esl-erlang_16.b.3-2~centos~6_amd64.rpm

    esl-erlang_16.b.3-2~centos~6_amd64.rpm

    可在ubuntu上安装erlang的deb包

    This package contains the Erlang/OTP runtime implementation, which is configured and built with HiPE support (allows compiling to native code), and minimal set of Erlang applications: compiler - ...

    erlang-23.2.3-1.el7.x86_64.rpm和erlang-23.2.1-1.el7.x86_64.rpm.rar

    标题中的"erlang-23.2.3-1.el7.x86_64.rpm"和"erlang-23.2.1-1.el7.x86_64.rpm.rar"代表了两个不同的Erlang版本。`.rpm`文件是用于Red Hat Enterprise Linux (RHEL) 和其衍生发行版如CentOS的软件包管理格式,而`....

    erlang-xmerl-23.0.3-1.el7.x86_64.rpm 镜像下载

    erlang-xmerl-23.0.3-1.el7.x86_64.rpm,rabbitMQ安装需要依赖此环境。Erlang 是一种多用途编程语言,主要用于开发并发和分布式系统。它最初是一种专有的编程语言,Ericsson 使用它来开发电话和通信应用程序。

Global site tag (gtag.js) - Google Analytics