測試環境和 一樣,192.168.0.182(centos-182)和192.168.0.183(centos-183),
1.按照上面鏈結(步驟1-4)設定通過ssh hostname 免輸入密碼直接登入。
2.設定erlang的magiccookie,由於都是以root賬號操作,分別在兩台機子上執行以下命令
cd /root
vi .erlang.cookie
輸入shell**
centos_erlang
:wq 退出儲存
chmod 400 .erlang.cookie,linux下需要使用者對magiccookie有讀許可權
4.ping-pong測試**,**自網上erlang教程,tut17.erl
erlang**
-module(tut17).
-export([start_ping/1, start_pong/0, ping/2, pong/0]).
ping(0, pong_node) ->
! finished,
io:format("ping finished~n", );
ping(n, pong_node) ->
! ,
receive
pong ->
io:format("ping received pong~n", )
end,
ping(n - 1, pong_node).
pong() ->
receive
finished ->
io:format("pong finished~n", );
->
io:format("pong received ping~n", ),
ping_pid ! pong,
pong()
end.
start_pong() ->
register(pong, spawn(tut17, pong, )).
start_ping(pong_node) ->
spawn(tut17, ping, [3, pong_node]).
5.在centos-183上執行erl -sname 'pong' ,啟動pong節點,進入erl命令列之後輸入 tut17:start_pong().
在centos-182上執行 erl -sname 'ping',啟動ping節點,進入erl命令列之後輸入 tut17:start_ping('pong@centos-183').
命令及輸出見下圖:
注意在ping節點上的erl命令列啟動ping程序的時候如果輸入tut17:start_ping(pong@centos-183). 會報錯如下:
shell**
** exception error: bad argument in an arithmetic expression
in operator -/2
called as pong@centos - 183
在參考「莊周夢蝶」的 時就出現這個錯誤,後來在stackoverflow 上找到乙個相關問題 才得以解決!
erlang之分布式程式設計入門
我們可以看出,我們使用erl sname name的方式建立了2個節點,乙個叫pp,乙個叫faker,然後pp呼叫rpc call 函式呼叫了faker的函式,實現了不同節點的通訊。我們可以看出,我們這裡使用的是 name,而不是 sname,如果我們要在2太不同的電腦上進行2個節點間的通訊應該用 ...
多點分布式Erlang簡單實驗
正好趁著放假,拿出以前的東西好好玩玩,今天又回顧了一遍erlang裡啟動多個結點的過程,記錄在此。首先,啟動兩個點,foo 跟bar 命令 erl sname foo setcookie erlang erl sname bar setcookie erlang 測試兩點連通 net adm pin...
分布式 分布式鎖
本質是利用redis的setnx 方法的特性來加鎖,setnx 即key不存在則設定key,否則直接返回false,要求在分布式系統中使用同乙個redis服務,以下提供兩種解決方案 1 直接使用redistemplate 這其實並不能完全保證高併發下的安全問題,因為可能在鎖過期之後該執行緒尚未執行完...