node静态服务器优缺点_Node —— BFF
发布日期:2021-06-24 17:29:57 浏览次数:3 分类:技术文章

本文共 1343 字,大约阅读时间需要 4 分钟。

47b9c678ce499f9fb3a512e97a796788.png

概念梳理

在了解 BFF 之前,我们要先对 api 网关有个基本概念。

api 网关

定义

一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。

核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和管理服务

API 网关作用

作为一个系统的后端总入口,接口聚合、路由转换、安全、限流、缓存、日志、监控、重试、熔断等。

API 分类

克里斯·理查德森 (Chris Richardson) 十大软件架构师 在博客中把API网关划分为两种, 即

1. 单节点 API 网关

ece13d7f94e3c10ae7f7f95863275ef8.png

2. Backends for frontends 网关(BFF 网关

c96650986437b0bcd5df377d05c08dd4.png

那什么又是BFF层

我们常说的 Node BFF层,并不完全等同于 BFF 网关,它是微服务里面的一个概念,它只具有 BFF 网关的一部分功能(接口聚合),也可以将它称之为聚合层或者适配层

以下所指和我在其他文章所的 BFF层 均是这个定义。

fc50f27bbe0e7baf321804603217a6cf.png

BFF 的使用场景

  • SSR -> 同构
  • 服务接口的聚合、裁剪、透传(GraphQL)

BFF 的利弊

优点

  • 利于前后端解耦
  • 利于多端适配
  • 职能分工明确细化
  • 利于提升前端体验和性能

缺点

  • 增多了数据流链路,不利于排查和定位问题
  • 前端增加了开发工作量
  • 增加了前后端开发人员的技术要求
  • 增加了整体框架的复杂程度

技术预研

Graphql 只是 api 服务的一个方案,这里我只是想顺带尝鲜了解一番,与实践 Node.js 并无太大关系。

  • 模板引擎
  • RPC
  • Graphql

预期目标

使用 Node.js 搭建一个简易的 BFF,支持静态资源服务,SSR,RPC调用后端,Api请求

实践目的

  • 学习如何使用 Node.js 搭建一个可用的 BFF。
  • 熟悉 RPC 调用的模式。
  • 熟悉 Node.js 如何支持 SSR 和 提供接口服务。

实践流程简图

9863bab317942030978d89d2d2cc740b.png

BFF 将请求报文解析后根据路由匹配分发到不同模块进行处理。

graphql api

graphql api 请求先去 schema 中寻找匹配的模型,然后根据模型解析到请求信息后,调用 client 模块建立 socket 链接,完成 RPC 调用后,将获得的数据原路返回。

html 文档请求

需要 SSR 的文档,分别从 views 中找到对应的模板,从 client 的 RPC 调用找到相应数据后,在模板引擎的作用下组成完整的 html 文档,返回给浏览器。

静态资源请求

从设置的静态资源文件夹下找到同名的资源后,读取并返回给浏览器。

项目目录结构

├── SSR                 服务端渲染├── client              RPC 客户端├── protocols           RPC 协议内容├── schema              graphql 接口模型├── server              用 Node.js 模拟的后端├── static              静态资源└── views               视图

源码

  • 源码

转载地址:https://blog.csdn.net/weixin_34164146/article/details/112451601 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:新风系统风速推荐表_PE管还是PVC管?现场评测新风系统两种管道对比
下一篇:可涂抹什么让指纹加深_手机镀膜是什么?液体玻璃手机镀膜和膜结手机纳米防护的区别...

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月10日 02时56分32秒