【发布时间】:2012-05-25 19:33:09
【问题描述】:
我正在考虑使用 php 构建一个站点,但是如果在 node.js 中创建,它的几个方面的性能会好得多。同时,网站的大部分内容需要保留在 PHP 中。这是因为很多功能已经用 PHP 开发了,重新开发、测试等工作量太大,坦率地说,网站的这些部分在 PHP 中运行得非常好。
我正在考虑重建 node.js 中的部分,这将受益于在 node.js 中运行,然后让 PHP 使用 Gearman 将请求传递给 node.js。通过这种方式,我通过启动更多的工作人员进行横向扩展,并让 Gearman 处理负载分配。
我们的网站访问量很大,我担心 gearman 能否处理这种负载。我不想让这个问题保持高效,所以让我们主要关注以下可解决的问题:
- 假设我们有内存,gearman 能否处理我们所有的预期负载(一次可能有大约 3000 多个排队的作业,每秒处理数千个作业)?
- 如果我只是使用 CURL 将请求传递给 node.js,这是否会运行得更好?如果是这样,node.js 是否提供任何方法来将负载分配到给定脚本的多个实例上?
- 能否以没有单点故障的方式配置 gearman?
- 你们发现在开发和扩展方面出现了哪些问题?
我正在解决这些广泛的问题,以便查看这篇文章的任何人都可以在一个地方收集关于相互强烈影响的事项的广泛信息。
当然我会测试所有这些,但我想在可能进行此类操作之前收集尽可能多的信息。
编辑:我使用 gearman 的一个重要原因不是因为它的非阻塞结构,而是因为它的绝对速度。
【问题讨论】:
-
gearman 可以处理我们所有的预期负载吗? 这是一个字符串长度的问题,取决于你有多少工作服务器可用,您的队列填满的速度,以及每个项目需要多少精力来处理。如果您可以在一台服务器上每秒处理数千次,并且您没有以更高的恒定速率将它们排队,我认为您会没事的。顺便说一句,Gearman 可用于阻塞和非阻塞模式,绝对值得一试。