语言和可伸缩性之间的关系

ida*_*ika 2 ruby erlang scala scalability

我在Erlang社区网站Trapexit中发现了以下声明:

Erlang是一种编程语言,用于构建具有高可用性要求的大规模可扩展软实时系统.

我还记得在Twitter上从Twitter切换到Scala以解决可扩展性问题.

因此,我想知道编程语言和可伸缩性之间的关系是什么?

我认为可伸缩性仅取决于系统设计,异常处理等.是因为语言的实现方式,库还是其他原因?

希望得到启迪.谢谢.

Hug*_*ins 7

Erlang针对电信环境进行了高度优化,运行时间为5 9s左右.

它包含一组名为OTP的库,可以在不关闭应用程序的情况下将代码重新加载到应用程序中!此外,还有一个管理程序模块的框架等等,这样当出现故障时,它会自动重新启动,否则故障可能会逐渐自行运行,直到它到达可以处理它的管理程序模块.

当然,在其他语言中也是可能的.在C++中,您可以动态重新加载dll,加载插件.在Python中,您可以重新加载模块.在C#中,您可以在运行中加载代码,使用反射等.

只是该功能内置于Erlang中,这意味着:

  • 它更标准,任何erlang开发人员都知道它是如何工作的
  • 重新实现自己的东西少

也就是说,语言之间存在一些根本区别,在某些程度上被解释,有些是字节码运行,有些是本机编译的,因此性能和运行时类型信息的可用性等等不同.

Python在其运行时库周围有一个全局解释器锁,因此无法使用SMP.

Erlang最近才添加了更改以利用SMP.

一般来说,我同意你的观点,我觉得重要的区别在于内置库,而不是语言本身之间的根本区别.

最终,我觉得任何变得非常大的项目都会陷入"陷入困境",无论它是用什么语言编写的.正如你所说,我觉得架构和设计对于可扩展性非常重要,选择一种语言而不是另一种语言我不会感到神奇令人敬畏的可扩展性......

  • @Christian,愚蠢或不傻,"五个九"事实上是根据(一年 - 停工期)/一年来定义的.愚蠢的原因在于,对于Erlang来说,人们更喜欢谈论五个"正常运行时间",而不是五个"服务可用性".消费者可能不满意如果他为主管树获得"五个九",而工人流程只有"九五":). (3认同)