gpt4 book ai didi

Erlang Ports 与 Nodes 都是用 X 编写的,其中 X 不是 Erlang VM 语言

转载 作者:行者123 更新时间:2023-12-01 22:10:23 24 4
gpt4 key购买 nike

我已通读 Erlang 文档,尤其是有关 Erlang Ports 的主题和 Erlang Nodes .

本教程使用相同的示例来展示这两个概念,即服务于两个简单功能的程序,但尽管存在一些通信协议(protocol)差异,但它并未阐明使用这两个概念的优缺点。

乍一看,port 似乎更容易用外部语言设置服务器,但我想知道 Erlang Nodes 可以提供哪些 Erlang Ports 不能提供的功能,反之亦然。

谁能澄清 Erlang 端口与节点的功能和非功能方面?

谢谢

澄清更新

我真正想比较的是 Erlang Ports 与用非 ErlangVM 语言编写的节点(我知道 Erlang 节点是完整的 Erlang VM,因此比 Ports 强大得多)。例如,C 端口可以做什么而 C 节点不能,反之亦然?

最佳答案

没有什么是 CNode 或 Port 能做或不能做的。我认为您没有理解为什么构建每个选项,那么它可能会帮助您决定选择哪个。

CNode 旨在帮助在集群中分配任务。集群是您想要此选项的原因。

Port 的构建是为了在现有 Linux 设备、命令行工具或脚本可用于为您完成任务时替代 NIF。你仍然可以构建 erlang 集群,因为你的 erlang 应用程序毕竟会调用端口 :) 所以你不受此选项的限制。

现在假设您有大量的 C/C++,例如postgres 数据库,并且你想让它成为集群的一部分(愚蠢的例子,但请耐心等待)。您可以 fork 源代码,向其添加 CNODE 代码并将 RPC 消息转换为查询,以及更多事件,您可以使用 postgres 内部 API,而仅使用 SQL 查询是无法使用的。所以端口在这种情况下不会那么有用,因为它是一些外部服务正在运行但是......你可以在 pstgresql 中构建一些扩展,然后将它作为一些函数公开给 SQL,最后进行标准 SQL 查询以执行这样的函数来自 erlang 节点。

正如我所说,每个都有自己的位置,这实际上取决于您的情况以及您有哪些现有解决方案并且需要将其整合到您的解决方案中。

关于Erlang Ports 与 Nodes 都是用 X 编写的,其中 X 不是 Erlang VM 语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48280684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com