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

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

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

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

image.png

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

Node.js之所以最后被选中,是因为它提供了一些好处:

  • 更高的性能,在特定场景下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将会一直保持之前的良好表现,并且在扩大市场的前提下将会更加的从容。

相关文章
|
4天前
|
JSON JavaScript 前端开发
?Nodejs 第九章(token身份认证和express-jwt的安装认识)
【4月更文挑战第9天】Node.js第九章介绍了Token身份认证,特别是JWT(JSON Web Token)作为跨域认证的解决方案。JWT由Header、Payload和Signature三部分组成,用于在客户端和服务器间安全传输用户信息。前端收到JWT后存储在localStorage或sessionStorage中,并在请求头中发送。Express-JWT是一个中间件,用于解析JWT。基本用法包括设置secret和algorithms。注意安全问题,避免混合使用不同算法以防止降级攻击。
45 0
|
4天前
|
JavaScript Windows
Win7内网安装高版本的Node方法,亲测有效node-v16.16.0
Win7内网安装高版本的Node方法,亲测有效node-v16.16.0
69 0
|
4天前
|
JavaScript Linux 数据安全/隐私保护
node内网安装npm私服以及依赖包上传发布verdaccio
node内网安装npm私服以及依赖包上传发布verdaccio
110 1
|
4天前
|
移动开发 JavaScript 前端开发
为了学习vue3,安装nvm进行node的多版本管理
为了学习vue3,安装nvm进行node的多版本管理
22 2
|
4天前
|
资源调度 jenkins 持续交付
jenkins 自动安装nodejs16.16.0版本报错处理
jenkins 自动安装nodejs16.16.0版本报错处理
31 0
|
4天前
|
JavaScript 前端开发 Linux
Node.js安装与配置
`Node.js` 是一个基于 `Chrome V8` 引擎的 `JavaScript` 运行环境,它允许开发者使用 `JavaScript` 编写服务器端代码。以下是 `Node.js` 的安装与配置的详细步骤:
Node.js安装与配置
|
4天前
|
JSON JavaScript 关系型数据库
?Nodejs 第十六章(Nodejs环境安装和依赖使用)
【4月更文挑战第16天】本文介绍了Node.js环境安装和项目搭建步骤。检查Node.js和npm版本安装核心依赖,如Express(Web应用框架)、MySQL库、CORS(解决跨域问题)、body-parser(解析POST数据)、express-jwt和jsonwebtoken(JWT验证)、multer(文件上传处理)、ws(WebSocket支持),以及可选的dotenv(管理环境变量)和ejs(模板引擎)。完整源码可在Gitee开源项目[nexusapi](https://gitee.com/lintaibai/nexusapi)中找到。
24 0
|
4天前
|
JavaScript Linux Python
Linux 安装 Node.js | NPM
Linux 安装 Node.js | NPM
10 0
|
4天前
node安装常用工具
node安装常用工具
9 0
http://www.vxiaotou.com