跳到主要内容

node中间层

  • BFF 可以理解成一种“中间层”
  • BFF = Backend For Frontend,专门为前端服务的后端层。
  • 聚合多个后端接口、聚合接口数据
  • 调用数据库
  • SSR 数据请求
  • 处理数据
    • 对数据的清洗、数据转换

为什么node适合做BFF层​

  • BFF 大量工作属于 I/O 型任务
  • nodejs适合高密集的io请求,基于事件驱动的异步非阻塞处理会更快,但是不适合复杂的计算,会阻塞后面的请求
    • 当发起 I/O 异步请求时,Node.js会将异步事件的操作放到任务队列中,不阻塞主线程;当 I/O 操作完成后,对应的回调任务会进入事件循环的任务队列,等待主线程空闲后再执行
  • 高并发的io异步请求都会放到任务队列中,注意只是把回调函数放在队列中,排队执行,不会阻塞请求,而且io请求处理(io的回调函数处理)会很快,回调函数有结果之后,主线程就会读取,就接着处理下一个请求

IO请求​

I/O = Input / Output = 输入 / 输出。

  • 磁盘IO:比如读取、写入文件、上传、下载文件、日志记录
  • 网络IO:处理HTTP请求,访问数据库、调用第三方 API

node不适合CPU 密集任务​

  • CPU 密集任务 是 大量的CPU计算任务
  • Node.js 执行 JavaScript 代码的主线程只有一个,CPU 密集任务会长时间占用这个线程,导致 Event Loop 无法继续处理其他任务,导致请求阻塞
  • 而任务队列,需要等主线程空闲后才能执行
    • 多个异步任务不会阻塞主线程,而是放到任务队列中。需要等主线程空闲之后,通过Event Loop 事件循环读取并执行