【问题标题】:Java (Grails) or Erlang (Elixir) on short web-requests: speed, scalability?Java (Grails) 或 Erlang (Elixir) 用于短 Web 请求:速度、可扩展性?
【发布时间】:2012-02-05 06:16:34
【问题描述】:

我知道即使是 Erlang 或 Java 的问题似乎也很奇怪,因为它们是完全不同的语言,甚至具有不同的范式。但是,现在我对它们的了解都非常肤浅,所以,请问您发现什么更有价值、快速、可扩展?我想到了什么:

  1. Java 是主流语言。我不确定 Groovy 和 Grails,但如果项目变得不仅仅是您自己的爱好 - 找到支持此代码的 Java 程序员要容易得多。 Elixir 是一位优秀的 Erlang 程序员的爱好——所以在 Elixir 中支持代码真的很困难。另外,Grails 已经是写好的框架了,所以应该比我自己写的 Elixir 框架更好实现。
  2. Erlang 应用程序(写得很好)是可扩展性的同义词。但是,对于启动的 Web 应用程序,执行一些轻量级查询并死掉 - 除了在它们之间进行简单的循环用户查询(不同机器上的 Java 进程)之外,没有必要对它们进行扩展?
  3. 如果我们谈论许多简单的查询(没有长轮询等) - 每秒有这么多进程唤醒和死亡 - Erlang 有真正轻量级的进程模型,所以.. 那么 Java 和大量新产生和杀死的进程呢每秒处理一次?

提前谢谢你。

PS Chart from this 性能测试对 Java VM 性能产生了怀疑。

【问题讨论】:

  • 可能非常适合Programmers SE。我已经联系了他们的版主看看。您的问题可能会在不久的将来迁移到那里。然而,我现在将它保持打开状态,即使它对于 Stack Overflow 来说有点过于宽泛。我认为这可能会得到一些非常好的和有趣的答案,但我想在迁移之前与我的同事再次确认。
  • 一般来说“我应该使用什么语言/框架?”问题对于程序员来说是题外话,因为它们不包含任何明确的选择标准。这是可能好的,因为它确实有一些标准,但我不确定您尝试进行的比较是否有效。不过,我知道的还不够多。
  • @Minner:我认为该基准没有任何有效性。
  • 每种语言和框架都是可扩展的,并且可以(被要求)做同样的事情,Erlang 可能只是提供一些“开箱即用”的特性,否则你必须自己编写或作为库导入.我同意 Josh K 的观点,即基准与任何现实世界的场景相去甚远(它只提供静态字符串,因此它只测试不可优化的开销,但你不会有兴趣决定任何事情)。更重要的是:选择您最熟悉和最熟悉或获得最多支持的内容(帮助、库等)。在商业中,硬件通常比浪费时间便宜。

标签: java erlang webserver


【解决方案1】:

毫无疑问,Java。您引用的test 的性能表明 Java/Netty 的性能与多核 Erlang 相当,您可以使用众多 Java Actor 和异步 I/O 库,因此每个请求都不会启动新进程或线程 - 只需在纳秒内创建新处理程序.

【讨论】:

  • 嗯,性能测试使用 OTP Web 服务器,Erlang 有许多其他可用的服务器,这些服务器是社区首选的,比如牛仔。信任该基准就像信任 Ruby Web 服务器的性能,这是由 webrick 给出的。无论如何,正如其他人所说,我认为这个决定不应仅由这些基准驱动。
猜你喜欢
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
  • 2023-03-17
  • 2011-07-09
  • 2012-09-29
  • 2010-10-05
  • 2014-06-20
  • 2021-01-04
相关资源
最近更新 更多