BFF 架构演进
1. 单体服务
- 单体服务是指一个独立的应用程序,包含了所有的功能和业务逻辑。这种架构方式在小型应用程序中很常见
- 随着应用程序的功能越来越多,代码库也会越来越大,维护起来也会变得更加困难。此外,单体服务的整体复杂度也会增加,这可能导致软件开发周期变长,质量下降,并且系统的扩展性也会受到限制
2. 微服务
- 为了应对这些问题,许多公司开始使用微服务架构。微服务是指将一个大型应用程序拆分成若干个小型服务,每个服务负责执行特定的任务。这种架构方式可以帮助公司更快地开发和部署新功能,并提高系统的可扩展性和可维护性
- 这种方式会有以下问题
- 域名开销增加
- 内部服务器暴露在公网,有安全隐患
- 各个端有大量的个性化需求
数据聚合
某些功能可能需要调用多个微服务进行组合数据裁剪
后端服务返回的数据可能需要过滤掉一些敏感数据数据适配
后端返回的数据可能需要针对不同端进行数据结构的适配,后端返回XML
,但前端需要JSON
数据鉴权
不同的客户端有不同的权限要求
3. BFF
- BFF 是
Backend for Frontend
的缩写,指的是专门为前端应用设计的后端服务 - 主要用来为各个端提供代理数据聚合、裁剪、适配和鉴权服务,方便各个端接入后端服务
- BFF 可以把前端和微服务进行解耦,各自可以独立演进
4. 网关
- API 网关是一种用于在应用程序和 API 之间提供安全访问的中间层
- API 网关还可以用于监控 API 调用,路由请求,以及在请求和响应之间添加附加功能(例如身份验证,缓存,数据转换,压缩、流量控制、限流熔断、防爬虫等)
- 网关和 BFF 可能合二为一
5. 集群化
- 单点服务器可能会存在以下几个问题:
- 单点故障:单点服务器只有一台,如果这台服务器出现故障,整个系统都会停止工作,这会导致服务中断
- 计算能力有限:单点服务器的计算能力是有限的,无法应对大规模的计算需求
- 可扩展性差:单点服务器的扩展能力有限,如果想要提升计算能力,就必须改造或者替换现有的服务器
- 这些问题可以通过采用服务器集群的方式来解决