启动节点
节点A
节点B
在节点nodeB中查看注册的节点。
一个简单的名称服务器
-module(kvs).
-author("chen").
%% API
-export([start/0, store/2, lookup/1]).
start() -> register(kvs, spawn(fun() -> loop() end)).
store(Key, Value) -> rpc({store, Key, Value}).
lookup(Key) -> rpc({lookup, Key}).
rpc(Q) ->
kvs ! {self(), Q},
receive
{kvs, Reply} ->
Reply
end.
loop() ->
receive
{From, {store, Key, Value}} ->
put(Key, {ok, Value}),
From ! {kvs, true},
loop();
{From, {lookup, Key}} ->
From ! {kvs, get(Key)},
loop()
end.
在nodeB 中启动服务器
在节点nodeA上调用执行一个函数
rpc:call(Node, Module, Function, Args) -> Res | {badrpc, Reason}
Node:节点的地址,如节点名称nodeA,则 nodeA@192.163.1.164
Module, Function, Args就跟apply的(Module, Function, Args)
远程调用节点nodeB上的kvs :store(Key, Value) 函数。
成功执行,
通过调用lookup(Key)去查看刚刚存储的kv。
可以看到已经成功保存。