erlang节点互联

前提:

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,这时也是可以连通的
这里写图片描述

最后欢迎大神指点

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值