【elpis专栏】里程碑一:elpis-core 引擎的理解

elpis-core 引擎的理解

elpis-core 引擎------nodejs 服务框架,属于 BFF 层,主要作用于 页面 与 服务端 中间的交互处理(例如:请求参数校验,请求日志记录,接口汇总分发等)

  • 目标:
    • 规范的文件目录
    • 通过服务引擎中的解析器ElpisKoa(各种 loader),对文件进行解析 (引擎核心)
    • 进入到运行时
      • 任务:通过解析器 ElpisKoa,实现运行时的流程【接受各种请求(api/页面),经历各种中间件,处理各种 controller、service,响应客户端的请求】。

具体说明 运行时

  • koa 的洋葱圈模型

    • 原则:先入后出
    • 举例流程:
      • 页面请求-〉进入路由分发-〉进入洋葱圈(中间件),顺序执行-〉业务逻辑处理-〉调用对应的controller(如SSR)-〉再次进入洋葱圈,执行中间件-〉渲染响应页面
  • 项目分为三层

    • 展示层
    • BFF层(不仅做转发,还要做数据层的消费与交互,和前端的交互)
      • 1: 接入层:路由分发、路由各种校验、路由中间件
      • 2: 业务层:controller处理器(业务、service 调用)、env环境分发、config提取、extend服务拓展、schedule定时任务
      • 3: 服务层:service 处理器
    • 数据层
      • 数据库、缓存、文件存储、日志、外部服务等
  • BFF 层作用

    • 1️⃣ 可以解耦展示层和后端接口
      • 后端只需要关注业务逻辑(提供原子性的接口),无需关注页面展示逻辑
      • 具体的展示逻辑,由前端在 BFF 层实现(增加字段、接口)
    • 2️⃣ 可以将后端的接口都收拢到 BFF 层,进行汇聚处理
      • 列如:某个页面需要依赖多接口,可以由 BFF 统一为页面提供一个接口,对外分发
      • 优点:经过这样处理后,外网 到 内网 的请求,时间会缩短,有效提升系统的整体性能
        • 默认请求流程:页面请求 ➡️ 解析域名 ➡️ 创建链接 ➡️ DNS节点的寻找 ➡️ 去到服务端的网关 ➡️ 负载均衡、防火墙 ➡️ 具体的服务节点
        • 优化后的流程:只保留了展示端与 BFF 层的交互,BFF 层与后端属于 服务对服务的交互(直接指到ip/端口),会极大的节省请求时间,性能得到提升。【具体来说,如有一个页面需要请求100个接口,那就需要走100次从外网到内网的过程;而将100个接口,放到 BFF 中去做转发,我们只需要走1次从外网到内网的过程,其余均是服务对服务的交互,在集群内完成。】
        • 同时,这样的操作,也会绕开浏览器对同一域名下,请求的并发上限。
    • 3️⃣ 可以将签名、密钥放在 BFF 层进行管理,可以更好的保护目标 API 服务器
    • 4️⃣ 具备 SSR 的能力,对比无 BFF 层,前端的灵活性更高(前端可自己实现,而无需挂到Nginx,后续有变化也不会增加后端工作)
  • 库/文档 记录

引用: 抖音"哲玄前端"《大前端全栈实践》

相关推荐
duangww2 小时前
Linux设置定时作业执行node.js脚本
linux·node.js·sap fiori
源去_云走3 小时前
npm 包构建与发布
前端·npm·node.js
码农欧文3 小时前
关于npm和pnpm
前端·npm·node.js
EndingCoder4 小时前
构建RESTful API:用户管理示例
linux·javascript·node.js
RoyLin4 小时前
微任务与宏任务
前端·后端·node.js
Q_Q51100828517 小时前
python+django/flask在线问诊系统 医院就诊 医生推荐系统
spring boot·python·django·flask·node.js·php
无双_Joney18 小时前
[更新迭代 - 1] Nestjs 在24年底更新了啥?(bug修复篇)
前端·后端·node.js
_AaronWong1 天前
前端工程化:基于Node.js的自动化版本管理与发布说明生成工具
前端·javascript·node.js
前端双越老师1 天前
使用 langChain.js Supervisor 实现 multi-agent 多智能体架构
node.js·agent·全栈