Node.js 作为后台可以提供哪些服务?
目前 Node.js 最常被用作前端工程化,导致大家误解为 Node.js 只适合作前端工程化工具,而忽视了其作为后端服务的特性。导致很少在后端研发中考虑使用 Node.js,认为没有任何优势,比如适用场景较少、性能较差等。为了消除这种误解,本讲将介绍 Node.js 的特性,以及适合哪些后端应用场景。
服务分类
我们常听说的服务有 RESTful 和 RPC,但这都是架构设计规范。我们也可以从另外一个角度来分析后台服务,如图 1 所示。
图1 后台服务分类
以上分类并不能代表所有的服务,但是各个系统都或多或少包含这些服务。有些大型系统可能会比这复杂;有些小型系统可能没有这么多模块系统。
下面我们看下每个模块主要的工作是什么:
网关,处理请求转发和一些通用的逻辑,例如我们常见的 Nginx;
业务网关,处理业务相关的逻辑,比如一些通用的协议转化、通用的鉴权处理,以及其他统一的业务安全处理等;
运营系统,负责我们日常的运营活动或者运营系统;
业务系统,负责我们核心的业务功能的系统;
中台服务,负责一些通用 App 类的服务,比如配置下发、消息系统及用户反馈系统等;
各类基础层,这些就是比较单一的核心后台服务,例如用户模块,这就需要根据不同业务设计不同的核心底层服务;
左侧的数据缓存和数据存储,则是相应的数据类的服务。
在这些分层中,我们需要寻找网络 I/O 较多,但是 CPU 计算较少、业务复杂度高的服务,基于这点我们可以分析出 Node.js 应用在业务网关、中台服务及运营系统几个方面。接下来我们就分别从系统的业务场景及系统特性来分析为什么 Node.js 更合适。