`
qiezi
  • 浏览: 497781 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

erlang分布式节点通讯方式

阅读更多
搜到这篇:
erlang网络编程的几个性能调优和注意点

早看到这个就好了,我也是用strace发现它用的是poll,顺便搞清楚了erlang的分布式节点通讯方式。

erlang分布式节点通讯,A节点连接B节点,如果在同一机器上,只需要进程间通讯就可以找到节点。不在同一台机器上,A先连接B所在机器的4369端口,寻找节点。如果找到,就通知B节点监听一个端口,再回复A让它连接这个端口。

监听4369端口的是个后台进程epmd,在linux上它使用select,它只建短连接。windows上是epmd.exe。在linux上,节点的监听端口使用poll,指定+K true参数以后,会使用epoll,当然需要编译时打开开关。

每个节点只会监听一个端口,2个节点之间建立连接后,节点之间任意方向的通讯都会走这条连接,这种通讯方式是最合理的,我在做服务器间通讯时也想这种方式,不过这种方式通常是异步操作,所以一直没去实现它,目前服务器间都是临时建短连接,一般通讯量都不大,用做cache同步,腾讯好像也是这么干的。

多个节点之间遵循的规则如下:
1、每个节点只监听一个端口。
2、A节点连接B节点,还没有建立连接,则A connect到B;如果B还没有监听端口,就开一个端口监听。

这种方式可以保证任意两节点之间断开连接,不影响其它节点。
分享到:
评论
1 楼 mryufeng 2007-10-19  
节点启动的时候 会把自己监听的端口 汇报到epmd去 其他连接要联机它的时候 根据node名称向epmd质询listen端口 然后发起连接。 这个过程由net_kernel模块负责协调。

http://mryufeng.iteye.com

相关推荐

    Erlang分布式节点中的注册进程使用实例

    Erlang的分布式节点通信依赖于节点名来识别网络中的每个节点。节点名通常由两部分组成,一个是节点的主机名,另外一个是节点在该主机上的名称。节点之间通过这种方式进行识别和通信。 在Erlang中,节点的注册进程是...

    erlang节点连通测试

    节点之间可以进行通信,这是Erlang分布式计算的基础。现在我们来深入探讨如何进行Erlang节点的连通测试以及如何在需要通信时建立连接。 ### 1. Erlang节点的连接原理 在Erlang中,节点之间的连接是基于TCP/IP协议...

    编写分布式的Erlang程序:陷阱和对策

    这里提到的陷阱主要指的是在开发分布式Erlang程序时可能会遇到的问题,这些问题往往由于开发者对Erlang分布式的某些特性的理解不足而产生。以下是一些具体的陷阱: 1. **消息传递的顺序性**:虽然Erlang提供了消息...

    EdpBench:Erlang 分布式协议 (EDP) 基准

    Erlang分布式协议基准这是一个基准生成器,用于测量 Erlang 和 Java 节点之间的消息和字节传输速率。 它使用网络上的和包来创建 Java 节点,该节点知道 Erlang 端口映射器( )、数据类型及其分布式协议。基准为了...

    Erlang6大数据存储方式总结

    Erlang,一种由Ericsson开发的面向并发的编程语言,以其在分布式系统和实时高可用性场景中的优秀性能而闻名。在Erlang中,处理大数据存储有多种方式,其中包括ETS(Erlang Term Storage)、DETS(Distributed Erlang...

    分布式应用Erlang:Erlang_OTP_19_win64

    Erlang节点可以在不同的机器上运行,并通过简单的名称解析进行通信。这种分布式的特性使得构建跨多台服务器的集群变得简单,从而实现负载均衡和故障恢复。在Erlang OTP中,分布式数据库Mnesia也提供了强一致性和高...

    编写分布式的Erlang程序_陷阱和对策(中文版)

    这需要理解如何启动和管理分布式节点,以及如何在节点间进行通信。 2. **进程通信**:Erlang的进程模型是其核心特性之一。进程间通过发送和接收消息进行通信,这种模型强调了无共享状态和故障隔离。理解和熟练使用`...

    Python-inetsshdist一个运行在ssh上的Erlang发行版网络协议

    `Python-inetsshdist` 是一个独特的项目,它允许Erlang节点通过安全的Shell (SSH) 协议进行通信,从而扩展了Erlang分布式计算的能力。Erlang是一种面向并发的编程语言,其分布式特性使得在多节点间进行高效、可靠的...

    图书:Erlang和OTP实战

    3. 分布式系统构建:学习如何在Erlang节点间进行通信,以及如何构建分布式应用程序。 4. 并发编程:探讨Erlang进程间的同步和异步通信,以及避免竞态条件和死锁的方法。 5. 容错与恢复:了解Erlang的故障检测和恢复...

    erlang学习4.pdf

    ### Erlang分布式调用与TableServer支持详解 #### 前言 Erlang作为一种专为构建高并发、高可用性系统而设计的编程语言,其核心特性之一就是强大的分布式处理能力。本篇文档旨在深入解析Erlang的分布式调用机制及...

    erlang编程 Introducing Erlang

    Erlang支持跨节点的分布式计算,允许不同物理机器上的进程之间通信。分布式Erlang使用虚拟机(VM)的克隆,使得构建大规模分布式系统变得简单。 ### 7. 错误处理与恢复 Erlang采用“let it crash”哲学,鼓励程序...

    c# 版ErlangOtp跨平台通信框架(Java版的转译)

    这个文件名强烈暗示了它是Erlang OTP库的C#版本,可能包含了Erlang节点交互、消息传递等功能。 4. `vjsvwaux.dll`:这可能是一个辅助库,为.NET环境中的Erlang OTP支持提供额外的功能或工具。 5. `vjslibcw.dll`:...

    erlang programming

    Erlang提供了一套完整的工具和库,如分布式节点、分布式进程、分布式数据库和分布式故障恢复机制,使得开发者能构建出容错性极强的系统。此书可能包含如何设计容错架构、处理网络分区和数据一致性问题等内容。 4. *...

    erlang服务器集合

    3. **分布式特性**: 作为一款分布式语言,Erlang在设计时就考虑了节点间的通信和数据复制。在这个集合中,我们可能会发现如何在Erlang节点之间进行数据交换和协调工作负载的实现,这对于构建分布式系统至关重要。 4...

    Node.js-Clusterluck-以node.js编写的类似于erlang的分散式分布式系统的库

    3. **分布式计算**:Clusterluck 能够在多核 CPU 或多个物理节点上分布负载,从而实现跨机器的分布式计算。这使得大型应用程序能够更高效地利用硬件资源,提高系统的整体性能。 4. **容错与恢复**:借鉴 Erlang 的...

    rabbitMQ安装与配置(分布式配置)

    在节点 161 的 `/etc/hosts` 文件中配置分布式节点。 参考文献 * RabbitMQ 官方文档:http://www.rabbitmq.com/install-rpm.html * RabbitMQ 分布式配置:http://www.rabbitmq.com/clustering.html * Hammer-Nail ...

    Erlang深度分析

    在Erlang的分布式环境中,节点之间的通信是透明的,开发者可以将Erlang程序部署在不同的物理或虚拟机上,并且它们可以相互通信,就像在同一台机器上一样。 ##### 1.2 Erlang Distributed Application Erlang的...

    erlang深度分析.pdf

    Erlang的heart进程是系统监视器,它负责监测和恢复Erlang节点的故障。这个机制是Erlang高可用性的基础。 #### 9. 新增特性和更新 ***g的R12B版本包含了Percept等新模块,提供了更深入的性能监控和调测工具。Erlang...

    erlang_面对软件错误构建可靠的分布式系统

    3. **容错机制**:Erlang支持分布式计算,可以在多台机器上运行,即使部分节点故障,其他节点仍能继续工作。此外,Erlang的 OTP(Open Telephony Platform)框架提供了健壮的容错服务,如监控、重启策略和状态转移,...

Global site tag (gtag.js) - Google Analytics