论坛首页 综合技术论坛

erlang节点间connect_all流程

浏览 1572 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-03-04  
The default when a connection is established between two nodes, is to immediately connect all other visible nodes as well. This way, there is always a fully connected network. If there are nodes with different cookies, this method might be inappropriate and the command line flag -connect_all false must be set, see erl(1).


从global.erl摘抄的...


%% Suppose nodes A and B connect, and C is connected to A.
%% Here's the algorithm's flow:
%%
%% Node A
%% ------
%% << {nodeup, B}
%%   TheLocker ! {nodeup, ..., Node, ...} (there is one locker per node)
%% B ! {init_connect, ..., {..., TheLockerAtA, ...}}
%% << {init_connect, TheLockerAtB}
%%   [The lockers try to set the lock]
%% << {lock_is_set, B, ...}
%%   [Now, lock is set in both partitions]
%% B ! {exchange, A, Names, ...}
%% << {exchange, B, Names, ...}
%%   [solve conflict]
%% B ! {resolved, A, ResolvedA, KnownAtA, ...}
%% << {resolved, B, ResolvedB, KnownAtB, ...}
%% C ! {new_nodes, ResolvedAandB, [B]}
%%
%% Node C
%% ------
%% << {new_nodes, ResolvedOps, NewNodes}
%%   [insert Ops]
%% ping(NewNodes)
%% << {nodeup, B}
%% <ignore this one>
%%

A和B之间先互相换信息,A告诉C有关B的信息, C会主动连接B的 这是在global模块实现的 而不是erts的一部分.

   发表时间:2009-03-04  
哦..这个要回头看看...
就爱老大贴E文....
0 请登录后投票
   发表时间:2009-03-04  
哈哈 俺只是把有用的信息提供给大家看 形式就不重要 请大家原谅
0 请登录后投票
   发表时间:2009-03-04  
哦,我明白了,A和B之间确认,是不是用来确定B是否指定为connect_all false?
呵呵.如果是, 就不会返回给C了.
0 请登录后投票
   发表时间:2009-03-04  
你是对的!
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics