【问题标题】:What is Erlang's secret to scalability?Erlang 的可扩展性秘诀是什么?
【发布时间】:2010-10-05 17:16:42
【问题描述】:

Erlang 在处理大量消息和请求方面享有盛誉。我没有时间下载并尝试深入了解 Erlang 先生对切换理论的理解......所以我想知道是否有人可以教我(或指向一个好的教学网站。)

假设作为一个思想实验,我想将 Erlang ejabberd 移植到 Python 和 C 的组合中,以给我同样的速度和可扩展性的方式。我必须理解和实施哪些结构或模式? (Python 的 Twisted 已经这样做了吗?)

【问题讨论】:

    标签: erlang scalability


    【解决方案1】:

    How/why do functional languages (specifically Erlang) scale well?(讨论原因)

    http://erlang.org/course/course.html(用于教程链)

    就移植到其他语言而言,在大多数现代语言中都可以轻松实现消息传递系统。获得函数式风格可以很容易地在 Python 中完成,尽管您不会“免费”获得 Erlang 的内部调度功能。 Stackless Python 可以复制 Erlang 的大部分并发特性,虽然我不能说细节,因为我没有太多使用它。 If 确实看起来更“明确”(因为它要求您在 Erlang 的设计允许内部发生并发的地方定义代码中的并发)。

    【讨论】:

    • 糟糕!谢谢!这是一个很大的帮助。我很惊讶 SO 的重复问题检查器没有引导我找到那个。
    【解决方案2】:

    Erlang 不仅是关于可扩展性,而且主要是关于

    • 可靠性
    • 软实时特性(由软实时 GC 启用,这可能是因为不变性 [无循环] 并且不共享任何内容等)
    • 并发任务的性能(廉价的任务切换、廉价的进程衍生、演员模型......)
    • 可扩展性 - 在当前状态下值得商榷,但发展迅速(大约 32 个核心,比大多数竞争对手要好,但在不久的将来应该会更好)。

    【讨论】:

    • 是的,但这是“出色的可扩展性”的定义。没有可靠性、性能或实时能力的可扩展性就没那么有用了;)
    【解决方案3】:

    erlang 的另一个影响可伸缩性的特性是轻量级廉价进程。由于进程的开销很小,erlang 可以产生比大多数其他语言更多的进程。与许多其他语言相比,使用 erlang 进程可以获得更多的收益。

    【讨论】:

      【解决方案4】:

      我认为 Erlang 的最佳选择是网络绑定应用程序 - 使节点之间的通信更加简单,并且 OTP 中内置了心跳监控、使用主管自动重启等功能。

      【讨论】:

        猜你喜欢
        • 2011-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-08
        • 1970-01-01
        • 2012-03-14
        • 2017-10-26
        • 1970-01-01
        相关资源
        最近更新 更多