- 在 Erlang 中没有共享,只有消息传递,因此分布式还是单机本质上没有什么区别。
- Erlang 集群是一个全联通网络。
- 节点启动:
- erl -name xx
适用于配有 DNS 的普通网络环境,需要给出节点的完全限定域名 - erl -sname xx
适用于完全限定域名不可用的情况
- erl -name xx
- 采用短节点名和长节点名的节点所处的通信模式是不同的,它们之间无法形成集群。
- 隐形节点:
借助一些特殊的节点,我们可以将多个集群合并成更大的、非全联通的集群。
这类节点经过特殊配置,不会对外传播其他节点的信息,它们甚至可以对其他节点隐身,以便对集群进行非侵入式监控。 - 建立连接:
net_adm:ping('haha@haha.com'). - EPMD(Erlang 端口映射守护进程):
- 启动每一个节点,EPMD 都会检查本地机器上是否运行着 EPMD,如果没有,节点就会自动启动 EPMD;
- EPMD 会追踪在本地机器上运行的每个节点,并记录分配给它们的端口号;
- 当一台机器上的 Erlang 节点试图与远程节点通信时, 本地的 EPMD 就会联络远程机器上的 EPMD(默认使用TCP/IP,端口号4369),询问在远程机器上有没有相应名字的节点。如果有,远程 EPMD 就会回复一个端口号,通过该端口便可直接与远程节点通信;
- EPMD 不会主动搜寻其他 EPMD,只有在某个节点主动搜寻其他节点时才能建立。
- 通信安全:
Erlang 默认的分布式模型基于这样一个假设,集群中的所有节点都运行在一个受信网络内。
如果这个假设不成立,或者其中的某些机器需要与外界通信,那么就应该直接在TCP(或 UDP、SCTP 等)之上配合恰当的应用层协议来实现非受信网络上的通信。此外还可以利用 SSL、SSH
《Erlang/OTP并发编程实战》第八章 分布式 Erlang/OTP 简介
最新推荐文章于 2025-10-26 17:13:35 发布

最低0.47元/天 解锁文章
1064

被折叠的 条评论
为什么被折叠?



