代码之家  ›  专栏  ›  技术社区  ›  user193116

用诸如haskell或erlang之类的函数式编程语言编写Web应用程序会使它比J2EE更具可扩展性吗?

  •  2
  • user193116  · 技术社区  · 16 年前

    我正在编写一个Facebook应用程序,它将使用PostgresDB和Facebook API,并在AmazonEC2上运行。(我希望能承受很重的负荷)

    使用Java,我知道DB将是我的主要瓶颈,而Tomcat的并发限制将是次要瓶颈。我可以通过缓存缓解数据库问题,通过水平伸缩缓解并发问题。(但这会增加我的EC2费用)。

    在这种情况下,Erlang或Haskell会如何帮助?(假设我能够掌握学习曲线)。

    3 回复  |  直到 16 年前
        1
  •  5
  •   Jim Ferrans    16 年前

    我去看看 http://www.highscalability.com 并查看如何将应用程序扩展到越来越大的负载的案例研究。特别是在那里搜索Brad Fitzpatrick关于他如何缩放LiveJournal和Danga Interactive的描述(例如, this 2005 presentation )

    您对数据库是第一个瓶颈,然后是Web服务器的直觉可能是正确的,但当然您需要度量。

    扩展站点的主要方法包括集群、缓存和数据库分片等。编程语言的选择是次要的,通常会影响每个框的原始性能。见亨德森 Building Scalable Web Sites 和Schlossnagle的 Scalable Internet Architectures 关于这个领域的其他想法和背景。

    尽管如此,功能性语言可能有助于提高整体的可伸缩性。 Twitter used Scala 以提高后端性能。Scala是一种结合面向对象和功能样式的JVM语言,支持参与者并发模型,并且运行速度接近Java(Scala的创建者Martin Odersky,也编写了当前Sun Java编译器)。因此,如果您遇到并发瓶颈,您可能希望在Java中撒一点Scala。

        2
  •  12
  •   C. A. McCann Ravikant Cherukuri    16 年前

    两个半答案:

    你有用户吗?

    你确定你知道瓶颈在哪里吗? 像这样向外扩展会引起与小应用程序中的性能非常不同的关注。在你开始先发制人地修理东西之前,确保你真的知道什么是坏的。无论如何,应用程序的体系结构可能比用什么构建它更重要。

    也就是说,如果你想这样做的话,Erlang或Haskell都可以工作,但可能不会对你的要求产生巨大的影响。有很多 其他 虽然他们喜欢Java的原因,但是…

        3
  •  -4
  •   Payton Byrd    16 年前

    当瓶颈已经定义为不与代码相关时,选择一种不同的语言将大大加快应用程序的编译速度,例如Java。大多数函数语言比Java具有更多的开销,因此如果您已经熟悉Java,就必须有一个令人信服的理由来切换到一个。

    推荐文章