您的位置:首页 > Web前端 > Node.js

erlang节点互联

2017-10-30 11:18 429 查看

前提:

erlang节点的连通是传递性的,即A节点连通B节点,若B节点之前已经连通C节点,那A也会连通C;节点间的通讯其实就是tcp连接,所以能少则少,erlang有提供 -connect_all false 启动参数,这样A连通B时就不会跟着连通C

问题:

假设有三组节点,唯一中央节点C;云节点组Y1,Y2…YN;普通节点组N1,N2…NN;

云节点组跟普通节点组都跟C连通,怎么让云节点组跟普通节点组在需要通讯时连通?

方案:

所有节点在跟C连通后,由C收集所有节点的cookie,并把cookie告知云节点组,云节点调用erlang:set_cookie(Node, Cookie),这时云节点跟普通节点并没有连通,但需用通讯时就会自动连通;

说白了就是N1向Y1发送某个命令=用tcp发送一条数据,在验证时N1发现这个Y1的cookie跟自己存的Y1的cookie一致,所以就允许通讯,所以就连通了,否则则拒绝

http://download.csdn.net/download/ownhome/10044405

这里搞了测试的代码,十分简陋,也无注释

后续

发现两节点间互联并不一定得cookie相同,比如节点A,B,A设置B的cookie为test,B也设置A的cookie为test,这时也是可以连通的



最后欢迎大神指点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  erlang node