第1 页 共2 6 页 1 YouTube 网站架构 文/Todd Hoff 译/罗小平 YouTube 的成长速度惊人,目前每天视频访问量已达1 亿,但站点维护人员很少。他们是如何管理,以实现如此强大供应能力的?被Google 收购后,又在走什么样的发展道路呢? 1.1 平台 l Apache l Python l Linux (SuSe版本) l MySQL l psyco(python->C动态编译器) l lighttpd(取代 Apache作为视频服务器) 1.2 统计数据 l 每天高达1 亿的视频访问量。 l 创建于 2005 年 2 月。 l 2006 年 3 月,每日视频访问量达到 3 千万。 l 2006 年 7 月,每日视频访问量达到 1 亿。 l 2 个系统管理员,2 个系统扩展架构师。 l 2 个产品功能开发人员,2 个网络工程师,1 个 DBA。 1.3 性能监控手段 网站维护人员每天多次重复的工作,类似于执行下面这段代码。 while (true) { identify_and_fix_bottlenecks(); drink(); sleep(); notice_new_bottleneck(); 第 2 页 共 2 6 页 } 1.4 Web 服 务 器 l NetScalar用 于 实 现 负 载 均 衡 和 对 静 态 内 容 的 缓 存 。 l Apache运 行 于 mod_fast_cgi模 式 。 l 一 台 Python应 用 服 务 器 专 门 负 责 Web 请 求 的 路 由 。 l 应 用 服 务 器 与 各 个 数 据 库 和 其 他 类 型 信 息 源 建 立 会 话 ,取 得 所 需 数 据 并 生 成 HTML页 面 。 l 通 过 增 加 服 务 器 , 一 般 就 可 以 实 现 对 Web 层 的 扩 展 。 l Python 代 码 的 效 率 一 般 不 是 瓶 颈 所 在 , 真 正 瓶 颈 在 于 RPC 请 求 。 l Python 应 用 的 开 发 和 发 布 快 速 灵 活 , 这 是 他 们 能 够 应 对 激 烈 竞 争 的 重 要 保 证 。 l 正 常 情 况 下 , 能 将 每 个 页 面 的 响 应 时 间 控 制 在 100ms 以 内 。 l 利 用 psyco( python->C 的 动 态 编 译 器 ) , 通 过 JIT 编 译 方 法 实 现 内 部 循 环 的 优化。 l 在 CPU 高敏感的 活 动 ( 如加 密) 中使用 C 扩 展 。 l 预生 成 某些HTML 页 面 并 缓 存 。 l 在 数 据 库 中实 现 行 级缓 存 。 l 对 Python 结果对 象缓 存 。...