zoukankan      html  css  js  c++  java
  • cowboy中分布式节点通信

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

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

        -name xxx@127.0.0.1

        -setcookie xxxxx

        -heart

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

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

        Ret = rpc:call('xxx@127.0.0.1', chatserver_app, chatver, []),

        ...

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

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

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

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

  • 相关阅读:
    c# 指针unsafe/fixed -- 【一】
    Windows消息大全(转)
    Windows消息过滤
    C#预编译
    c#摄像头编程实例 (转)
    多线程按顺序执行 (转)
    定位程序集
    无需写try/catch,也能正常处理异常 (转)
    无需Try catch 的UI事件封装类
    注册表修改安全策略
  • 原文地址:https://www.cnblogs.com/Jackie-Snow/p/9244177.html
Copyright © 2011-2022 走看看