问题标签 [erlang-otp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1377 浏览

erlang - 在 Erlang 中动态添加节点和 global_groups

Erlang 支持使用global_group模块将其节点划分为组。此外,Erlang 支持动态添加节点到节点网络。这两个功能可以互相使用吗?
据我了解,您必须在启动时命名每个节点才能使用全局组。

0 投票
6 回答
2449 浏览

rest - 通过 REST 访问 Erlang 业务层

对于一个大学项目,我正在考虑在 Erlang 中实现业务层,然后使用 REST 通过多个前端访问它。我想利用分布式应用程序等 OTP 功能。

我的问题是如何将 gen_server 调用/强制转换暴露给其他应用程序?显然,我可以通过特定于语言的“桥”(如 OTP.net 或 JInterface)进行 RPC 调用,但我想要一种一致的方式来访问它,如 REST。

0 投票
6 回答
9018 浏览

security - Erlang : Disallowed Nodes / Maybe Cookie 问题

试图让两个 erlang 节点相互交谈:一个在 Ubuntu 机器上,一个在 Windows XP 上。

我们收到“来自不允许节点的连接尝试”消息,该消息阻止一个节点接收来自另一个节点的消息。

他们都使用 5.XXX 版本的 Erlang OTP。

两个节点都有相同的 cookie (.erlang.cookie)

我们正在启动接收器节点:

并使用 'fred@ipaddress' 调用函数(单引号)

我们已经关闭了防火墙。

那么还有什么可能阻止连接?

更新:我们使用 erlang:get_cookie() 来检查两个节点上的 cookie,并且值不同。这就是问题所在。我们认为我们通过将相同的 .erlang.cookie 文件放在我们在两台机器上运行 erlang 的目录中来设置 cookie。但也许这是错误的地方?

更新 2:感谢大家的回答。我们选择 Ranok 作为我们的答案,因为它对我们很有效。我敢肯定,一些设置 cookie 的替代方法也可以。

0 投票
1 回答
492 浏览

erlang - 名为 timer_server 的 gen_server 导致定时器模块函数不返回

我创建了一个主管,它产生了一个gen_server我称为timer_server. 这个timer_server 的任务之一是管理注册和调用timer:send_interval以在某个时间间隔向 pid 发送消息。

但是,在gen_server我调用的 init 中,timer:send_interval我被锁定了。文档说计时器:函数立即返回,所以这很麻烦。

当我重命名我gen_serverrecord_timer_server这个问题时,这个问题就解决了。我的问题是两个方面:

  1. 如果我的应用程序启动timer_server时已经有一个注册进程,为什么我可以创建一个注册进程?timer:start()
  2. 一旦启动,为什么这个函数不会导致错误匹配找到名称,如果它正在调用我timer_server使用该send_interval函数?

我认为代码不是必需的,但如果需要,我可以更新以添加一些代码。

0 投票
4 回答
3985 浏览

erlang - Erlang 中的进程平衡

有谁知道 erlang 标准库中是否有一种“负载平衡器”?我的意思是,如果我对一组非常大的数据进行一些非常简单的操作,那么为每个项目构建一个流程的开销将大于按顺序执行操作。但是如果我能在“正确数量”的过程中平衡工作,它会表现得更好,所以我基本上是在问是否有一种简单的方法来完成这项任务。

顺便说一句,有人知道 OTP 应用程序是否会进行某种平衡负载吗?我的意思是,在 OTP 应用程序中存在“工作进程”的概念(如 java-ish 线程工作程序)?

0 投票
3 回答
3324 浏览

erlang - How to explain Erlang's supervision trees?

I tried to explain supervision trees.

My best try is:

ok, You get a chocolate box from the factory, with warranty, "Every bit will taste good." Then if you find that one bit taste funny. You can throw the whole box away. Because you get a new from the factory. That is like supervision trees in Erlang. If one thread misbehave. There is a risk that all threads have bad state. If that is the case, the supervisor throw all threads away and start over. Like the chocolate box, you are the supervisor when you throw the box.

0 投票
3 回答
9419 浏览

erlang - 在 Erlang 中定期做某事的最佳方法是什么?

我有一个需要每十五秒做一些工作的过程。我目前正在这样做:

这可行,但非常脆弱:如果我想教我的服务器一条新消息,当我编写任何新的处理函数时,我必须记住在其返回值中包含可选的超时间隔。也就是说,如果我正在处理同步调用,我需要这样做:

代替

正如您可能猜到的那样,我已经多次犯过这个错误。这很糟糕,因为一旦代码处理了该 query_state_data 消息,就不再生成超时,整个服务器就会停止运行。(我可以通过在机器上获取外壳并手动发送“超时”消息来手动“除颤”,但是...... eww。)

现在,我可以尝试记住始终在我的 Result 值中指定可选的 Timeout 参数。但这不成比例:总有一天我会忘记,并且会再次盯着这个错误。那么:什么是更好的方法?

我不认为我想编写一个永远运行并且大部分时间都在睡觉的实际循环;这似乎与 OTP 的精神背道而驰。

0 投票
1 回答
775 浏览

erlang - 成功故障转移后 Erlang Takeover 失败

我有一个分布在 2 个节点上的应用程序。当我停止()第一个节点时,故障转移工作完美,但是(有时?)当我重新启动第一个节点时,接管失败并且应用程序崩溃,因为 start_link 返回已经启动。

我的应用

我的主管:

两个节点都使用相同的 sys.config 文件。

我对这个过程不理解以上不应该工作的地方是什么?

0 投票
1 回答
1377 浏览

erlang - 在 erlang/OTP 中,我如何启动 appmon 来监控现有节点?

我有一个正在运行的 erlang 应用程序,用这个命令行启动

如果我启动一个新节点并运行 appmon:start(),即使使用相同的 cookie,“peasy”节点也不会出现。webtool:start() 也会发生同样的情况

任何人?

0 投票
2 回答
2256 浏览

erlang - 何时在 Erlang/OTP 应用程序中使用 gen_server

阅读了 Joe Armstrong 的书并观看了 Kevin Smith 的截屏视频后,我构建了一个简单的 OTP 应用程序,它由一个 gen_server 和一个主管组成,捆绑在一起作为一个 OTP 应用程序。

现在我正在查看 mochiweb 并使用 new_mochiweb.erl 脚本创建了一个示例项目 [helloworld]。浏览源代码我发现它与我的示例 OTP 应用程序 [OTP 应用程序在那里,主管在那里] 没有什么不同,但有一个关键区别.. 生成的 helloworld.erl 和 helloworld_web.erl 文件没有实现 gen_server 行为,它们只是标准的 Erlang 模块。

我的印象是,在构建 OTP 应用程序组件时,推荐使用 gen_server 方法。为什么 mochiweb 可能使用 OTP 应用程序和主管行为,但避开 gen_server ?