LinkedIn缘何抛弃Ruby,转投NodeJS怀抱?

记得在2012年10月份的时候,鉴于性能和可扩展性方面的缘由,LinkedIn将其移动设施的后台Ruby on Rails替换成了Node.js。那么为何要作出这样的决策,Node.js又比Ruby强在哪里呢?下面一块儿来为你解答。前端

Node.js——基于JavaScript的服务器端软件平台,它的做用主要是用于构建可伸缩的网络应用程序,在过去的几年里它已经风靡于全球众多开发商。Node.js使用一个事件驱动的、非阻塞I/O模型,这使得它的体积更小、效果更佳,适合运行在分布式设备里实时数据密集型的应用程序上。正是因为这些强大的优点,才吸引了大量的网站迁移到Node.js平台。其中就包括LinkedIn。编程

LinkedIn最初是创建在Ruby平台上,包括6万行代码,可是在2011年下半年的时候,LinkedIn开始利用Node.js来重建他们的核心移动服务,旨在提升它的服务性能。与此同时,重建过程也是一项简化过程,最终将代码缩减到2千行。你可能会问:为何LinkedIn选择Node.js?主持这项任务的项目负责人Kiran Prasad给出了一些缘由。Node.js之因此最后被选中,是由于它提供了一些好处:segmentfault

  • 更高的性能,在特定场景下Node.js能比Rails快20倍。
  • 使用3个服务器而不是30个就能应对10倍的流量增加。
  • 前端工程师可以进行后端代码的开发,两个团队实际上合二为一了。

下面给出详细解释:后端

代码减小的最大缘由是咱们当前代码库实质上是framework-free,这意味着原来的代码里有不少是冗余的,应该被去掉。服务器

第二个缘由主要是和LinkedIn如今正在采用的函数式编程有关,这跟面向对象的实现途径大相径庭,不事后来证实函数式编程对于LinkedIn来讲是一个重要的转变。在Ruby平台中,最多见的方式是建立一个能够封装每个通讯和类型的对象。Ruby其实是一种函数式语言,可是它有一个比JavaScript更强大的类和对象的概念。因此在早期的代码库里,开发者有不少抽象层和对象层,而这些抽象层和对象层是在更大的组件化、可分解化和可重用性的前提下建立的。不过如今回想起来,那时候的这些动做都是多余的。网络

另外一个减小代码的重要缘由是MVC(model-view-controller)模型背后的动力,至少MVC模型能够在移动设备和Web基础系统之间可以作出更好的选择。在此以前,LinkedIn有不少服务器端呈现,如今随着模板和视图不断地向客户端转移,所以致使大量的呈现代码是多余的,缩减代码是必不可少的。以后出现的状况就是人们对后端技术的信任和依赖程度不断的加剧,许多先进的东西也慢慢的出现了。这就意味着不必像以前那样使用巨大的代码块了。前端工程师

中国如今是一个拥有庞大网民数量的网络市场,LinkedIn在中国无疑会得到巨大的利润。可是LinkedIn紧随其后的问题是如何应对当前技术架构上的挑战。不过,LinkedIn迁移到Node.js将会一直保持以前的良好表现,而且在扩大市场的前提下将会更加的从容。架构


原文 Why does LinkedIn migrate to NodeJS from Ruby?
翻译 ITeye分布式

相关文章
相关标签/搜索