我一直在寻找twitter为什么需要将其中间件部分从Rails迁移到Scala的解释。是什么阻止了他们通过增加服务器来扩展其用户群,就像Facebook那样呢?更具体地说,Ruby/Rails技术有什么阻碍了Twitter团队采取这种方法吗?
我一直在寻找twitter为什么需要将其中间件部分从Rails迁移到Scala的解释。是什么阻止了他们通过增加服务器来扩展其用户群,就像Facebook那样呢?更具体地说,Ruby/Rails技术有什么阻碍了Twitter团队采取这种方法吗?
没有任何平台可以在处理瞬息万变的复杂数据集的同时无限扩展。语言和基础设施很重要,但是您构建网站和数据访问模式的方式更为重要。
如果您曾经玩过像《运输大亨》或《拓荒者》这样需要运输资源的游戏,您就会知道随着使用量的增加,您需要不断升级基础设施。
像Facebook和Twitter这样的平台的扩展是永无止境的任务。您有越来越多的用户,并且被迫添加更多功能和功能。这是一个不断升级一点,导致另一点压力增加的过程。
解决问题并不总是通过增加服务器,有时反而会引起更多问题。
他们本可以通过增加硬件来解决问题,但这比编写更高效的代码要昂贵得多。像许多高级框架一样,Ruby on Rails 在许多方面表现出色,但高性能并不是它的强项。编译型语言将始终比解释型语言更快。
线性收益与并行性(即多个服务器)非常罕见,而且非常依赖于应用程序。是的,它存在——这就是GPU完成大部分工作的方式。如果您提供静态页面且没有会话状态,那么也是如此。
然而,在大多数情况下,添加服务器不会线性增加性能(即,10个服务器不比1个服务器快10倍),这意味着在单个服务器上获得的任何收益都将比仅添加服务器更具影响力。Twitter难道没有一堆服务器吗?