Php 用于部署的语言/堆栈

Php 用于部署的语言/堆栈,php,ruby,apache,jsp,tomcat,Php,Ruby,Apache,Jsp,Tomcat,我正在进行一次相当密集的重写,并可选择以下选项: 运行在Tomcat上的JSP/Java 在Apache下运行的PHP Ruby(在我不确定的情况下运行,ROR?) 关于上述内容,我想知道几个基本问题 速度是个问题。我们有一个MongoDB支持的数据库,所以我们不需要等待数据库中的信息,但前端需要尽可能快。俗语“速度不是问题”在这里并不适用。如果您在一个请求中处理500k+个对象,则需要快速处理 可伸缩性是另一个问题。假设我们的数据库失控了。哪种(以上)方法是最简单的处理方法 Tomcat/

我正在进行一次相当密集的重写,并可选择以下选项:

  • 运行在Tomcat上的JSP/Java
  • 在Apache下运行的PHP
  • Ruby(在我不确定的情况下运行,ROR?)
关于上述内容,我想知道几个基本问题

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

可伸缩性是另一个问题。假设我们的数据库失控了。哪种(以上)方法是最简单的处理方法

Tomcat/JSP和Ruby的共同缺点是什么?用PHP或Ruby进行并行处理容易吗

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


老实说,我以前是Java开发人员(不是JSP)转为PHP开发人员。我喜欢PHP,但我也非常相信在工作中使用正确的工具。团队有足够的能力来撰写这篇文章,根据目前有限的信息,我们认为其中任何一篇都是可以接受的。在启动新项目时,我已经开始考虑的重要事情是关于ORM和框架,而不是速度。每多花40个小时开发人员时间,我就可以在一个项目上花费1年的时间来配置和操作一台新服务器

如果您有更精通特定语言的API的开发人员,仅此一点就可以(潜在地)做出您的决定。如果你能在10台服务器上并行处理500k的事情,选择语言(和API/库)A而不是B将为你节省10周的时间,那么这就是你的盈亏平衡点。类似地,如果一组东西的速度是原来的2倍,并且使用2台服务器而不是1台服务器可能会使您的处理速度提高一倍,那么只需要用“更快”的语言进行1周的额外斗争,您的所有性能增益就会因开发时间的延长而消失……

最终将以 原因:

  • 快速启动
  • 无需重新部署/打包
  • 直接MVC模式
  • Groovy模板/继承视图
  • 对依赖项作为JAR文件的下拉支持

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

你能提供更多细节吗。。例如,你能在多台服务器上并行处理你的500k对象吗,或者有一些内在的单线程的事情需要发生吗?@Zak:并行性很好。我会选择Java。它的静态类型和更低级的东西,如固定大小的数组,使它比PHP更快。免责声明:这只是一个受过教育的人guess@Zak:与开发成本无关。我们正在重写一个将近十年的系统,这个系统的设计是要持续更长的时间。可升级性和可扩展性(以及速度)是重点,而不是成本。现在系统是基于JSP/Tomcat构建的,但正如我所说的,我们正在重写,可以选择我们想要的任何语言。我的观点是,由于您正在重写,单处理器上的速度并不是速度的主要指示。并行化速度是您的主要指令。将你的应用程序设计得更快。不要指望语言能使它快速。成本总是一个因素。例如,如果你想要最快的速度,你可以用C或汇编语言编写你的应用程序。谷歌做到了这一点。他们甚至编写了自己的文件系统。此外,PHP在许多任务上都比Java/JSP快。但在设计大型应用程序时,Java的一些强大类型可以帮助您让初级开发人员走上一条没有bug的道路。也许不是@扎克:这就是为什么我们倾向于使用Java/JSP方法。我通常不使用Java/JSP,并且担心以后会扩展应用程序。有一些设计模式可以帮助您处理可伸缩性问题。前面的控制器是一个想到。您的前端控制器可以处理一个问题,将其划分为较小的问题,然后将较小的问题交付给后台服务器进行并行处理。这与用特定语言编写无关。在php中,您只需输入一个请求,将请求分成更小的块进行处理,然后将multi_exec卷曲到任意多个服务器:您可以使用Ruby执行类似的操作。@Zak:听起来很合理。Ruby有什么好处吗?它被作为一种选择抛给了我们,我不确定它是否适合整个计划。这也是我们最没有经验的语言。