Joe*_*way 12 algorithm erlang distributed actor
Erlang中actor模型的一个特性是透明分布.除非我误解,当你在演员之间发送消息时,理论上你不应该假设它们在同一个进程空间中,甚至不在同一个物理机器上.
我一直认为分布式容错系统需要仔细的应用程序设计来解决有关排序/因果关系和共识(以及其他)的固有问题.
我很确定Erlang不承诺透明地解决这些类问题,所以我的问题是,Erlang开发人员如何应对这一问题?您是否将所有演员设计在相同的进程空间中,然后在实际分发它们时才解决分发问题?
如果是这样,这是透明的分配二郎真的只是关心用于远程通讯的有线协议,并没有真正的功能透明在这个意义上,真正的分布式应用程序仍需要在应用层精心设计?
你是对的,erlang 本质上并没有解决排序/因果关系或共识的问题。erlang 为你抽象的是发送消息到本地或远程节点之间的区别。
我不确定是否真的可以通过语言设计来解决这些问题。这更适合属于一个框架。OTP 框架确实有一些工具可以帮助实现这一点。实际上,这在某种程度上取决于您要解决的具体问题。
对于 Erlang VectorClock 实现的一个示例,请查看distributionrl Erlang OTP Supervisor 也可能提供一些达成共识所需的基础设施,但有人认为在异步消息传递分布式系统中达成共识是不可能的。有关更多信息,请参阅您引用的 wiki 页面。