YouTube可扩展性
缩放(3)技术谈话,可用这里是西雅图可扩展性大会的一部分,并是关于YouTube如何处理可扩展性问题的演示。这是我最近对我非常感兴趣的话题。(试图将此站点缩放为5个用户而不是1.)我最近订购了一本书由Cal Henderson(Flickr的技术领先)关于Web应用程序中的可扩展性,我期待着它来到这里Tommorow(以及SICP的非PDF副本,Deadtree书籍仍然在我的世界里)。
这是一个可通过的谈话,但我肯定会更喜欢它更具体的具体问题,并且更加关注他们的良好解决方案,而不是失败的解决方案(也是“,我们现在使用Bigtable”只是让我想在一个角落里哭泣,谢谢人,我们应该在哪里得到它?哦,数十万台支持它呢?一些街角上的种子家伙?)。无论如何,与笔记有关。
- 缩放是恒定的查找和修复瓶颈的迭代
- 大部分时间都是“足够快”的Python
- Pearyo to Jit Compile Python
- 写入C扩展以进行计算重位(加密)
- 通过添加更多机器和负载平衡来缩放
- lighttpd为静态内容提供服务,apache以服务动态内容
- 每个视频由迷你群集托管(失败的冗余,装载尖峰)
- 保持硬件简单且价格便宜(更便宜的支持,更便宜的服务,更容易找到帮助的帮助)
- 始终开始简单和构建
- LightTPD默认是单程(导致某些情况下的性能不佳)
- MySQL数据库复制尺度对于写入密集型系统不足,写入众人读取
- 本地内存>其他内容,磁盘读取<任何其他
- vmstat for profilling.
- 许多层次的缓存彼此顶部
- 数据库分区是最好的长期解决方案
为了简要地详细说明数据库分区,想法是具有大量的小型数据库(因此没有复制延迟问题),以及用于确定要查找特定数据的数据库的散列机制。这增加了缓存的局部性(提高了它们的质量),并且还意味着这些较小的数据库更容易存储在内存中,并且小尺寸也有助于复制(用于备份等)。
正如你所看到的,我没有拿起许多细节。啊,很好,C'est La Vie。哦,在座椅上的可扩展性会议上有一堆其他TechTalks可从其他演示者提供。其中一些可能有点具体。