阅读更多

4顶
0踩

企业架构
记得在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之所以最后被选中,是因为它提供了一些好处:

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

英文原文:Pixelstech
  • 大小: 8.9 KB
来自: Pixelstech
4
0
评论 共 17 条 请登录后发表评论
17 楼 caizi12 2014-05-05 11:14
cxh116 写道
yunzhu 写道
LinkedIn真的只有2千行代码???



js的压缩工具都很强的.压缩压缩再压缩,然后就只有一行了


那就别说多少行了,说占多少字节吧。
16 楼 wchaowu 2014-03-30 20:14
欢迎关注node.js微博,http://weibo.com/wchaowu
15 楼 hantsy 2014-03-28 23:50
从 2006 年以上一些 Java 相关会议就可以了解, LinkedIN 的核心技术都是基于 Java的(也在不但的演变),目前 NodeJS 只是用来作为消息推送,移动等一些小部分功能。
14 楼 nhyjq 2014-03-27 22:55
难道大家都没注意到吗?

6万行ruby是整个linkedin的代码

2千行node.js是linkedin的移动服务(原文是mobile service)

根本不可比较


原文本来就是标题党
13 楼 jxqdxm 2014-03-27 16:53
yunzhu 写道
LinkedIn真的只有2千行代码???


这应该当功于后台的node.js服务器,它本身做了很多工作,可以使代码大规模减少.我想你们应该多了解一下node.js服务器的情况,就知道为什么可以减少这么多.
12 楼 white_crucifix 2014-03-26 11:43
remyzane 写道
white_crucifix 写道

能不要秀下限吗?
原本6万行的ruby,如果再用ruby重构一次,也能至少降到千这个级别上
要么你真的不知道这种常年的大量代码的系统,到底是多么像一块海绵,只要你想压就能压的很小


好吧,我承认我真不知道,也真没见过这样的系统(不引入外部组件和实现,纯改业务能改成原来的1/30)。

这等非常之事您都能描述的如此”清楚明白“、“形象生动”,在下真是佩服的五体投地。


哈哈,我是觉得如果要用戏谑的语气表达观点,就一定得说对,不然就要承担一定的代价。其实linkedin和这篇文章都有问题,linked肯定有夸大,这和当年推销自己公司产品时的感觉是一样的;这篇文章(原文)也是标题党,全文讲的并不是nodejs的优势,而是讲的重构的力量,标题博眼球。另外,因为这是业务系统,而且有年份了,只要项目组文化没有“重构”这个概念,代码必然是越来越重复,越来越冗余,到后来即使有人想重构也不愿意担责任而继续复制黏贴。毕竟是业务系统,不需要代码大神,只要实习生就行,像我们遇到的大部分系统一样。这种情况,在中国像移动电信一类的系统就很常见了。
11 楼 remyzane 2014-03-26 10:59
white_crucifix 写道

能不要秀下限吗?
原本6万行的ruby,如果再用ruby重构一次,也能至少降到千这个级别上
要么你真的不知道这种常年的大量代码的系统,到底是多么像一块海绵,只要你想压就能压的很小


好吧,我承认我真不知道,也真没见过这样的系统(不引入外部组件和实现,纯改业务能改成原来的1/30)。

这等非常之事您都能描述的如此”清楚明白“、“形象生动”,在下真是佩服的五体投地。
10 楼 white_crucifix 2014-03-26 09:28
引用
每30行代码里面有29行冗余?


能不要秀下限吗?

只能想到两点:
1.要么这是虚假新闻
2.要么你真的不知道这种常年的大量代码的系统,到底是多么像一块海绵,只要你想压就能压的很小
9 楼 remyzane 2014-03-26 04:41
white_crucifix 写道
remyzane 写道
2千行 js  == 6万行 ruby
笑死个人

把 ruby 解释器的 c 代码行数加进去,
再把 c 编译器的 c和汇编 代码函数也加进去

2千行 js  == 600万行 ruby

