摘要:这不是代表孰优孰劣,但LinkIn从Node替换Rails取得了不俗的性能提升,硬件的利用率提升了10倍。客观的说,将2008年与2012年的产品进行对比本身就不公平,曾经在LinkedIn工作的工程师蓝奕凯发表了博文,对使用Rails那段历史进行了说明,他并不认为Node是提升性能的灵丹妙药。
Ryan Paul写过一篇《深入观察LinkedIn移动端的设计》,在其中我们看到:有23%的移动用户;专注朴素、易用以及可靠性;30%原生代码,70%使用HTML;嵌入轻量的HTTP服务;单一的客户端应用链接云服务器;后端服务从Rails转换到Node.js。
曾经在LinkedIn工作的工程师蓝奕凯补充道:移动促使产生了跨数据中心应用。运行在单线程的Rails服务器上(每一个请求都会降低整体性能),使用Mongrel,将会浪费大量内存。这解释了为什么任何没有阻拦的方式会赢得青睐。
Node.js的优势在于:
- 更好的性能以及更少的内存占用,在某型情景下性能提升20倍
- 程序员可以充分发挥他们JavaScript的技巧
- 前端与后端开发人员可以在一个小组内协作
- 服务器从30台减少到只有3台,硬件资源利用率提升10倍,并且还有提升的空间。
- 开发工作可以更加专注在应用开发,而不是到处去救火
很显然,有大量的问题交织在一起。我们需要重写代码,改变服务器与客户端的分布式逻辑,为了优化我们有大量需要争论的地方。但可以确信,LinkedIn选择Node.js获得了巨大成功。
在文章的评论部分看到一些有趣的分析,我特别喜欢oluseyi的评论:
不可避免的我们要重构并重写,我们积极的使用缓存,储存客户端的范本(并不可避免的从服务器更新数据)。这意味着一旦时间戳要求更新缓存,应用程序就需要从服务器一致性过滤器更新数据,而不是通过打开又关闭若干个连接。我们希望建立一条长寿命的连接,用来传输数据。(同样的,原来的执行将会返回HTML代码,这意味着包括图像的URI地址等在内的链接都将指向服务器。同时,由于web浏览将会建立和销毁导航,这些图像并没有有效的缓存。)
在长寿命链接的方式下,在传统的MVC("Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。)web应用程序不再有“查看”这一概念。最终的结果是,在服务器端的控制器将会聚集所有必要的数据,但这些数据并不会直接输出,而是通过输出二进制对象,并被客户端拆包提取所有有关的数据。
我注意到你很关心MVC被过度滥用,只在特定的web应用程序相关环境才适合应用。用户的web端(标记输出,包括外部的URL等等,都需要重新处理)将提取拆包的数据和缓存数据产生。
Update:本文在Hacker News引起了大量争议,欢迎纠错、评论。
分享到:
相关推荐
Linkedin-scraper-js 解析公共 LinkedIn 个人资料并将其作为 json 对象返回的 node.js 服务器 跑步: node server/linkedin-scraper 标志: -p : Port -u : Public url to scrape -u : Cache time
LinkedIn 自动连接工具 有时您想要更多的LinkedIn连接,尤其是500+ 。 此工具非常有助于增强您的联系。 只需从您最喜欢的终端或命令提示符运行它并保持运行,直到您发出足够的连接请求。 一种自动化工具,用于自动...
oauth2-linkedin 使用Node.js的服务器端Oauth2 LinkedIn登录概述设置/配置您的发送=>(重定向)用户到linkedin.com登录和/或授权URL: 接收=> code并state然后使用它们获取访问令牌: 接收=> token并使用它对用户...
本书是Node开源框架主要贡献者的最新力作,解析了为什么Node的单线程方法能够在多台服务器间支撑起大量的并发连接,并让我们看到了在浏览器与服务器间共享代码是何等便利。Node何以能俘获Google、LinkedIn及eBay等...
NodeJS工具导出Linkedin数据 安装 git clone https://github.com/nhduy1985/linkedin-export-tool.git cd linkedin-export-tool npm install 配置 mkdir export cp config.json.dist config.json vim config.json ...
该扩展程序可帮助您从简单的CSV文件自动添加LinkedIn用户。 该扩展程序可帮助您从简单的CSV文件自动添加LinkedIn用户。 支持语言:English
一个非常易于使用的浏览器扩展,用于将您的完整LinkedIn个人资料导出到JSON Resume文件或字符串。 Chrome扩展程序 :package: - 我的LinkedIn个人资料 :man::briefcase: 用法/安装选项: 有(或曾经有)一些不同的...
因此,您可以在服务器上使用它。 以JSON格式返回结构化数据。 将于2020年投入使用。 该抓取工具将提取公开可用的数据: :artist_palette: 个人资料:名称,标题,位置,图片,描述和网址 :briefcase: 工作...
Coursera 课程推荐使用 LinkedIn 数据。 申请链接: : : 简短的介绍: 课程推荐应用程序将使用他的 LinkedIn 技能和 Stack Overflow 的趋势技能来推荐 Coursera 的用户课程。 我们还为用户提供使用趋势技能的统计...
为什么这个 ? 您可能需要对您的linkedin 网络进行分析/监控。 我个人使用它来更好地可视化我的网络并对其进行一些数据分析。如何使用您必须通过在其中创建...您必须确保您的 Neo4j 服务器已启动 PS:此脚本基于工作
非官方LinkedIn API的文档和库。 截至2015年5月19日, 取消了其开发人员计划。 只留下了少量相当有趣的API调用。 此处详细信息 该项目记录了使用的API。 它提供了对大多数原始API以及从未使用过的各种端点的访问。...
前端开源库-node-linkedinnode.js中的node linkedin、linkedin 2.0兼容包装器
Airtable LinkedIn 联系进口商 这是一个在 LinkedIn 个人资料页面上运行的 Chrome 扩展程序,允许将一些个人资料数据导入上的给定“联系人”表。 我建立这个是因为 LinkedIn 已经关闭了他们的 API(不酷!)并决定...
LinkedIn的Android移动SDK是一个开放源代码库,旨在减少将LinkedIn的数据和服务集成到您的Android应用程序中的麻烦。 特征 轻松的单点登录(SSO)身份验证以及官方的LinkedIn移动应用程序。 一个方便的包装器,用于...
LinkedIn创始人霍夫曼:创始人何时退居二线.docx
python脚本,用于从带有字幕的linkedin学习中下载课程 基于liranbg的linkedin学习下载器,但进行了重组 依存关系: Python 3请求lxml tqdm泡菜 请将此脚本用于您自己的目的。 该脚本仅用于教育用途和个人用途。 ...
oauth2-linkedin 使用Node.js的服务器端Oauth2 LinkedIn登录概述Node.js oauth2 Facebook登录模块。 如果您想或需要自己动手使用Facebook,请在用户登录并获取个人资料的帮助下登录此模块。 一旦有了JSON格式的用户...
或使用Prozess,另一个node.js kafka库:旧版说明:Kafka JavaScript API 使用node.js与 (LinkedIn的基于磁盘的消息队列)进行交互起床并跑步1安装kafka npm install kafka 2启动zookeeper,kafka服务器和使用者...
使用拥有很多联系的帐户,否则您将获得糟糕的结果。 在目标公司添加几个连接应该会有所帮助-此工具将可以用于三级连接。 请注意, 最多可为1000名员工。 您可以使用功能--geoblast或--keywords来绕过此限制。 有关...
PHP中的LinkedIn API客户端 一个PHP库,用于处理与LinkedIn API的身份验证和通信。 库/ SDK帮助您获取访问令牌,并且在通过身份验证后,可以帮助您发送API请求。 但是,您不会免费获得所有内容。... 我们使用