【问题标题】:Erlang modules on different physical servers不同物理服务器上的 Erlang 模块
【发布时间】:2016-01-31 20:58:07
【问题描述】:

我有一个具有以下结构的 OTP 应用程序:

需要什么:

  1. 服务(1,2,3) 需要相互通信。
  2. Service1 在一台物理服务器上,service2 在另一台物理服务器上,等等。
  3. Mnesia 数据库为所有服务共享。

我怎样才能做到这一点?

【问题讨论】:

    标签: erlang distributed-computing erlang-otp mnesia


    【解决方案1】:

    您可能只需使用rpc 启动服务,然后手动链接以重现您指定的结构...

    但是结构本身看起来不对。主要问题是您的集群最终与一些 mainslave 节点不对称。然而,通常你只生成一个推送到每个节点的 OTP 版本,因此在启动时执行的代码完全相同,因此所有服务都在每个节点上启动。

    • 这让您更容易发布
    • 故障转移更可靠

    因此,我建议您更改架构以支持这种工作方式。我假设您基本上希望每个服务都在负载平衡的单个节点上运行。因此,您可以尝试找到一个可以为您做到这一点的框架。

    例如,您可以查看riak_core 来构建分布式应用程序

    【讨论】:

    • 我知道我可以在多个节点上运行同一个应用程序,但是其中一项服务通过 NIF 进行大量数学工作,这就是为什么我需要在专用服务器上部署该服务
    • 这并不意味着你在每台服务器上都没有相同的代码,只是你有一个更复杂的逻辑来确定什么服务启动什么服务器,但我相信它仍然不应该被监督通过网络
    猜你喜欢
    • 2012-03-15
    • 1970-01-01
    • 2023-03-07
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 2021-12-02
    • 1970-01-01
    相关资源
    最近更新 更多