微服务架构中的2个重要概念
- 网关,Gateway
BFF,Backends for frontends
静态资源服务
- 跨域请求
- 缓存
- cookie
- 认证与授权
- 日志
- 接口转发
- RPC调用后端
- 向前端提供 HTTP服务
- 向后端进行 RPC通信
BFF模型
服务器模式,eggjs作为真正的后端服务
中间层模式,eggjs不操作数据,数据有后端 Java API提供真实的数据
API网关
api网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。
所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。
通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和管理服务
API网关划分为两种
- 单节点 API 网关
- Backends for frontends BFF 网关
克里斯·理查德森 (Chris Richardson) 十大软件架构师 在博客中把API网关划分为以上两种
API网关的作用
作为一个系统的后端总入口,接口聚合、路由转换、安全、限流、缓存、日志、监控、重试、熔断等
单节点 API 网关
BFF 网关
Node BFF层,并不完全等同于 BFF 网关,是微服务里面的一个概念,只具有 BFF 网关的一部分功能(接口聚合),也可以将它称之为聚合层或者适配层
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/
BFF的使用场景
- SSR -> 同构
- 服务接口的聚合、裁剪、透传(GraphQL)
BFF优点
- 利于前后端解耦
- 利于多端适配
- 职能分工明确细化
- 利于提升前端体验和性能
BFF缺点
- 增多了数据流链路,不利于排查和定位问题
- 前端增加了开发工作量
- 增加了前后端开发人员的技术要求
- 增加了整体框架的复杂程度