high佬全 发表于 2015-2-4 02:22:24

远程程序调用

有一段时间没有上过贴了。有部分原因是这几天没什么时间;不过主要的原因还是我找不到素材和近况在书上看到的
还是一知半解,所以不敢上贴。希望大家能继续跟帖,我会多加努力多找些好东西。
下面是我这次想介绍的,在本地调用和远程调用中主要是远程节点可能会失效,在《erlang编程指南》中有三种方法解决

1添加一个超时:
   remote_call(Message,Node) ->
       {facserver,Node} ! {self(),Message},
       receive
          {ok,Res} ->
               Res
          after 1000 ->
       end.

2就是链接到服务器进程用到 spawn_link/4,跟spawn/4不同。
   setup() ->
         process_flage(trap_exit,true),
         spawn_link('bar@ST',myrpc,server,[]).

3用monitor_node/2监控节点
      remote_call(Message,Node)->
          monitor_node(Node,true),
          {facserver,Node}! {self(),Message},
             receive
                {ok,Res} ->
                     monitor_node(Node,false),
                     Res;
                {nodedown,Node} ->
                     {error,node_down}
             end.
我觉得第三种方法是monitor_node(Node,true),向远程监控发送了消息,远程的监控根据节点的
存在与否发送不同的消息回来,所以在调用了monitor_node(Node,true)后就必须用monitor_node(Node,false),
来接收远程发来的消息。



页: [1]
查看完整版本: 远程程序调用