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

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

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

Erlang 分布式編程介紹

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

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

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

以下舉一簡略實例:

圖:

編程介紹圖1

圖:

編程介紹圖2

圖:


編程介紹圖3

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

圖:

編程介紹圖4

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

相關(guān)資訊