制定此计划需要了解的一些要点
- 每天有多少用户。
- 你要控制多少数据。
- 您要向每个用户显示多少数据。
- 可能需要的平均用户带宽。
- 平均用户使用您的网站的时间。
平均数字可以让您了解您每月需要什么。当然,您还需要考虑峰值数字 - 但是当他们租用 Web 服务器计算机和站点时,他们会按月提供带宽和一些千兆字节的硬盘,因此峰值在起点不是问题。在那里,您必须认为如果您运行需要太多内存的 sql 查询,或者如果您与许多其他站点共享计算机。
措施
没有现场,没有经验,你就没有实际的措施。如果没有措施,您实际上无法确定,但您可以遵循一些指南
- 无论你做什么,
try to make the grow of your data/features/runs linear and not logarithmic
。
The speed of your site is not (only) depend from the capacity and the speed of your computer
. 仅当计算机处于他的极限时才依赖。如果计算机达到他的极限,你添加额外的资源。但是在设计软件的时候一定要注意速度,速度好的软件也是要花钱的。
- 您的数据库中每天都有数百万条数据吗?你需要更多的内存和硬盘
- 你有视频和许多大文件要发送吗?你需要更多的带宽。
- 你有使用该网站工作的人吗?您需要更高的速度和稳定性
- 你再做一个电子商务网站吗?您需要更高的安全性和稳定性
目标是拥有所有这些,并且您首先关注的优先级实际上会发生变化。
规划速度。
Performance and Capacity: Two diffident animals*
. 性能基于更多的人工工作,而容量基于更多的计算机资源。要让它速度你首先需要知道如何让计算机运行流畅和快速,然后知道如何让程序运行得很快,特别是网络上的程序,然后你实际上需要花更多的时间来实际运行。运行后的程序,以改进其在关键领域的性能。
计划扩大。
进行良好的软件设计并注意扩展的可能性,以防您可能需要更多,以便让您的客户有机会从少量开始,并仅在他需要时支付更多费用。因此,当您设计您的软件时,就像您要在 Web 池中使用它一样,注意同步、处理公共资源、提供从不同服务器获取数据的能力等。
有限制的规划
好吧,假设客户说只有 1000 个用户并且对扩展和速度不感兴趣,只需要一个具有成本效益的网站来完成他的工作。在这种情况下,您还可以使用此限制进行设计。这是什么限制。您不需要对同步进行数十次检查,而是让它像单线程、单池程序一样工作。当您有 2 个池或 2 台计算机运行相同的应用程序时,您不会使用任何互斥锁、任何双重检查或任何想法。您只需注意在需要升级的情况下更改它们的代码点。
您也没有编写任何使用多计算机资源的代码。当您运行它时,请注意仅在一个池下运行才能正常工作。
这种单池设计更易于开发,更易于调试,易于控制,易于更新错误代码,成本更低,但速度(一个用户在一个线程池上等待另一个用户)并且无法扩展资源,这实际上也与速度有关。
查找统计数据
如果您不知道您可能拥有多少用户,您可以使用 alexa 查看与您的网站相似的网站以及他们每月的平均用户/平均页面浏览量。然后你可能知道可能的带宽。
在需要之前不要购买
从你对硬件的预测开始,但不要从第一天起就去租两台电脑。从第一个开始,制定衡量标准,了解数据如何增长,并仅在需要时对其进行扩展。
汽车还是一级方程式?
当程序运行时,如果您遵循它,您会发现许多需要纠正的想法。我可以说你只有我生命中的两个。
在我们将程序上线后,我们的客户开始添加数据。几个月后,我们注意到数据库增长过多——这是我们从输入的数据中没有预料到的。我们花了将近一周的时间来找出原因并修复它,这是一个设计错误,使一些统计数据变成对数,我们纠正它并继续前进。
经过两年的运行,我们注意到我们对 SQL 服务器进行了太多不必要的调用。我们追踪它并再次发现一个设计错误,我们纠正它并继续前进。
实际上,我们每个月都发现并修复了许多性能小点。对我来说,它就像一级方程式。你决定你有什么车,一辆需要一直修正以获得最大性能的方程式,还是一辆只需要每年保养一次的简单车?
客户观点
Then, the customer says "I need to support 1000 users"
好吧,客户不知道编程,并试图从他的角度找到一个衡量标准来比较提案。实际上这里还有更多的因素,1000 个用户不是一个正确的参数。是每天每分钟还是每月 1000 个用户?是否需要支持实时聊天,或者需要查看大量数据,或者需要快速工作?因此,您可以通过向客户解释正确的程序向他解释好程序对于一百万用户的一个用户是一样的,实际上它的开始是由开发而不是由开发成本来决定的用户。
现在,如果这是一个实际规划站点的问题,那么简单的终点答案就是开始做,其余的将被揭示。如果这是一个问题,因为您为您的客户寻找答案,那么您必须问自己:为什么一级方程式赛车只能坐一个,而您的车可以容纳五个?或者一部电影要多少钱?或者我们都知道如何写作,但为什么我们不是所有人都写书和出版书?我的观点是,成本实际上是从您花在制作项目上的时间中获得的,而他自己的用户无法确定。
猜测、知识还是预测?
How do you make a guess about the number of servers, bandwidth, storage, etc...
我们其实不用猜,我们有很多站点,每天自动收集很多统计数据,多年的经验,从站点的内容我们知道,每天能有多少用户,能吃多少带宽。我们还有许多在我们的服务器上运行的数据库,我们可以看到它们使用了多少数据。对于我们 99% 的网站,所有这些都是低数字。所以这是知识和经验,具有真实的实时统计数据。预测是通过监控流量和它们的使用来实现的,我们试图让它们变得更好,以获得更多的流量、更多的用户,并且从我们存档的内容中,我们试图预测他们将来是否需要更多的资源。此外,99% 的站点都是运行非常简单的演示文稿的单池。
'* 从书中