js 威武,js 牛逼


能再傻逼点吗?
人家都说了
引用
代码减少的最大原因 ....... 代码里有很多是冗余的,应该被去掉。

原本6万行的ruby,如果再用ruby重构一次,也能至少降到千这个级别上


每30行代码里面有29行冗余?

8 楼 cxh116 2014-03-25 20:06
yunzhu 写道
LinkedIn真的只有2千行代码???



js的压缩工具都很强的.压缩压缩再压缩,然后就只有一行了
7 楼 dohkoos 2014-03-25 18:32
“代码减少的最大原因是我们当前代码库实质上是framework-free,这意味着原来的代码里有很多是冗余的,应该被去掉”

这个算是代码减少??写了一行代码,并且引入了一个有3w行代码的框架,然后不用框架了,把代码扩充到10行,然后就大声宣布我们把代码从3w行减少到了10行。是想制造新闻吗?
6 楼 sohuexe 2014-03-25 18:13
yunzhu 写道
LinkedIn真的只有2千行代码???

这得看多长的行,我可以说1行就能替换原来的6万行呢
5 楼 hefei1986 2014-03-25 14:57
4 楼 white_crucifix 2014-03-25 14:50
remyzane 写道
2千行 js  == 6万行 ruby
笑死个人

把 ruby 解释器的 c 代码行数加进去,
再把 c 编译器的 c和汇编 代码函数也加进去

2千行 js  == 600万行 ruby

js 威武,js 牛逼


能再傻逼点吗?
人家都说了
引用
代码减少的最大原因 ....... 代码里有很多是冗余的,应该被去掉。

原本6万行的ruby,如果再用ruby重构一次,也能至少降到千这个级别上
3 楼 remyzane 2014-03-25 14:44
2千行 js  == 6万行 ruby
笑死个人

把 ruby 解释器的 c 代码行数加进去,
再把 c 编译器的 c和汇编 代码函数也加进去

2千行 js  == 600万行 ruby

js 威武,js 牛逼
2 楼 white_crucifix 2014-03-25 14:41
yunzhu 写道
LinkedIn真的只有2千行代码???


