Erlang的可扩展性秘诀是什么?

时间:2009-02-05 16:13:20

标签: erlang scalability

Erlang因处理大量邮件和请求而无法接受而闻名。我没有时间下载并试图了解Erlang先生对切换理论的理解......所以我想知道是否有人可以教我(或指向一个好的教学网站。)

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

4 个答案:

答案 0 :(得分:13)

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

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

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

erlang的另一个对可扩展性有影响的功能是轻量级的廉价流程。由于进程的开销很小,因此erlang可以产生比其他大多数语言更多的内容。使用erlang进程可以获得比其他语言更多的功能。

答案 3 :(得分:1)

我认为Erlang的最佳选择是网络绑定应用程序 - 使节点和心跳监视之间的通信变得更加简单,使用Supervisor自动重启是内置于OTP中。