极速下载站 —— 提供优质软件下载服务,感受全新的极速下载体验!

最近更新 | 软件专题 | 软件分类 | 软件排行

您的位置:极速下载站资讯首页软件教程软件资讯 → Erlang 分布式编程介绍

Erlang 分布式编程介绍

时间:2019-07-29 19:07:48  作者:Dorise  浏览量:0

大家好!近期小编看到关于一些编程的书,其中看到书中介绍了 Erlang ,那么什么Erlang是什么呢?Erlang([\'ə:læŋ])是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。Erlang问世于1987年,经过十年的发展,于1998年发布开源版本。Erlang是运行于虚拟机的解释性语言,但是现在也包含有乌普萨拉大学高性能Erlang计划(HiPE)开发的本地代码编译器,自R11B-4版本开始,Erlang也开始支持脚本式解释器。在编程范型上,Erlang属于多重范型编程语言,涵盖函数式、并发式及分布式。顺序执行的Erlang是一个及早求值,单次赋值和动态类型的函数式编程语言。

Erlang 并发编程是在同一 Erlang 虚拟机上创立多个进程来完成的。而Erlang 的分布式编程能够经过在不同主机上的Erlang 虚拟机(能够运转在同一主机中或能够相互经过网络主机上)完成,其间运转Erlang 虚拟机的主机也称作Erlang 的节点。在Erlang 中,能够完成在一个Erlang 虚拟机上长途在另一个Erlang 虚拟机上创立新的作业的进程,然后运用其音讯传递机制,即将核算的数据发送到另一虚拟机上的作业进程,在另一虚拟机中核算后,再运用音讯传递机制将核算结果发送回来;也能够完成在一个Erlang虚拟机上以长途调用的方式在长途虚拟机上进行数据处理,并直接返回处理结果。
Erlang语言中与分布式编程有关的几个重要函数语法如下:
1.{pname,nodename}!Message
完成不同Erlang节点间的音讯发送,其间pname是长途节点进程的注册名,nodename是长途节点名。
2.spawn(nodename,modulename,fun,[arg1,arg2..])
完成在长途节点上发动一个进程,与spawn/3相比仅仅多了个节点名……
3.rpc:call(nodename,modulename,fun,[arg1,arg2..])
完成长途调用的函数,它是Erlang标准库中的模块rpc中的函数,其参数与2中相同。
4.node()
返回本地节点称号
Erlang节点的发动方法:
1.在同一主机上发动多个Erlang节点指令行格局如下:
erl -sname nodename
运用短称号的方式发动一个称号为nodename的节点,其节点称号为发动后Erlang指令提示符所示,比如Erlang指令提示符为:
(ndb@USER-20170714FN)2>
则其节点称号为:ndb@USER-20170714FN。
2.在能够相互通信的主机上别离发动Erlang节点指令行格局如下:
erl -name nodename -setcookie abc
与1大致相同,区别是运用参数设置了节点的cookie,假如要完成节点间的通信,就需要多个节点的cookie的值完全相同。而1中在同一主机中,会主动设置为相同的cookie,所以没有进行显式的设置。

以下举一简略实例:

图:

编程介绍图1

图:

编程介绍图2

图:


编程介绍图3

假如在网络中不同主机上建立Erlang节点,则需要DNS支持,而且各节点运用-name参数和相同的cookie,一起防火墙应开启TCP和UDP的4396端口。这儿仅在虚拟机和物理机的局域网中作相关测试如下图:

图:

编程介绍图4

因为没有DNS支持,所以在发动节点时运用节点名@IP的方式,如“[email protected]”,上面的窗口是Win7下发动的Erlang节点,而下面的窗口是虚拟机中Fedora26中的Erlang节点,其间句子1在Win7中的Erlang节点上长途发动了进程,以运转remotes/0函数,在cde节点上经过i()指令能够查看到正在运转的进程。

相关资讯