algorithm - Erlang 对参与者*透明*分布的支持如何影响应用程序设计?

标签 algorithm erlang distributed actor

Erlang 中 actor 模型的特点之一是透明分布。除非我误解了,否则当您在参与者之间发送消息时,理论上您不应该假设它们在同一个进程空间中,甚至不应该位于同一个物理机器上。

我一直认为分布式容错系统需要仔细的应用程序设计来解决围绕 ordering/causality 的固有问题。和 consensus (除其他外)。

我很确定 Erlang 不会 promise 透明地解决这些类别的问题,所以我的问题是,Erlang 开发人员如何应对这种情况?您是否将您的应用程序设计为好像所有参与者都在同一个进程空间中,然后只在实际分发它们时才解决分发问题?

如果是这样,Erlang 的这种透明分布特性是否真的只与用于远程消息传递的有线协议(protocol)有关,而不是真正的透明,因为真正的分布式应用程序应用层还需要精心设计吗?

最佳答案

你是对的,erlang 并没有从本质上解决排序/因果关系或共识问题。 erlang 为您抽象的是将消息发送到本地节点或远程节点之间的区别。

我不确定是否真的有可能在语言设计中解决这些问题。这更恰本地属于一个框架。 OTP 框架确实有一些工具可以帮助解决这个问题。实际上,这在某种程度上取决于您要解决的具体问题。

有关 Erlang VectorClock 实现的一个示例,请查看 distributerl Erlang OTP Supervisors 也可能为共识提供一些必要的基础设施,但有人认为共识在异步消息传递分布式系统中是不可能的。有关这方面的更多信息,请参阅您引用的 wiki 页面。

关于algorithm - Erlang 对参与者*透明*分布的支持如何影响应用程序设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/972662/

相关文章:

对字符串进行数字分析的算法

java - 问题检查二叉树是否也是二叉搜索树

erlang - 在 Erlang 中,如何编写 BFS 树搜索来查找特定节点

erlang - 函数头中与变量的映射模式匹配

distributed - MPI(或其他)中的任务分配库?

graph - 是否有任何基于图形数据库的透明分布式查询的实现?

algorithm - 选择数组中最大票数的最快算法是什么?

erlang - 如果不指定节点名称,iex 和 erl 启动速度会非常慢

hadoop - 如何分配数据和计算以最大化位置?

java - 如何在 Java 中呈现视觉上有意义的 2D FFT?