【问题标题】:CMS and high traffic sites : PHP and MySQLCMS 和高流量网站:PHP 和 MySQL
【发布时间】:2011-04-05 06:11:08
【问题描述】:

CMS 和高流量网站(如新闻门户网站)在逻辑和数据库设计和优化(PHP 和 MySQL)方面有什么区别吗? 我在 stackoverflow 中搜索了php site scalability,而memcached 占多数。 有没有优化 MySQL 的技术? (我正在为这个问题寻找一本书。我在amazon 中搜索过,但我不知道什么是最好的选择。) 提前致谢

【问题讨论】:

  • 您的问题具体是什么?
  • 一般来说,CMS 的优化选项比较有限,但思路是一样的。
  • “高流量”是什么意思?像 Google 新闻这样的东西会使用不同的数据库架构(没有 MySQL),但这完全取决于有多少数据、多少流量、应用的目的等等。

标签: php mysql performance scalability


【解决方案1】:

当然,您可以采取各种措施来针对高流量网站优化 PHP/MySQL Web 应用程序。但是,它们中的大多数取决于您的具体情况,您没有在问题中给出。

无论您是否拥有高流量网站,您的数据库都应该结构良好。如果您使用现成的 CMS,这通常没问题。除了良好的应用架构之外,没有万能的解决方案。

【讨论】:

    【解决方案2】:

    这不是那么容易回答。 有不同的方法和各种意见,但我试图涵盖一些常见的场景。但首先是一些基础知识。

    大多数 Web 应用程序可以分散在应用程序和数据库中。 数据库使用可以分为事务性(oltp)和分析性(olap)

    在最好的情况下,您可以启动多个应用程序服务器并在它们之间分配流量。它们都连接到同一个数据库服务器,并且可以独立工作。 但是,如果您有其他共享数据、会话等,这可能会很困难。 您只需在 dns 中将多个 IP 地址添加到您的域名即可完成此操作。 或者您使用负载平衡技术来转发客户端做不同的服务器。

    应用程序扩展通常非常容易。数据库要复杂得多。

    首先要做的通常是设置一个或多个与主数据库具有相同数据的复制服务器。它们可以级​​联,但有 1 个严重的缺点。他们的数据并不总是最新的。通常不会超过几秒钟,但它可能会在负载下更多。但对于许多用例来说,这很好。 仅显示信息的大型站点可以将其数据库复制到一些从属服务器,设置一些应用程序服务器(在同一台服务器上运行一个从属服务器和一个应用程序服务器并让该应用程序服务器访问该数据库从属服务器是一个很好的做法)和每个没问题。

    每个 olap 查询都可以定向到从站。 olap 查询是那些不修改任何内容并且不需要 100% up 2 日期数据的查询。

    所以所有内容都需要写入同一个数据库源服务器,其他所有服务器都从该服务器获取副本。例如文章的每条评论。

    如果这个瓶颈变得太紧,你可以朝两个方向发展。

    1. 分片
    2. 主-主复制

    分片意味着您决定应用程序服务器将数据存储在何处以及从何处获取数据。 例如,每个以 a 开头的评论都会到达服务器 a、b-> b 等等。 那是一个愚蠢的例子,但它基本上是这样的。主要涉及一些内部ID。 如果可能的话,最好对数据进行分片,以便可以完全从服务器 agani 中提取数据。 在上面的示例中,如果我想要一篇文章的所有 cmets,我将不得不询问每个服务器 a-z 并合并结果。这是低效但可能的,因为可以复制这些服务器。这称为映射(您可以查看著名的 google map-reduce 算法,它基本上就是这样做的)。

    主-主复制意味着您将数据写入不同的主服务器并且它们彼此同步,并且不像您进行分片那样单独存储。 如果您的应用程序无法自行决定在哪里存储和获取数据,则必须这样做。 您只是存储到任何主服务器,每台服务器都得到一切,每个人都开心吗? 不……因为这涉及到另一个严重的问题。 冲突!想象两个用户输入评论。 commentA 存储在 serverA 上,commentB 存储在 serverB 上。我们应该使用哪个 id。哪个先来? 最好的方法是设计一个应用程序来避免这种情况,并具有不同的键和东西。 但通常发生的是冲突解决、优先排序等等。 oracle 在这个级别上有很多特性,而 mysql 仍然落后。但趋势正在进入更复杂的数据结构,例如云计算...

    好吧,我认为我解释得不好,但您至少应该从文本中获取一些关键字,以便 oyu 可以进一步调查。

    【讨论】:

    • 非常感谢您的出色回答。您能否为这个问题推荐一个资源?
    • 确定我的解释,特别是当涉及到主主复制时非常糟糕,我会获取一些好的资源并添加它们
    猜你喜欢
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 2012-01-16
    • 2017-01-20
    • 1970-01-01
    • 2013-08-29
    相关资源
    最近更新 更多