cowboy中分布式节点通信

Posted jackie-snow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cowboy中分布式节点通信相关的知识,希望对你有一定的参考价值。

项目开发中,web前端节点需要与远端的聊天服节点通信。聊天服使用了otp,但我对otp下的分布式通信不太清楚,造成了一些问题。

1)首先是cowboy节点的命名。具体参数是配置在工程目录rel下的vm.args文件中:

    -name [email protected]

    -setcookie xxxxx

    -heart

    或者在cowboy启动的控制台中输入node()查看节点命名。

 

2)知道远端结点命名后,首先要调用net_kernel:connect()连接。不过可能是因为是在单台服务器上的原因,我没有调用此接口,消息也可以成功路由到远端节点。调用如下:

    Ret = rpc:call(‘[email protected]‘, chatserver_app, chatver, []),

    ...

    测试时远端节点报出不允许节点连接的错误信息。查看两结点各自目录下的vm.args文件,cookie设置不同。将cookie修改同名并重启结点后,测试成功。

 

3)远端使用otp的进程如何接收rpc发来的消息呢?可在application即chatserver_app中增加rpc调用对应的接口(这里为chatver),再将消息通过otp转发给目标:

    chatver() -> gen_server:call(chatarea, version).

    调用后的返回值不需要做任何处理,便会正确返回到调用方-前端结点。

以上是关于cowboy中分布式节点通信的主要内容,如果未能解决你的问题,请参考以下文章

《从Paxos到ZooKeeper 分布式一致性原理与实践》读书笔记

10.Jenkins进阶之分布式架构环境配置基础概念与单主机节点通信配置

ELK 分布式日志处理 10.12

分布式介绍

分布式基础

了解分布式架构