引用
移动设施的后台
1 楼 yunzhu 2014-03-25 14:25
LinkedIn真的只有2千行代码???

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • php 前途 ruby on railsnodejs,LinkedIn缘何抛弃Ruby,转投NodeJS怀抱?

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

  • 优秀的计算机编程类博客 和 文章 转

    研发周报:LinkedIn缘何抛弃Ruby,转投NodeJS怀抱 ANDROID 微博登录“SSO PACKAGE OR SIGN ERROR” 错误解决方案 swifttype 0代码、不编程—交互式网页设计工具VXPLO 社区 颜色工具 简书 最后 ...

  • [转]优秀的计算机编程类博客 和 文章

    介绍 优秀的计算机编程类博客是一些关于计算机方面的优秀博客。 欢迎大家将经常看的优秀博客或博客文章共享出来,您可以: 使用 Issues 以及 Pull Request ...Ruby Go 读书笔记及...

  • 优秀的计算机编程类博客 和 文章

    七天学会NodeJS 告别node-forever,拥抱PM2 叩首问路,码梦为生——QCon北京2013 Node.js专题出品人朴灵专访 当IoC遇见了Node.js 美团酒店Node全栈开发实践 ...

  • 优秀的计算机编程类博客和文章整理(github转载)

    介绍优秀的计算机编程类博客是一些关于计算机方面的优秀博客。欢迎大家将经常看的优秀博客或博客文章共享出来,您可以: ...Ruby Go 读书笔记及其它 优秀博客 综合 杨文博(供职于百度公司,任复合搜索

  • 优秀it博客和文章

    研发周报:LinkedIn缘何抛弃Ruby,转投NodeJS怀抱 ANDROID 微博登录“SSO PACKAGE OR SIGN ERROR” 错误解决方案 tomcat结合nginx使用小结 swifttype 0代码、不编程—交互式网页设计工具VXPLO 社区 颜色工具 简书 ...

  • iOS开发牛人博客收集

    研发周报:LinkedIn缘何抛弃Ruby,转投NodeJS怀抱 ANDROID 微博登录“SSO PACKAGE OR SIGN ERROR” 错误解决方案 objc.io A periodical about best practices and advanced techniques in Objective-C. ...

  • 人力资源经理绩效考核表.xls

    人力资源经理绩效考核表

  • 智慧环卫管理平台建设方案Word(211页).docx

    一、智慧环卫管理平台的建设背景与目标 智慧环卫管理平台的建设源于对环卫管理全面升级的需求。当前,城管局已拥有139辆配备车载GPS系统、摄像头和油耗传感器的环卫车辆,但环卫人员尚未配备智能移动终端,公厕也缺乏信息化系统和智能终端设备。为了提升环卫作业效率、实现精细化管理并节省开支,智慧环卫管理平台应运而生。该平台旨在通过信息化技术和软硬件设备,如车载智能终端和环卫手机App,实时了解环卫人员、车辆的工作状态、信息和历史记录,使环卫作业管理透明化、精细化。同时,平台还期望通过数据模型搭建和数据研读,实现更合理的环卫动态资源配置,为环卫工作的科学、健康、持续发展提供决策支持。 二、智慧环卫管理平台的建设内容与功能 智慧环卫管理平台的建设内容包括运行机制体制建设、业务流程设计、智慧公厕系统建设、网络建设、主机和储存平台需求、平台运维管理体系、硬件标准规范体系以及考核评价体系等多个方面。其中,智慧公厕系统建设尤为关键,它能实时监控公厕运行状态,保障公厕的清洁和正常运行。平台建设还充分利用了现有的电子政务网络资源,并考虑了有线和无线网络的需求。在功能上,平台通过普查、整合等手段全面收集环卫车辆、企业、人员、设施、设备等数据,建立智慧环卫基础数据库。利用智能传感、卫星定位等技术实现环卫作业的在线监管和远程监控,实现对道路、公共场所等的作业状况和卫生状况的全面监管。此外,平台还建立了环卫作业网格化管理责任机制,实现从作业过程到结果的全面监管,科学评价区域、部门、单位和人员的作业效果。 三、智慧环卫管理平台的效益与风险规避 智慧环卫管理平台的建设将带来显著的环境、经济和管理效益。环境方面,它将有力推进环境卫生监管服务工作,改善环境卫生状况,为人民群众创造更加清洁、卫生的工作和生活环境。经济方面,通过智慧化监管,大大降低了传统管理手段的成本,提高了监管的准确性和效率。管理方面,平台能够追踪溯源市民反映的问题,如公厕异味、渣土车辆抛洒等,并找到相应的责任单位进行处置,防止类似事件再次发生。同时,平台还拥有强大的预警机制功能,能够在很多环卫问题尚未出现前进行处置。然而,平台建设也面临一定的风险,如部门协调、配合问题,建设单位选择风险以及不可预测的自然灾害等。为了规避这些风险,需要加强领导、统一思想,选择优秀的系统集成商承接项目建设,并做好计算机和应用系统的培训工作。同时,也要注意标准制定工作和相关法律法规的制定工作,以保证系统建设完成后能够真正为环卫管理工作带来便利。

  • apache-parent-10-14.el7.x64-86.rpm.tar.gz

    1、文件内容:apache-parent-10-14.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/apache-parent-10-14.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

  • 用于卫星通信的CTS天线

    用于卫星通信的圆极化CTS天线研究

  • 人事档案登记及查询系统.xlsx

    人事档案登记及查询系统

  • 12 -防损部经理绩效考核表1.xlsx

    12 -防损部经理绩效考核表1

  • 泰尔指数模型stata全流程代码+数据+文献(数据权威)

    ## 一、泰尔指数模型stata全流程代码+数据+文献 参考C刊《农业经济问题》朱红根(2023)老师的做法,用泰尔指数是衡量个人或地区之间收入差距的重要指标,本文利用泰尔指数分析中国区域内和区域间数字乡村发展水平的差异,测算了全国总体差异、区域内差异、区域间差异以及相关贡献率。此资料包括stata全流程代码、案例数据、参考文献,用excel计算有标注有过程 ,并且参照文献讲的。 ## 二、2005-2021年城乡收入差距与泰尔指数:原始数据+测算结果 泰尔熵标准(Theil’s entropy measure)或者泰尔指数(Theil index)是衡量个人之间或者地区间收入差距(或者称不平等度)的指标。又称泰尔系数或锡尔指数,但我还是习惯叫泰尔指数。Theil指数用来表示区域经济差异状况,数值越大则差异程度越大。 数据名称:城乡收入差距与泰尔指数(原始数据+测算) 数据年份:2005-2021年 指标变量:泰尔指数、城镇收入占农村收入之比、城镇居民人均可支配收入、农村居民人均可支配收入、乡村人口、全体居民人均可支配收入、城镇人口、年末常住人口 测算公式:

  • 34 -配送部经理绩效考核表1.xlsx

    34 -配送部经理绩效考核表1

  • [2024最新更新]全国城投公司数据大全(数据权威)

    1.资料名称:2021-1998年城投公司数据大全 2.数据指标:序号、公司名称、区域、城投评分、省内排名、最新主体评级、行政等级、 股东背景、股权关系、平台重要性、城投口径、实控人、 总资产(亿元)、 货币资金(亿元)、土地资产(亿元)、受限资产(亿元)、应收账款(亿元) 应收类款项政府占比(%)、营业收入(亿元)、公益性&准公益性主营占比(%)、归母净利润(亿元)、政府补助(亿元)、总资产报酬率(%)、有息债务(亿元)、 短期债务(亿元)、借款(亿元)、债券余额(亿元)、私募债占比(%)、 非标融资(亿元)、资产负债率(%)、债务资本化比率(%) 对外担保比例(%)、EBITDA/利息(倍)、EBITDA全部债务比(%)、授信余额(亿元)、 最新报告期 、申万行业 城投公司是城市建设投资公司的简称,是全国各大城市政府投资融资平台,起源于1991年,承担相应的政府职能,是特殊市场经营体。 此类城投公司大多是不具备盈利能力的,属于事业单位或者国有独资公司性质,他们是通过政府补贴的方式实现盈利,属于带有政府性质的特殊市场经营体。

  • 推广立方连通圈网络的Hamilton分解的算法.pdf

    推广立方连通圈网络的Hamilton分解的算法.pdf

  • 材料员绩效考核表.xls

    材料员绩效考核表

  • 2023年全国大学生英语竞赛样题(A类).pdf

    2023年全国大学生英语竞赛样题(A类)

  • 考虑柔性负荷的综合能源低碳经济调度模型研究:基于碳交易与场景分析的优化求解方法结合CPLEX的灵活求解方案 ,考虑柔性负荷的综合能源低碳经济调度 调度模型参考第一篇文献 碳交易模型参考第二篇 考虑三种

    考虑柔性负荷的综合能源低碳经济调度模型研究:基于碳交易与场景分析的优化求解方法结合CPLEX的灵活求解方案。,考虑柔性负荷的综合能源低碳经济调度 调度模型参考第一篇文献 碳交易模型参考第二篇 考虑三种场景并用cplex求解 场景一调度结果如图所示 本代码可改写能力强 ,核心关键词: 1. 柔性负荷综合能源低碳经济调度; 2. 调度模型; 3. 碳交易模型; 4. 场景分析; 5. Cplex求解; 6. 改写能力强。,"综合能源低碳调度:多场景Cplex求解的柔性负荷模型及优化结果展示"

Global site tag (gtag.js) - Google Analytics