去哪里学习网络架构?Youtube 示例?

去哪里学习网络架构?Youtube 示例?

我正在尝试构建一个类似于 Youtube 的网络应用程序(它不是仿制品),但我想我不太了解如何在互联网上提供视频。

我知道如何构建常规数据库驱动的 Web 应用程序,但不知道 Youtube 的可扩展性如何。我之前构建的所有应用程序都在一台服务器上运行,文件与 Web 服务器存储在同一个盒子上。

如何将应用服务器与媒体服务器的文件存储分离?我或多或少想要四台机器(机器集群):

  1. 应用服务器——呈现网页、处理用户上传、将用户的 Flash 播放器链接到正确的媒体服务器等。
  2. 数据库分片——存储用户信息、检查收藏夹等。
  3. 文件存储——存储媒体文件
  4. 媒体服务器——提供媒体文件

我该如何将所有这些连接在一起?我应该利用哪些技术?我在哪里可以了解有关架构的更多信息?

Youtube 的可嵌入 flash 功能如何工作?我想将我的 flash 播放器嵌入到其他网站,并将其与我的架构相结合。

笔记:我已经调查过:http://highscalability.com/youtube-architecture

但我仍然不明白这些东西是如何联系在一起的。有人能用高层次的术语解释一下这些东西是如何运作的吗?

是否有专用的客户端服务器在内部运行,以便在应用程序服务器、文件存储等之间对所有这些东西进行处理。这一切都是通过使用 JSON 的 HTTP 进行的吗?这是怎么回事?

谢谢!

答案1

您可以查看http://highscalability.com/关于这个主题的一些非常酷的东西。

答案2

如何将应用服务器与媒体服务器的文件存储分离?

您使用像 OCFS2 这样的集群文件系统:http://oss.oracle.com/projects/ocfs2/

SAN存储,OCFS2,各应用服务器通过iSCSI挂载共享文件系统。

一个更奇特的解决方案是 LiveJournal 使用的 MogileFS:http://www.danga.com/mogilefs/

干杯

答案3

好吧,如何将它们组合在一起取决于你想如何将它们组合在一起。关于如何构建你所描述的类型的系统,有很多选择,这实际上取决于特定的应用程序、你觉得合适的东西以及它真正需要扩展的程度。

您真正能做的最好的事情是查看用于高度可扩展网站的所有不同软件,并阅读教程、文档,如果可以的话,查看实际实现。查看 ZeroMQ 等消息传递软件或其他基于 AMQP 的软件。查看不需要手动分片和数据库规范化的可扩展数据存储。您可以阅读很多内容,它们会让您了解一切是如何真正结合在一起的,并且您可以对整个系统有一个正确的鸟瞰图。

相关内容