【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,后续有变化也不会增加后端工作)
  • 库/文档 记录

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

相关推荐
Python私教2 小时前
把开源 Agent 打包成"解压双击即用"的 Windows 便携包:一条命令的完整实现
node.js
没事别瞎琢磨5 小时前
十一、审计与 Run Session——每一步操作都被记录
人工智能·node.js
没事别瞎琢磨5 小时前
十六、AgentSandbox——把所有模块串起来的编排类
人工智能·node.js
没事别瞎琢磨5 小时前
十二、网络代理与白名单规则引擎
人工智能·node.js
没事别瞎琢磨5 小时前
十四、Git Worktree 隔离执行
人工智能·node.js
没事别瞎琢磨6 小时前
十、统一 Runner 入口——能力检测与模式回退
人工智能·node.js
没事别瞎琢磨6 小时前
八、环境隔离——构建安全的子进程环境
人工智能·node.js
没事别瞎琢磨7 小时前
六、输出捕获与截断
人工智能·node.js
没事别瞎琢磨7 小时前
七、敏感路径预检——Protected Paths
人工智能·node.js
没事别瞎琢磨7 小时前
五、进程执行——spawn、超时与进程树清理
人工智能·node.js