極速下載站 —— 提供優(yōu)質(zhì)軟件下載服務(wù),感受全新的極速下載體驗(yàn)!

最近更新 | 軟件專題 | 軟件分類 | 軟件排行

您的位置:極速下載站資訊首頁(yè)軟件教程軟件資訊 → Erlang 分布式編程介紹

Erlang 分布式編程介紹

時(shí)間:2019-07-29 19:07:48  作者:Dorise  瀏覽量:0

大家好!近期小編看到關(guān)于一些編程的書,其中看到書中介紹了 Erlang ,那么什么Erlang是什么呢?Erlang([\'ə:læŋ])是一種通用的面向并發(fā)的編程語(yǔ)言,它由瑞典電信設(shè)備制造商愛立信所轄的CS-Lab開發(fā),目的是創(chuàng)造一種可以應(yīng)對(duì)大規(guī)模并發(fā)活動(dòng)的編程語(yǔ)言和運(yùn)行環(huán)境。Erlang問(wèn)世于1987年,經(jīng)過(guò)十年的發(fā)展,于1998年發(fā)布開源版本。Erlang是運(yùn)行于虛擬機(jī)的解釋性語(yǔ)言,但是現(xiàn)在也包含有烏普薩拉大學(xué)高性能Erlang計(jì)劃(HiPE)開發(fā)的本地代碼編譯器,自R11B-4版本開始,Erlang也開始支持腳本式解釋器。在編程范型上,Erlang屬于多重范型編程語(yǔ)言,涵蓋函數(shù)式、并發(fā)式及分布式。順序執(zhí)行的Erlang是一個(gè)及早求值,單次賦值和動(dòng)態(tài)類型的函數(shù)式編程語(yǔ)言。

Erlang 并發(fā)編程是在同一 Erlang 虛擬機(jī)上創(chuàng)立多個(gè)進(jìn)程來(lái)完成的。而Erlang 的分布式編程能夠經(jīng)過(guò)在不同主機(jī)上的Erlang 虛擬機(jī)(能夠運(yùn)轉(zhuǎn)在同一主機(jī)中或能夠相互經(jīng)過(guò)網(wǎng)絡(luò)主機(jī)上)完成,其間運(yùn)轉(zhuǎn)Erlang 虛擬機(jī)的主機(jī)也稱作Erlang 的節(jié)點(diǎn)。在Erlang 中,能夠完成在一個(gè)Erlang 虛擬機(jī)上長(zhǎng)途在另一個(gè)Erlang 虛擬機(jī)上創(chuàng)立新的作業(yè)的進(jìn)程,然后運(yùn)用其音訊傳遞機(jī)制,即將核算的數(shù)據(jù)發(fā)送到另一虛擬機(jī)上的作業(yè)進(jìn)程,在另一虛擬機(jī)中核算后,再運(yùn)用音訊傳遞機(jī)制將核算結(jié)果發(fā)送回來(lái);也能夠完成在一個(gè)Erlang虛擬機(jī)上以長(zhǎng)途調(diào)用的方式在長(zhǎng)途虛擬機(jī)上進(jìn)行數(shù)據(jù)處理,并直接返回處理結(jié)果。
Erlang語(yǔ)言中與分布式編程有關(guān)的幾個(gè)重要函數(shù)語(yǔ)法如下:
1.{pname,nodename}!Message
完成不同Erlang節(jié)點(diǎn)間的音訊發(fā)送,其間pname是長(zhǎng)途節(jié)點(diǎn)進(jìn)程的注冊(cè)名,nodename是長(zhǎng)途節(jié)點(diǎn)名。
2.spawn(nodename,modulename,fun,[arg1,arg2..])
完成在長(zhǎng)途節(jié)點(diǎn)上發(fā)動(dòng)一個(gè)進(jìn)程,與spawn/3相比僅僅多了個(gè)節(jié)點(diǎn)名……
3.rpc:call(nodename,modulename,fun,[arg1,arg2..])
完成長(zhǎng)途調(diào)用的函數(shù),它是Erlang標(biāo)準(zhǔn)庫(kù)中的模塊rpc中的函數(shù),其參數(shù)與2中相同。
4.node()
返回本地節(jié)點(diǎn)稱號(hào)
Erlang節(jié)點(diǎn)的發(fā)動(dòng)方法:
1.在同一主機(jī)上發(fā)動(dòng)多個(gè)Erlang節(jié)點(diǎn)指令行格局如下:
erl -sname nodename
運(yùn)用短稱號(hào)的方式發(fā)動(dòng)一個(gè)稱號(hào)為nodename的節(jié)點(diǎn),其節(jié)點(diǎn)稱號(hào)為發(fā)動(dòng)后Erlang指令提示符所示,比如Erlang指令提示符為:
(ndb@USER-20170714FN)2>
則其節(jié)點(diǎn)稱號(hào)為:ndb@USER-20170714FN。
2.在能夠相互通信的主機(jī)上別離發(fā)動(dòng)Erlang節(jié)點(diǎn)指令行格局如下:
erl -name nodename -setcookie abc
與1大致相同,區(qū)別是運(yùn)用參數(shù)設(shè)置了節(jié)點(diǎn)的cookie,假如要完成節(jié)點(diǎn)間的通信,就需要多個(gè)節(jié)點(diǎn)的cookie的值完全相同。而1中在同一主機(jī)中,會(huì)主動(dòng)設(shè)置為相同的cookie,所以沒有進(jìn)行顯式的設(shè)置。

以下舉一簡(jiǎn)略實(shí)例:

圖:

編程介紹圖1

圖:

編程介紹圖2

圖:


編程介紹圖3

假如在網(wǎng)絡(luò)中不同主機(jī)上建立Erlang節(jié)點(diǎn),則需要DNS支持,而且各節(jié)點(diǎn)運(yùn)用-name參數(shù)和相同的cookie,一起防火墻應(yīng)開啟TCP和UDP的4396端口。這兒僅在虛擬機(jī)和物理機(jī)的局域網(wǎng)中作相關(guān)測(cè)試如下圖:

圖:

編程介紹圖4

因?yàn)闆]有DNS支持,所以在發(fā)動(dòng)節(jié)點(diǎn)時(shí)運(yùn)用節(jié)點(diǎn)名@IP的方式,如“[email protected]”,上面的窗口是Win7下發(fā)動(dòng)的Erlang節(jié)點(diǎn),而下面的窗口是虛擬機(jī)中Fedora26中的Erlang節(jié)點(diǎn),其間句子1在Win7中的Erlang節(jié)點(diǎn)上長(zhǎng)途發(fā)動(dòng)了進(jìn)程,以運(yùn)轉(zhuǎn)remotes/0函數(shù),在cde節(jié)點(diǎn)上經(jīng)過(guò)i()指令能夠查看到正在運(yùn)轉(zhuǎn)的進(jìn)程。

相關(guān)資訊

軟件資訊排行
最新軟件資訊
軟件教程分類

更多常用電腦軟件