我正在寻找一种实用的方法/示例来解决 BFF 模式的延迟问题。虽然定义表明这种模式不会增加延迟,但我很好奇这是如何实现的,并希望深入了解其内部实现。
我认为链接文章提供的定义:
在这种情况下,我们可以使用 BFF 将一些前端逻辑转移到中间层。中间层是BFF。当前端请求一些数据时,它会调用 BFF 中的 API。
BFF 将执行以下操作。
- 调用相关微服务API并获取所需数据
- 根据前端表示格式化数据
- 将格式化数据发送到前端
不允许得出延迟相同的结论。根据定义,它会增加(客户端-服务器通信的单个调用),但与潜在优势相比,在大多数情况下,这种增加是微不足道的。
文章基本说的是一样的:
现在我们知道,BFF 类似于客户端和其他外部 API、服务等之间的代理服务器。如果请求必须经过另一个组件,那么肯定会增加延迟。然而,如果需要使用未针对前端优化的多个服务,则与浏览器的高资源使用率相比,BFF 延迟可以忽略不计。
构建 BFF 可以让您智能地批量调用其他后端/微服务并一次性返回所有数据,或者通过转换和格式化数据来返回更方便的表示形式。
这对于 2G 或 3G 网络上的移动客户端非常有用,因为这些网络可能需要几秒钟(或更长时间)才能建立连接。
因此,虽然单个调用的延迟可能会增加,但使用应用程序的整体体验将会改善(基本上,加载需要多个请求和/或比原始端点提供的数据更少的页面/屏幕的“延迟”将会改善)没有 BFF 的情况)。