likes
comments
collection
share

如何看待Node.js工程化应用及服务端应用

作者站长头像
站长
· 阅读数 5

Node看起来更多的应用在前端工程化领域,其实后端服务的应用才能真正发挥Node.js的优势。

Node.js工程化领域的应用,最重要是衍生出一些开发工具,如webpack。用来支撑前端工程师更好的来开发前端项目,这些应用的目的是为了提升前端研发效率或者保证研发质量,并没有真正地应用到 Node.js 核心特点。

在后端服务应用才是真正地体现 Node.js 异步事件驱动的特性。

那么如何认识Node.js在这两个方面的异同呢?

从运行环境方面

  • 工程化上多数基于开发环境,运行在本地的电脑上面;
  • 后端服务应用则是运行在线上的服务器上;

对上述两个环境的Node.js:

  • 在本地的Node.js服务,我们可以方便快速地定位、分析、解决过程中出现的问题
  • 若是线上服务,便是需要利用一些工具来分析判断或者监控其运行情况

那么这又有什么不同呢:

  • 需要工具将服务推送到远程机器上,涉及devops 工具

  • 需要保证远程服务的安全与稳定,涉及一些进程管理工具,如 PM2

  • 需要判断远程服务运行是否正常,涉及远程服务的监控和告警机制

  • 遇到问题时,需要通过远程日志来定位分析问题,这涉及日志打印和跟踪

使用人群上

  • 前端工程化一般都是服务开发人员,如在本地使用 webpack 打包项目

  • 后端服务应用则服务真实用户群体,为用户提供各种前端交互方面的数据等。

因两者的职能不同:

  • 工程化侧重于为开发者提升研发效率或者研发质量。

  • 后端服务应用则关注服务的稳定与安全。

    • 基于用户发送的内容
    • 此外需要关注并发性能,须考虑服务器所能承载的用户并发数,在并发即将达到峰值时,需要有平行扩容方案。考虑用户体验,做好服务的性能优化不可少,尽可能短的接口响应时间

问题调试方面

  • 工程化在本地运行,可随意地 console.log 打印日志进行调试,不会对真实产品用户产生影响

  • 但是在后端服务应用时,需使用一些方法来进行问题调试和定位了

    • 需要在每个业务场景中,进行一些关键逻辑或者数据打印日志信息,可使用 Node.js 日志服务模块,这类日志服务不能影响性能。此外在服务端运行,可能会出现诸如内存泄漏、句柄泄漏或者进程异常退出等问题,需要相关工具和方法来分析定位可能会出现的现网问题

关注点

从以上所述可知:两者的关注点不同,从而导致了两者的差异性:

  • 前端工程化的应用:着重于开发效率的提升和研发质量的保证
  • 后端服务应用:可真正发挥 Node.js 的异步驱动特性。得益于异步驱动特性,在主线程不被 CPU 密集型所影响时,可发挥出 Node.js 高并发特性,用作大部分网络 I/O 较高的后端服务

最后

以上几个方面,是我们在使用Node.js解决问题时,需要清楚认识的几个方面。