我将如何支持每小时 100,000 个请求?

我将如何支持每小时 100,000 个请求?

我知道这个问题有点奇怪,但我很幸运地想到了一个主意,当我试图与一家公司达成交易时,我需要一些数字来使用。我想知道运行一个大量使用 PHP 的网站需要花费多少钱,在 Rackspace 的云服务器之类的服务器上,每小时有 70,000 到 100,000 个请求。我不知道我需要多少台服务器,也不知道每台服务器应该有多少内存。网站上会有相当多的图片(前几周可能大约有 10,000 张),网站运行在大约 2,500 行 PHP 代码上。我想我应该注册某种 CDN,尽管盒装 CDN是我所听说的,我不确定对于已经在云平台上的网站来说这是否必要。我以前显然从未做过这样的事情,所以我只是想估算一下这个庞大的网站需要什么……此外,我使用数据库,我想知道它是如何工作的——我是否应该将其中一台云服务器专门用于运行数据库,还是需要将数据库放入每台云服务器中?提前谢谢……

答案1

首先,每小时 10 万个请求是没有什么就现代硬件和软件堆栈而言,假设代码写得不是特别糟糕。结果每秒只能处理大约 28 个请求,你的手机可能能够处理这个请求 :)

现在,对于您的设置,您将需要至少两台机器,要么设置为实时/实时负载平衡方式,要么设置为实时/待机情况。这将使您能够快速处理硬件故障、数据损坏、配置错误等。

如果您认为您的网站可能会比您现在的计划增长得更快,那么您可能想要采用非常常见的三层系统。在这种情况下,您有一台或多台数据库服务器专门执行该工作,一台或多台应用程序服务器运行您的代码,一台或多台 Web 服务器只执行请求前端。此模型允许您更快速、更线性地扩展,但显然需要您在代码中设计这些分割。顺便说一句,无论您使用的是物理、虚拟还是基于云的平台,此模型都可以正常工作 - 尽管数据库框在虚拟/云环境中的性能下降最多且最快,因为这些环境的 IO 速率较低。

除此之外,如果你打算做大量的静态文件分发,如图片/视频等,那么 CDN有道理。当然它们不是免费的,所以你需要计算一下,看看是将内容保留在“内部”更有意义,还是将它们发送到 CDN,有很多选择(akamai 和 limelight 是两个声誉良好的公司),但只有你才能根据内部和外部交付的平均字节数、请求数和每字节/MB 成本来决定。

最后一件事,进行备份 - 正确的备份,而不仅仅是快照,并将其中一些备份保存在异地,并时不时地对离线硬件进行测试恢复以检查它们是否正常工作。说真的,老兄,你不会相信我们在这个网站上看到多少用户没有正确备份,没有将其中一些备份到异地或从未测试过它们 - 我们再也见不到他们了,他们的生意失败了或者他们被解雇了 - 所以请认真对待 :)

如果您需要更多帮助,请回来查看我们的“职业”网站(通常在页面底部有一个链接),因为该网站充满了来自此网站和我们姊妹网站(stackoverflow - 适用于程序员)的人,他们可能在您所在的地区并且乐于与您合作。

祝你好运。

相关内容