仅针对使用通道而定制的 Phoenix 应用程序如何在多台机器上扩展?使用HAProxy?如何向所有节点广播消息?

2024-04-23

我将节点应用程序纯粹用于带有 Redis PubSub 的 socket.io 通道,目前我将其分布在 3 台机器上,并由其中一台机器上的 nginx 负载平衡提供支持。

我想用 Phoenix 应用程序替换这个节点应用程序,而且我对 erlang/Elixir 世界还是个新手,所以我仍然没有弄清楚单个 Phoenix 应用程序如何跨越一台以上的机器。谷歌搜索所有可能的扩展和负载平衡术语没有任何结果。

The 1.0 发行说明 http://www.phoenixframework.org/blog/phoenix-10-the-framework-for-the-modern-web-just-landed关于渠道,请提及这一点:

即使在机器集群上,您的消息也会自动在节点之间广播

1) So 我基本上将我的应用程序部署到N台服务器,启动其中每个服务器中的 Cowboy 服务器,类似于我对节点和它们的处理方式,我将它们与 nginx/HAProxy 联系起来?

2)如果是这样的话,如发行说明中所述,如何在所有节点上广播通道消息?

编辑3:采取Theston https://stackoverflow.com/a/34037301/5551833答案澄清了不存在 Phoenix 应用程序,而是 Elixir/Erlang 应用程序,我更新了搜索词并发现了一些有关扩展和负载平衡的有趣结果。

  • 一本免费的内容广泛的书:事情变坏了:愤怒的 Erlang http://www.erlang-in-anger.com/
  • Erlang 池化库建议 https://www.reddit.com/r/elixir/comments/2nyrwq/load_balancing_in_a_distributed_otp_app/

编辑2:找到这个Elixir 的创造者 http://blog.plataformatec.com.br/2015/06/elixir-in-times-of-microservices/:

Elixir 为进程分组和全局进程(在节点之间共享)提供了便利,但您仍然可以使用 Consul 或 Zookeeper 等外部库进行服务发现,或依靠 HAProxy 为基于 HTTP 的前端实现负载平衡。

EDITED: 在同一 LAN 上连接 Elixir 节点 http://benjamintan.io/blog/2014/05/25/connecting-elixir-nodes-on-the-same-lan/是第一个提到 Elixir 间通信的文章,但它与 Phoenix 本身无关,并且不清楚它与负载平衡以及每个 Phoenix 节点之间的通信有何关系。


Phoenix 不是应用程序,当您生成 Phoenix 项目时,您创建了一个 Elixir 应用程序,Phoenix 只是一个依赖项(实际上是一堆使构建应用程序的 Web 部分变得更容易的东西)。

因此,您需要执行的任何 Node 分发仍然可以在您的 Elixir 应用程序中进行。

您可以仅使用 Phoenix 进行 Web 路由,然后将数据传递到底层 Elixir 应用程序以处理跨节点的分发。

值得一读http://www.phoenixframework.org/v1.0.0/docs/channels http://www.phoenixframework.org/v1.0.0/docs/channels(如果您还没有)它解释了 Phoenix 频道如何使用 PubSub 进行分发(可以配置为使用不同的适配器)。

另外,您是否通过运行 mix phoenix.server 在部署服务器上旋转牛仔?

如果是这样,那么我建议您查看 EXRMhttps://github.com/bitwalker/exrm https://github.com/bitwalker/exrm

这会将您的 Elixir 应用程序捆绑到一个独立的文件中,您可以简单地将其部署到生产服务器(如果您愿意,可以使用 Capistrano),然后启动您的应用程序。

这也意味着您也不需要在生产计算机上安装任何 Erlang/Elixir 依赖项。

简而言之,Phoenix 与 Rails 不同,Phoenix 不是应用程序,也不是堆栈。它只是一个为您的 Elixir 应用程序提供有用功能的依赖项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅针对使用通道而定制的 Phoenix 应用程序如何在多台机器上扩展?使用HAProxy?如何向所有节点广播消息? 的相关文章

随机推荐