如何看待Node.js工程化应用及服务端应用
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解决问题时,需要清楚认识的几个方面。
转载自:https://juejin.cn/post/7206177991150829605