【问题标题】:architecthure for a large data driven website大数据驱动网站的架构
【发布时间】:2011-03-24 12:28:17
【问题描述】:

我知道如何创建小数据驱动的网站,但想了解如何将它们转换为处理大数据流。

这些问题基于一个网站,该网站的行为主要类似于堆栈溢出、craigslist 等,人们可以在其中发布内容,其他人可以回复,并且具有基于标签的基本搜索功能。

  1. SQL Server、Oracle 等常规关系数据库是否足够强大以支持大量数据读写?

  2. 如果我有一个网站托管在一个专用的单一服务器上,我一般可以期望它处理多少流量?

  3. 在创建中大型应用程序时,是否有任何一般设计规则或需要考虑的问题?

【问题讨论】:

    标签: database database-design architecture application-design


    【解决方案1】:
    1. 有了良好的缓存策略和编写良好的 SQL 语句,任何 RDBMS 都应该足够了。

    2. 简短的回答是视情况而定。关于这个主题的讨论很好here

    3. 我建议您先查看this post。只需遵循基本的编码实践将有助于使您的代码更具可扩展性。

    【讨论】:

      【解决方案2】:
      1. 是的,但要明智地编写查询并利用缓存。
      2. 取决于硬件、操作系统和网络服务器。
      3. 查看3-tier architecture

      【讨论】:

        【解决方案3】:

        关于 #2:使用Siege 或任何相关的 Web 基准测试工具 - Apache ab、perfmon 和 shell 脚本,任何可以破坏服务器并报告它的东西(Siege 的行为有点像真实用户,真的推荐它)。您将能够在服务器淹没在真实事物中之前获得一些关于服务器可以处理的真实指标:每秒请求数、并发用户数、响应时间、带宽使用情况等。

        当然,当您仅处于设计阶段时,这不会有太大帮助。在这种情况下,安装一些具有相似概念的 OSS Web 应用程序并首先对其进行锤击。这只是一个粗略的估计,因为变量太多,但仍然比凭空捏造要好。

        【讨论】:

          【解决方案4】:

          另外两个人已经在缓存和 SQL 查询建议方面击败了我。我建议的另一件事是使用 AJAX 和客户端验证来减少整页加载和服务器回发的数量。

          【讨论】: