使用nodejs开发的简单介绍


nodejs-logo

使用Node.js开发web应用常见优势如下

  • Node.js的原理是事件驱动、异步编程,为网络服务而设计。一部分是因为Javascript的匿名函数和闭包特性非常适合事件驱动、异步编程。
  • Node.js非阻塞模式的IO (Input/Output) 处理给Node.js带来在相对低系统资源耗用下的高性能与出众的负载能力,非常适合用作依赖其它IO (Input/Output) 资源的中间层服务。
  • Node.js轻量高效,可以认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案。Node非常适合如下情况:在响应客户端之前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不一定很多。
    不过Node.js也存在一些不足, 比如单进程,单线程,只支持单核CPU,不能充分的利用多核CPU服务器。效率和可靠性会降低。不过以上缺点可以通过代码的健壮性来弥补。比如开启多个进程,每个进程绑定不同的端口,用反向代理服务器如 Nginx 做负载均衡,同时可以借助强大的 Nginx 做一些过滤检查之类的操作,也能够实现比较好的均衡策略。

nodejs-event

Node表现出众的典型示例包括

  • RESTful API
    提供RESTful API的Web服务接收几个参数,解析它们,组合一个响应,并返回一个响应(通常是较少的文本)给用户。这是适合Node的理想情况,因为您可以构建它来处理数万条连接。它仍然不需要大量逻辑;它本质上只是从某个数据库中查找一些值并将它们组成一个响应。由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的API需求。
  • Twitter队列
    想像一下像Twitter这样的公司,它必须接收tweets并将其写入数据库。实际上,每秒几乎有数千条tweet达到,数据库不可能及时处理高峰时段所需的写入数量。Node成为这个问题的解决方案的重要一环。如您所见,Node能处理数万条入站tweet。它能快速而又轻松地将它们写入一个内存排队机制(例如memcached),另一个单独进程可以从那里将它们写入数据库。Node在这里的角色是迅速收集tweet,并将这个信息传递给另一个负责写入的进程。

nodejs-develop

有哪些著名的网站正在用Node.js呢?

  • Paypal:Paypal 从 2012 年开始大量将使用 Java 编写的业务改写为 Node.js,此前在重构 checkout 系统的时候他们让 Java 程序员和 Node.js 程序员做了一次 Bakeoff(Node.js at PayPal),在同样的测试+同样的需求下,Node.js 组在更短的时间内用更少的人加更少的代码开发出了一样的系统,并且性能比 Java 版好得多。目前 Paypal 有大约 700 名活跃中的 Node.js 开发者。 来源
  • IBM:收购了 Strongloop,Node.js 基金会成立的主要推手之一,主要将 Node.js 应用于企业级开发,重点放在 API 建设上。 来源
  • Yahoo:用于 Yahoo 站点上的各种页面、Flickr 的照片页等等的渲染,也包括 API 和视频流传输(Node.js on the Road: Node.js @ Yahoo)。
  • SAP:类似 IBM,用于企业级开发。
  • Uber:Uber 从一开始就是使用 Node.js 完成整个系统的 —— 对,整个涵盖美国等多个国家的,分布式实时调配系统,而不是系统里的一小部分——并且现在还在使用。 来源
  • Medium:目前跑在 Amazon VPC 上,后端是服务化的架构所以也有一些其他语言打辅助,从一开始就一直在使用 Node.js 写主要的应用逻辑,前后端代码共享带来了一定便利(主要是编辑器与文章的转换)
  • Netflix:类似阿里系,主要由前端推动,做渲染层与数据访问层,开源了自己的数据访问框架 falcor 。

作者:FengqiAsia 链接:https://www.zhihu.com/question/19653241/answer/15993549
作者:张秋怡 链接:https://www.zhihu.com/question/21176891/answer/81862847