- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将节点应用程序纯粹用于 Redis PubSub 的 socket.io channel ,目前我将其分布在 3 台机器上,并由其中一台机器上的 nginx 负载平衡支持。
我想用 Phoenix 应用程序替换这个节点应用程序,而且我对 erlang/Elixir 世界还是个新手,所以我仍然没有弄清楚单个 Phoenix 应用程序如何跨越一台以上的机器。谷歌搜索所有可能的扩展和负载平衡术语没有任何结果。
1.0 release notes关于 channel ,请提及这一点:
Even on a cluster of machines, your messages are broadcasted across the nodes automatically
1)所以我基本上将我的应用程序部署到N台服务器,在每台服务器中启动Cowboy服务器,类似于我对节点的处理方式,我将它们与nginx/HAProxy联系起来?
2) 如果是这种情况,如何按照发行说明中所述在所有节点上广播 channel 消息?
编辑3:获取Theston答案澄清了不存在 Phoenix 应用程序,而是 Elixir/Erlang 应用程序,我更新了搜索词并发现了一些有关扩展和负载平衡的有趣结果。
编辑 2:从 Elixir's creator 找到此内容:
Elixir provides conveniences for process grouping and global processes (shared between nodes) but you can still use external libraries like Consul or Zookeeper for service discovery or rely on HAProxy for load balancing for the HTTP based frontends.
已编辑:Connecting Elixir nodes on the same LAN是第一个提到 Elixir 间通信的文章,但与 Phoenix 本身无关,并且不清楚它与负载平衡以及每个 Phoenix 节点之间的通信有何关系。
最佳答案
Phoenix 不是应用程序,当您生成 Phoenix 项目时,您创建了一个 Elixir 应用程序,Phoenix 只是一个依赖项(实际上是一堆使构建应用程序的 Web 部分变得更容易的东西)。
因此,您需要执行的任何节点分发仍然可以在您的 Elixir 应用程序中进行。
您可以仅使用 Phoenix 进行 Web 路由,然后将数据传递到底层 Elixir 应用程序以处理跨节点的分发。
值得一读http://www.phoenixframework.org/v1.0.0/docs/channels (如果您还没有)它解释了 Phoenix channel 如何使用 PubSub 进行分发(可以配置为使用不同的适配器)。
此外,您是否通过运行 mix phoenix.server 在部署服务器上旋转牛仔?
如果是这样,那么我建议查看 EXRM https://github.com/bitwalker/exrm
这会将您的 Elixir 应用程序捆绑到一个独立的文件中,您可以轻松地将其部署到生产服务器(如果您愿意,可以使用 Capistrano),然后启动您的应用程序。
这也意味着您也不需要在生产计算机上安装任何 Erlang/Elixir 依赖项。
简而言之,Phoenix 与 Rails 不同,Phoenix 不是应用程序,也不是堆栈。它只是一个为您的 Elixir 应用程序提供有用功能的依赖项。
关于websocket - 仅针对使用 channel 而定制的 Phoenix 应用程序如何在多台机器上扩展?使用HAProxy?如何向所有节点广播消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34028965/
我正在实现谱聚类算法,我必须确保矩阵(拉普拉斯矩阵)是半正定矩阵。 检查矩阵是否为正定矩阵 (PD) 就足够了,因为可以在特征值中看到“半”部分。矩阵非常大(nxn,其中 n 是几千的数量级)所以特征
我是一名优秀的程序员,十分优秀!