什么是BFF?
BFF(Back-end For Front-end)是老生长谈的中间层概念,就是一层nodejs,能做请求转发和数据转化即可。Nodejs既配合了前端技术栈,也更适应向微服务的并发请求。也可以做成对前Restful、对后RPC的实现;还可以在BFF上加cache、鉴权等等操作,具体可以根据自身需求改造。
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发送和接收消息事件,大大增强了系统的稳定性和可扩展性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。