代码之家  ›  专栏  ›  技术社区  ›  Joe Holloway

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

  •  12
  • Joe Holloway  · 技术社区  · 17 年前

    Erlang中actor模型的一个特性是 透明分配

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

    我很确定Erlang不能保证透明地解决这些问题,所以我的问题是,Erlang开发人员如何处理这些问题?您是否将应用程序设计为所有参与者都在同一个流程空间中,然后在实际分发时才解决分发问题?

    透明分配 Erlang的特性实际上只涉及用于远程消息传递的有线协议,而不是 透明的

    3 回复  |  直到 17 年前
        1
  •  3
  •   Robert Harvey    17 年前

    事实上,Erlang确实透明地解决了这些问题。它可以做到这一点,因为它是一种具有不可变(单赋值)变量的函数式语言。它使用 Actor model 对于并发性,并且专门设计为允许代码热交换和并发编程,而无需程序员担心 synchronization .

    这个 Wikipedia article

        2
  •  3
  •   Jeremy Wall    17 年前

    您是正确的,erlang并不能从本质上解决排序/因果关系或一致性问题。erlang为您抽象的是向本地或远程节点发送消息之间的区别。

    我不确定在语言设计中是否真的有可能解决这些问题。这更适合于框架。OTP框架确实有一些工具可以帮助实现这一点。实际上,这在某种程度上取决于你正在解决的具体问题。

    有关Erlang矢量时钟实现的一个示例,请参见 distributerl

        3
  •  3
  •   Hynek -Pichi- Vychodil Paulo Suassuna    17 年前

    Erlang承诺了这些事情( http://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf 第3.1节(39-40)):

    • 一切都是一个过程。
    • 进程创建和销毁是一个轻量级操作。
    • 消息传递是进程交互的唯一方式。
    • 如果知道进程的名称,可以向其发送消息。
    • 进程不共享资源。
    • 错误处理是非本地的。
    • 进程做他们应该做的事情,或者失败。