假设,我想开发堆栈溢出网站。假设每天有 100 万个请求,我如何估算支持该网站所需的商品硬件数量。是否有任何案例研究可以解释这种情况下可能的性能改进?
我知道 I/O 瓶颈是大多数系统的主要瓶颈。提高 I/O 性能的可能选项有哪些?我认识的几个是
- 缓存
- 复制
假设,我想开发堆栈溢出网站。假设每天有 100 万个请求,我如何估算支持该网站所需的商品硬件数量。是否有任何案例研究可以解释这种情况下可能的性能改进?
我知道 I/O 瓶颈是大多数系统的主要瓶颈。提高 I/O 性能的可能选项有哪些?我认识的几个是
您可以通过多种方式提高 I/O 性能,具体取决于您用于存储设置的内容:
您可能想查看StackOverflow Architecture的“经验教训”部分。
每天 100 万个请求是 12/秒。堆栈溢出足够小,您可以(通过有趣的规范化和压缩技巧)将其完全放入 64 GByte Dell PowerEdge 2970 的 RAM 中。我不确定缓存和复制应该在哪里发挥作用。
如果您对标准化有足够的思考,可以使用 256GB 的 PowerEdge R900。
如果您不喜欢单点故障,您可以连接其中的几个,然后通过套接字推送更新(最好在单独的网卡上)。即使是 12K/秒的峰值负载也不应该成为主存系统的问题。
避免 I/O 瓶颈的最好方法是不做 I/O(尽可能)。这意味着一个类似于 prevayler 的架构,具有批量写入(丢失几秒钟的数据没问题),基本上是一个日志文件,并且对于复制也将它们写出到一个套接字。
看看这个方便的工具:
以及来自戴尔的另一份指南:
http://www.dell.com/content/topics/global.aspx/power/en/ps3q01_graham?c=us&l=en&cs=555
如果您想要自己的类似 stackoverflow 的社区,您可以注册StackExchange。
你可以在这里阅读一些案例研究:
高可扩展性 - Rackspace 现在如何使用 MapReduce 和 Hadoop 来查询 TB 级数据 http://highscalability.com/how-rackspace-now-uses-mapreduce-and-hadoop-query-terabytes-data
http://www.gear6.com/gear6-downloads?fid=56&dlt=case-study&ls=Veoh-Case-Study