`
litaocheng
  • 浏览: 337149 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Erlang节点short names 和long names

阅读更多

erl node启动方法

short name:

longname:

说明:

Name :: atom() || string()
ShortHost :: atom() || string(), 不可含有"."。比如"myhost"
FullHost :: [ShortHost()] || Ip, 比如"test.mydomain.com"和"8.34.135.3"

short name 和 long name主要为格式上的区别,long name中Host如果为域名,需要进行DNS解析。

我们也可以在hosts中添加类似:

ip ShotHost

的Entry使shortname name节点支持其他主机(请参考后面介绍)

 

Note

注意,shot name的节点和long name的节点不能互相通信。

示例

short name:

假设本机/etc/hosts配置为:8.27.86.135 da6600.fb.joyent.us

erl -sname cheng % 启动了一个名叫:cheng@da6600 的Node

erl -name cheng % 启动了一个名叫:cheng@da6600.fb.joyent.us 的Node

如果我们的本机hosts配置中,没有指定域名,那么需要我们指定Host:

erl -sname cheng@da6600 % 启动了一个名叫:cheng@da6600的Node

 

long name:

erl -name cheng@da6600

erl -name cheng@da6600.fb.joyent.us

erl -name cheng@8.27.86.135

请注意,此3个longname Node是同一个Node

应用

很多资料中,当进行分布式程序开发时,需要经历下面的步骤

  1. 本机单个节点进行测试,
  2. 本机多个节点进行测试,
  3. 多台主机进行接近真实环境的测试

其中第2步,常常是使用 erl -sname Name 类似的方法,产生Node, 因此我们印象中,好像sname只能是在本机的情况下使用?

通常情况下,shortname是限于本机的多个节点,longname可以跨越多台主机(通过IP,DNS解析)。

当然我们也可以像使用long name Node一样,使用short name Node。不同的是long name可以通过DNS进行解析, 而short name必须手动的在hosts中添加对应的映射。这样做的目的就是将本地的请求转发到目标的主机。

好了让我们使用short name来试验一下

server1(ip:8.27.86.135)

启动node:

erl -sname foo@server1

server2(server2也可以在内网当中,此时链接只能由server2发起)

/etc/hosts中添加:

8.27.86.135 server1

随后启动node:

erl -sname bar

> net_kernel:connect_node('foo@server1').
true
> nodes().
> [foo@server1]

这样,两个节点就已经链接了。

同理,我们也可以在server1中添加一个条目,为server2其一个ShortName,随后连接它。

到此,对于short name, long name的使用应该比较清晰了。

分享到:
评论
2 楼 mryufeng 2009-02-11  
-sname Name
    Makes the Erlang runtime system into a distributed node, similar to -name, but the host name portion of the node name Name@Host will be the short name, not fully qualified.
    This is sometimes the only way to run distributed Erlang if the DNS (Domain Name System) is not running. There can be no communication between nodes running with the -sname flag and those running with the -name flag, as node names must be unique in distributed Erlang systems.


-name Name
    Makes the Erlang runtime system into a distributed node. This flag invokes all network servers necessary for a node to become distributed. See net_kernel(3). It is also ensured that epmd runs on the current host before Erlang is started. See epmd(1).
    The name of the node will be Name@Host, where Host is the fully qualified host name of the current host. For short names, use the -sname flag instead.


用途和差别这里说的很明白!

http://blog.yufeng.info
1 楼 djw_posion 2009-02-06  
看了此文章,终于明白shoertname和longname的区别了,十分感谢!  

相关推荐

    erlang节点连通测试

    在Erlang中,你可以使用`erlang:monitor_node/2`和`erlang:demonitor/1`函数来监控和取消监控其他节点的状态。当需要两个未连通的节点C和D进行通信时,可以在节点C上执行: ```erlang erlang:monitor_node(node(d),...

    erlang启动多节点,跨节点调用函数

    1.完成makefile,直接运行/...2.完成启动多节点的脚本,运行/script目录中的run.cmd可以启动3个节点, 节点的配置在/config目录config.txt中 3.完成跨节点函数的调用,记录日志都会在gm节点中执行 4.完成日志记录系统

    mule-erlang-transport:一个 Mule 传输器,可以向 Erlang 节点发送消息和从 Erlang 节点接收消息

    骡子郎运输 可以向 Erlang 节点发送消息和从 Erlang 节点接收消息的传输。先决条件必须在要使用此传输的主机上安装 Erlang R13B01 或更高版本。在使用 Erlang 传输之前必须在启动 Erlang 连接器之前运行。 如果你有...

    Pyrlang:在Python 3.5+中实现的Erlang节点(基于Asyncio)

    Pyrlang-Python中的Erlang节点这是Python 3.5中的嵌入式Erlang节点实现,实现了网络Erlang节点协议。 它旨在允许现有的Python项目与BEAM语言(Erlang,Elixir,Alpaca,Luaerl,LFE,Clojerl等)之间进行互操作。 仅...

    ainterface:在Akka的ActorSystem上运行Erlang节点

    Akka是一个用Scala语言构建的高性能、分布式...这涉及到Akka的`akka-cluster`模块,Erlang节点的连接和配置,以及Actor与Erlang进程之间的通信。要了解更多细节,深入研究`ainterface-master`源代码是必不可少的步骤。

    erlang-ffi:与Haskell的Erlang节点通信

    它是原始改进版本,可与新的和现代的堆栈配合使用。 埃尔朗菲 讲出Erlang网络协议并模拟网络上的Erlang节点。 完全能够与Erlang进行双向通信。 在合理范围内,Erlang类型已映射到Haskell类型。 发给Erlang的消息只是...

    ergo:使用Golang中ErlangOTP的技术和设计模式创建网状网络的框架

    Ergo框架 在Golang中实现Erlang / OTP。 速度是原始Erlang / OTP的x5倍。...Erlang节点(运行单节点/) (以摆脱erlang的依赖) 产生类似Erlang的进程 使用简单原子注册/注销过程 GenServer行为支持(具有原子状态)

    Erlang_CNode用户指

    6. **性能优化**:提供关于如何最大限度地提高CNode与Erlang节点之间通信效率的提示和最佳实践。 7. **案例研究和示例代码**:提供实际的应用场景和代码示例,帮助用户更好地理解和应用CNode技术。 **更多erlang...

    Erlang的高级特性和应用

    Erlang 的分布式特性使其能在多个节点之间轻松部署和管理应用程序。它内置了分布式的原语,支持cnode和jnode,进程可以在节点间自由迁移。节点间的通信高效、安全,通过epmd实现类似DNS的名称解析。OTP(Open ...

    erlang编程 Introducing Erlang

    "Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,旨在帮助初学者理解和掌握Erlang的核心概念和特性。 ### 1. 函数式编程基础 Erlang基于函数式编程范式,这意味着程序由纯函数构成,没有副作用。...

    Erlang:并行计算和云计算

    - **分布式计算**:Erlang天生支持分布式系统,可以在多个节点上运行,并能透明地处理节点间的通信。这使得构建大规模并行应用成为可能,尤其适合处理高并发场景。 - **容错性**:Erlang采用故障隔离和恢复策略,当...

    图书:Erlang和OTP实战

    《Erlang和OTP实战》是一本专注于Erlang编程语言和OTP(Open Telecom Platform)框架的专业书籍。这本书深入浅出地介绍了Erlang在分布式系统、并发处理以及高可用性设计中的应用,同时结合 OTP 提供了强大的工具和库...

    ansible-nodetool:Ansible模块,用于通过Erlang RPC与Erlang节点进行交互

    **Ansible-nodetool 模块详解** Ansible 是一款强大的自动化运维工具,它允许系统管理员无需在目标机器上...通过它,你可以利用 Ansible 的强大功能来自动化和简化对 Erlang 节点的运维工作,提高效率,减少人为错误。

    erlang_版本24.3.4.4

    - **分布式**:Erlang节点可以在多台机器上运行,并可以相互通信,实现分布式计算。 - **热升级**:Erlang支持在线代码升级,无需停机即可更新应用,保证服务的连续性。 - **错误处理**:Erlang采用异常处理机制,...

    Erlang和RabbitMQ安装包

    Erlang和RabbitMQ是两个在分布式系统和消息队列领域中至关重要的技术。Erlang是一种函数式编程语言,以其并发性、容错性和热代码升级能力而闻名,而RabbitMQ则是基于Erlang构建的一个开源消息代理,用于实现应用程序...

    erlang高级原理和应用PPT

    2. **分布式特性**:Erlang的分布式节点通信,分布式数据管理,以及如何在多台机器上部署和运行Erlang应用。 3. **故障恢复与容错**:Erlang的错误处理模式,如监控树(supervision trees)和故障检测,以及如何...

    Erlang22.3和RabbitMQ3.8.4.zip

    Erlang22.3和RabbitMQ3.8.4是两个紧密相关的技术组件,它们在分布式系统和消息队列领域中发挥着至关重要的作用。Erlang是一种并发性极强、容错性良好的编程语言,而RabbitMQ则是一个基于AMQP(Advanced Message ...

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

    4. **优化节点间通信**:对于跨节点通信,可以采用更高效的协议和数据传输格式,比如使用二进制格式代替传统的Erlang术语表(ERT)格式,以减少序列化和反序列化的开销。 5. **测试与模拟**:在部署分布式系统之前,...

    erlang深度分析.pdf

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

    仿知乎java源码-py_interface:Erlang到Python的集成:Python程序可以显示为Erlang节点

    Erlang是一种面向并发、分布式计算的语言,常用于构建高可用性和容错性的系统。Python则以其简洁的语法和丰富的库资源广泛应用于数据处理、Web开发等领域。这个项目可能是为了在Erlang系统中调用Python模块,或者...

Global site tag (gtag.js) - Google Analytics