浅谈BFF (Back-end For Front-end)

什么是BFF?

BFF(Back-end For Front-end)是老生长谈的中间层概念,就是一层nodejs,能做请求转发和数据转化即可。Nodejs既配合了前端技术栈,也更适应向微服务的并发请求。也可以做成对前Restful、对后RPC的实现;还可以在BFF上加cache、鉴权等等操作,具体可以根据自身需求改造。
浅谈BFF (Back-end For Front-end)_第1张图片

BFF优缺点

回顾完前端演化史,我们再来分析BFF利弊。
BFF作为中间层,优点是:

  • 前后端彻底分离,即便是后期有微服务迁移,也不需改动前端代码。
  • 业务更向前靠拢,琐碎的api由前端开发自己决定,更适配前端框架。
  • 留给后端更清晰的服务边界,只需要提供粗粒度的接口即可。

BFF作为中间层,缺点是:

  • 中间层转发会增加请求延迟。
  • 需要保证端到端测试。
  • 必须随时准备好后端异常请求,且要有全链路追踪等一系列容错以及排查的措施。
  • BFF分成会增加开发成本,相关人员培养比较困难。

midway介绍

在我们公司的网控中,BFF层采用了node技术栈,发挥了node的高并发、非阻塞I/O的特点,选用midway.js作为BFF的node框架。

Midway (中途岛) 是淘系架构团队(前淘宝UED)研发的一款面向未来的的 Node.js 框架。在大规模编程和 Serverless 等多种场景中,Midway 通过 TypeScript 和完全自研的依赖注入能力,将用户体验打造到极致。

Midway 2.0 集成了 Serverless 能力,同时扩展了 RPC、Socket、微服务、前后端一体化研发等能力,不同的场景之间可以组合、协作,给用户提供相对灵活又可靠的使用体验。

公司采用midway作为网控系统的中间层,使得网控系统拥有的强大的并发能力,通过pandora.js、node cluster集群等技术大大提升了接入层的性能以及稳定性。BFF与后端采用RPC进行通信,与各个服务之间通过rabbitMQ发送和接收消息事件,大大增强了系统的稳定性和可扩展性。

你可能感兴趣的:(node.js)