AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

在 LinkedIn 的 Ruby on Rails 和 Node.js 对决

  • 2012-10-10
  • 本文字数:1197 字

    阅读完需:约 4 分钟

鉴于性能和可扩展性方面的原因,LinkedIn 前段时间将其移动设施的后台从 Ruby on Rails 替换成了 Node.js。LinkedIn 团队的一位前成员根据其自身的认识, 对此做出了回应并解释了问题的原委。

LinkedIn 移动工程部门的总监 Kiran Prasad 对 ArsTechnica 说,他们必须重新考虑为LinkedIn 客户移动设备提供服务的后台设施,原因在于尽管只有7-8% 的用户使用他们提供的移动应用程序,但Ruby on Rails 的后台就已经陷入可扩展性问题了。

LinkedIn 评估了三种可行的解决方案:Rails/Event Machine,Python/Twisted 以及 Node.js。按照 Prasad 的说法,Node.js 之所以最后被选中,是因为它提供了一些好处:

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

LinkedIn 因为可扩展性舍弃 Rails 的事情在网络上引起了一些反响。LinkedIn 移动团队的一位成员 Ikai Lan 分享了在技术选择方面以及所面临的问题上的一些个人经历

我们选择的是 Ruby on Rails 1.2 版本而部署技术是 Mongrel 。别忘了,这是 2008 年。Mongrel 是 Ruby 的前沿技术。 Phusion Passenger 还没有发布(在此很久才发布的)而 Mongrel 比 FastCGI 早了很多很多年。Mongrel 的问题是什么?它是单线程的。它认为传输速度比 CPU 的效率更重要,这一点我认同。…我们使用 Capistrano 部署,并且是较早使用 nginx 的。…

(后来)我们升级到了 Rails 2.x+ … 并且使用 OAuth 来对 iPhone 客户端进行认证。基于 3-Legged OAuth,我们将 Rails 服务器转化成了 OAuth provider。为什么使用 3-legged OAuth?很简单:我们并不知道自己在做什么。我必须承认这一点。

为移动设备提供服务的服务器托管在 Joyent 上。所以按照 Lan 的说法,当移动应用需要信息时,请求要先发到 Joyent 上,然后再连接提供主 API 服务的 LinkedIn 数据中心:

伙计们,这是一个跨数据中心的请求。运行在单线程的 Rails 的服务器上(每个请求都会阻塞主程序),运行 Mongrel,内存泄露得像筛子(这主要是 gettext 的问题)。Rails 也做过一些事情,像翻译、将 XML 转换成 JSON,我们还在它上面测试了一些针对于移动设备的特性,但除此以外,它并没有做太多的事情。它仅仅比代理强一点。这个代理的最大并发数取决于我们运行了多少了单线程的 Mongrel 服务器。每个 Mongrel 经常要膨胀到 300Mb 的 RAM,所以我们不能大量运行它。

在指出了一系列问题后,Lan 最终承认“v8 确实相当快”但是他还说:“不要认为在构建下一项技术方案的时候必须用 node.js。在移动应用的服务器端,它确实是比 Ruby on Rails 更适合,但是它并不是性能的灵丹妙药。你正在比较的是一种较低级别的服务器和一种一站式的 web 框架。”

关于这个使用 Node.js 取代 Rails 的决定,Hacker News 上有很长的反响讨论

查看英文原文: Ruby on Rails vs. Node.js at LinkedIn

2012-10-10 21:126821

评论

发布
暂无评论
发现更多内容

【轻量化】三个经典轻量化网络解读

地平线开发者

自动驾驶; 算法工具链 地平线征程6

倒计时三年,国产化替代100%进度走到哪了?

禅道项目管理

信创 项目管理软件 国产化替代

龙蜥RISC-V SIG 2.0研讨会圆满举办,宋卓当选国际基金会Datacenter SIG主席

OpenAnolis小助手

AI 操作系统 高性能计算 龙蜥社区 OpenAnolis

Spring项目开发的智能助手:通义灵码使用指南

阿里云云效

云计算 spring

私有云统一管理定义以及好处简单说明

行云管家

云计算 私有云 云管理

龙蜥社区两大委员会月度会议圆满召开

OpenAnolis小助手

开源 操作系统 龙蜥社区

Cloud Kernel SIG 季度动态:发布ANCK 6.6-003版本,支持一测多证

OpenAnolis小助手

操作系统 龙蜥社区 OpenAnolis 龙蜥社区SIG

中国企业出海的驱动力、跨端技术创新及流量分发新模式

xuyinyin

导师招募!Apache DolphinScheduler开源之夏2025等你领航!

白鲸开源

开源 Apache DolphinScheduler 开源之夏

2025慕尼黑上海电子展揭示技术密码:机器人行业蓬勃发展,半导体“芯脏”如何给予支撑?

极客天地

Web3项目开发的测试

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

Paragon NTFS与Tuxera NTFS有何区别 Mac NTFS 磁盘读写工具选哪个好

阿拉灯神丁

Mac 软件 Paragon NTFS NTFS 磁盘管理器 Tuxera NTFS2024 磁盘格式读写软件

是时候重新审视“小米模式”了

脑洞汽车

智能电车

运维堡垒机-开启IT安全运维利器!

行云管家

网络安全 堡垒机 数字安全

龙蜥社区荣获 OS2ATC 2025 “最具影响力开源创新贡献奖”

OpenAnolis小助手

开源 操作系统 龙蜥社区 OpenAnolis

Agentic AI 干货!DeepSeek + OpenAI SDK 构建 Agent 实战

七牛云

AI

CAD粘贴表格显示#怎么办

极客天地

Invicti v25.4.0 发布,新增功能概览

sysin

invicti

移动端动态化发展:技术演进与生态建设实践

xuyinyin

5分钟掌握!DolphinScheduler时间参数动态配置秘籍

白鲸开源

大数据 开源 Apache DolphinScheduler 任务调度 大数据调度

基于Raft协议 + gRPC长连接实现集群间的服务发现、服务注册、元数据共享、元数据持久化

路 飞

Dinky 和 Flink CDC 在实时整库同步的探索之路

Apache Flink

大数据 flink 实时计算

全双工分轨语音数据集:让AI实现无缝对话

数据堂

人工智能 语音识别 语音交互 语音数据集 全双工分轨语音数据集

Spring项目开发的智能助手:通义灵码使用指南

阿里巴巴云原生

spring

​​AMS行政管理系统:数字化赋能人力资源精益管理​

秃头小帅oi

CAD如何炸开参照图形

极客天地

CrossOver 25重磅发布:众多革命性突破带给你更强的Mac游戏兼容性

阿拉灯神丁

兼容性测试 CrossOver Mac下载 Mac游戏推荐 mac虚拟机软件

Apache DolphinScheduler 3.3.0 Alpha发布,功能增强与性能优化大升级!

白鲸开源

大数据 开源 Apache DolphinScheduler 任务调度 发版

2025慕尼黑上海电子展揭秘汽车电子新动能:智能电动化浪潮下,汽车半导体如何赋能行业未来发展?

极客天地

Web3项目的开发

北京木奇移动技术有限公司

区块链技术 web3开发 软件外包开公司

CAD把PDF图纸插入为光栅图像

极客天地

在LinkedIn的Ruby on Rails和Node.js对决_Ruby_Abel Avram_InfoQ精选文章