我正在尝试构建一个类似于Youtube的网络应用程序(这不是一个淘汰赛),但我想我不知道视频是如何在互联网上提供的。
我知道如何构建常规的数据库驱动的Web应用程序,但没有像Youtube的可扩展性那样。我之前构建的所有应用程序都在一台服务器上运行,文件存储在与Web服务器相同的盒子上。
如何将应用程序服务器与文件存储器与媒体服务器分离?
我或多或少想要4台机器(机器集群)
1。)应用程序服务器 - 呈现网页,处理用户上传,将用户的Flash播放器链接到正确的媒体服务器等。
2。)数据库分片 - 存储用户信息,查看收藏夹等。
3.。)文件存储 - 存储媒体文件
4.。)媒体服务器 - 提供媒体文件
如何将所有这些挂钩?我应该利用哪些技术?我在哪里可以了解更多有关构建此内容的信息?
Youtube的可嵌入闪存材料如何工作?我想将我的Flash播放器嵌入其他网站,并将其与我的架构相结合。
注意我已查看过:http://highscalability.com/youtube-architecture
但我仍然没有全面了解这些东西是如何结合在一起的。
如果有人能够从高层次的角度解释所有这些东西是如何运作的?
是否有内部运行的专用客户端服务器在应用程序服务器,文件存储等之间的所有内容之间进行混乱。是否所有这些都通过HTTP使用JSON,这里发生了什么!
由于
答案 0 :(得分:1)
我推荐的两本书是:
后者是flickr的工程总监。不是youtube,但我认为你会发现它具有启发性。
除此之外,High Scalability博客是案例研究和收集智慧的良好来源,所有这些都为进一步探索提供了良好的起点。
答案 1 :(得分:0)
首先雇用合适的人;如果你雇用聪明的人,他们将能够提出这些问题的答案,以及更多的问题。
此外,从您计划最初操作的比例开始。不要计划您不需要的可扩展性。即使你在自己的领域取得了很大的成功,你也不会再制作另一个Youtube。
可扩展性昂贵 - 非常昂贵 - 开发和维护。如果您不需要它,它将耗尽您的资源并不必要地限制您的开发人员。为高性能系统构建可靠的测试环境往往是一项重大工作,而这样的系统需要几个这样的环境。