3

有人可以用非常简单的术语描述您将如何扩展服务(假设该服务非常简单并且是函数 X() )。

为了使这种可扩展性,您是否只需为每个想要运行 X 的客户端启动一个新节点(最多取决于您的硬件)?

因此,如果我有四个硬件盒,我最多可以启动四个节点来运行服务 X(),在第 5 个客户端请求时,我将在第一个节点上运行 X(),在第二个节点上运行第 6 个客户端等等?

在此之后,我知道如何在本地生成进程,但是如何让第 1 和第 5 个客户端都使用相同的节点 1 - 是否每次都在节点上为客户端远程生成一个进程?

欢迎任何简单的例子!

4

1 回答 1

3

这在很大程度上取决于 X 是什么。例如,如果 X 是完全独立的,x() -> 37.那么您甚至不需要连接您的节点。只需在系统前面放置一些标准负载均衡器(HAProxy、Varnish 等),然后忘记任何类型的分布式通信。事实上,没有必要为此使用 Erlang。用您选择的其他语言替换 Erlang。它同样好。

Erlang 的亮点是当几个 X 函数相互依赖时,以及当 X 可能存在于另一台物理机器上时。在这种情况下,Erlang 可以与另一个 X 无缝通信,即使它位于不同的节点上。

如果你想在 Erlang 中实现循环方案,最简单的方法是有一个入口点,然后让它将请求转发到多个节点。但是,如果存在某个节点以所有长时间运行的进程结束的模式,那就不好了。您需要建立一种反馈机制,以便知道如何加权循环队列。

于 2012-07-06T09:32:38.620 回答