微服务架构中的2个重要概念

  1. 网关,Gateway
  2. BFF,Backends for frontends

  3. 静态资源服务

  4. 跨域请求
  5. 缓存
  6. cookie
  7. 认证与授权
  8. 日志
  9. 接口转发
  10. RPC调用后端
    1. 向前端提供 HTTP服务
    2. 向后端进行 RPC通信

BFF模型

服务器模式,eggjs作为真正的后端服务
中间层模式,eggjs不操作数据,数据有后端 Java API提供真实的数据

API网关

api网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。
所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。
通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和管理服务

API网关划分为两种

  1. 单节点 API 网关
  2. Backends for frontends BFF 网关

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

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

单节点 API 网关

image.png

BFF 网关

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

image.png

https://www.jianshu.com/p/c631a4b618d8
https://www.sohu.com/a/209392323_468635
https://www.sohu.com/a/236506677_673711
微服务中的 bff
https://www.pianshen.com/article/62681592310/

egg-bff架构图.svg

BFF的使用场景

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

BFF优点

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

BFF缺点

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