【问题标题】:Languages / stacks for deployment [closed]用于部署的语言/堆栈[关闭]
【发布时间】:2011-03-12 13:05:16
【问题描述】:

我正在进行相当密集的重写,并提供了以下选项:

  • 在 Tomcat 上运行的 JSP/Java
  • 在 Apache 下运行的 PHP
  • Ruby(在我不确定的情况下运行,ROR?)

关于上述问题,我想知道几个基本问​​题。

速度是一个问题。我们有一个 MongoDB 支持的数据库,因此我们不需要等待数据库获取信息,但前端需要尽可能快。俗话说速度不是问题,在这里并不适用。如果您在一个请求中处理 500k+ 个对象,则它需要很快。

可扩展性是另一个问题。假设我们的数据库失控。哪个(以上)将提供最简单的处理方法?

Tomcat / JSP 和 Ruby 的常见缺点是什么?使用 PHP 或 Ruby 可以轻松实现并行处理吗?

我们的目标不是省钱,而是建立一个稳固、快速、可扩展的系统,以便在未来几年继续发展。

老实说,我是一名前 Java 开发人员(不是 JSP)转为 PHP 开发人员。我对任何东西的偏好都是 PHP,但我也非常相信使用正确的工具来完成这项工作。团队有足够的能力来写这是我们的任何东西

【问题讨论】:

  • 您能否提供更多细节。例如,您能否在多个服务器上并行处理 500k 个对象,或者是否需要发生一些内在的单线程事情?
  • @Zak:并行性会很棒。
  • 我会选择 Java。它的静态类型和更底层的东西,比如固定大小的数组,使它比 PHP 更快。免责声明:这只是一个有根据的猜测

标签: php ruby apache jsp tomcat


【解决方案1】:

根据目前有限的信息,似乎其中任何一个都是可以接受的。在启动新项目时,我开始考虑的重要事情更多是关于 ORM 和框架,而不是速度。每多花 40 个小时的开发时间,我就必须花在一个项目上,我可以配置和运行一个新服务器 1 年。

如果您的开发人员更精通特定语言的 API,那么仅此一项就可以(可能)做出您的决定。如果您可以在 10 台服务器上并行处理 50 万件事情,并且选择语言(和 API/库)A 而不是 B 将为您节省 10 周,那么这就是您的盈亏平衡点。同样,如果一组东西慢 2 倍,并且拥有 2 台服务器而不是 1 台服务器可以使您的处理速度翻倍,那么在“更快”的语言中只需要 1 周的额外战斗就可以消除所有性能提升更长的开发时间...

【讨论】:

  • @Zak:不关心开发成本。我们正在重写一个已经有近十年历史的系统,而这个系统的设计寿命会更长。可升级性和可扩展性(以及速度)是重点,而不是成本。目前系统是基于 JSP / Tomcat 构建的,但正如我所说,我们正在重写并且可以选择我们想要的任何语言。
  • 我的意思是,由于您正在重写,单处理器上的速度并不是您的主要速度指令。并行化速度是您的主要指令。将您的应用设计得更快。不要指望语言让它变得很快。成本始终是一个因素。例如,如果你想要最快的速度,你可以用 C 或汇编编写你的应用程序。谷歌做到了这一点。他们甚至编写了自己的文件系统。此外,在许多任务中,PHP 比 Java/JSP 更快。但是在设计一个大型应用程序时,Java 的一些强类型可以帮助您让初级开发人员走上一条更没有错误的道路。也可能不是!
  • @Zak:这就是我们倾向于 Java/JSP 方法的原因。我通常不使用 Java/JSP,并且担心以后扩展应用程序。
  • 有一些设计模式可以帮助您处理可伸缩性。前端控制器是一个浮现在脑海中的控制器。您的 Front 控制器可以处理一个问题,将其分解为较小的问题,然后将较小的问题交付给后台服务器进行并行处理。这与以特定语言编写无关。在 php 中,您只需收到一个请求,将您的请求分成更小的块进行处理,然后 curl_multi_exec 到任意数量的服务器:us.php.net/manual/en/function.curl-multi-exec.php 您可以使用 Ruby 做类似的事情。
  • @Zak:这听起来很合理。 Ruby 有 任何 好处吗?它被作为一个选项扔给我们,我不确定它是否完全适合整体方案。这也是我们最缺乏经验的语言。
【解决方案2】:

最终选择Play!

原因:

  • 快速启动
  • 无需重新部署/打包
  • 直截了当的 MVC 模式
  • Groovy 模板/继承的视图
  • 以 JAR 文件形式直接支持依赖项

发展从未受到阻碍。除了将控制器/模型/视图放在哪里之外,没有人需要学习任何新东西。

【讨论】:

    猜你喜欢
    • 2017-02-20
    • 2011-08-01
    • 2012-11-19
    • 1970-01-01
    • 2011-09-25
    • 2011-06-03
    • 1970-01-01
    • 2012-07-20
    • 2020-04-09
    相关资源
    最近更新 更多