微服务 BFF 模式
Microservices BFF pattern
我们正在开发具有基于微服务架构的应用程序,具有如下图所示的以下组件,但不确定 BFF 层应如何构建。
我们目前正在为我们的设计考虑两种选择,但不确定应该推荐哪种方法。
选项 1:网关作为 BFF
选项 2:专用微服务作为 BFF
Gateway 和 BFF(Backend For Frontend)不是一回事:
- 网关/API网关是平台基础设施的一部分。它向客户端公开 API 个端点并调解流量,即身份验证、速率限制等。
- BFF(特别是 API 和支持 API 的 and/or 服务) 是您编写的软件的一部分。 API 部分将位于网关上(根据您的选项 1)。
API 实际调用的内容由您决定。 BFF 的目标基本上意味着需要某种东西以一种对客户端方便的方式将客户端需要的数据集中在一起——即编排,甚至可能是一些缓存。
选项:
- 对于简单的场景,您 可能 能够使用网关上的 API 端点以及网关具有的任何功能在网关本身上执行此操作。
- 对于其他情况,您可能需要实现更实质性的东西 - 例如处理编排的专用服务。
请记住,“API”是一个加载项,具体取决于上下文:
- 有时它仅表示网关上的端点(选项 1)。
- 有时它意味着网关上的端点加上任何服务实现“API”提供的逻辑(选项2)。
在你的情况下,我是说 BFF 可以通过任何一种方式实现。
您可能也对“体验 API”感兴趣,它与 BFF 的想法相似(如果不相同)。
我们正在开发具有基于微服务架构的应用程序,具有如下图所示的以下组件,但不确定 BFF 层应如何构建。 我们目前正在为我们的设计考虑两种选择,但不确定应该推荐哪种方法。
选项 1:网关作为 BFF
选项 2:专用微服务作为 BFF
Gateway 和 BFF(Backend For Frontend)不是一回事:
- 网关/API网关是平台基础设施的一部分。它向客户端公开 API 个端点并调解流量,即身份验证、速率限制等。
- BFF(特别是 API 和支持 API 的 and/or 服务) 是您编写的软件的一部分。 API 部分将位于网关上(根据您的选项 1)。
API 实际调用的内容由您决定。 BFF 的目标基本上意味着需要某种东西以一种对客户端方便的方式将客户端需要的数据集中在一起——即编排,甚至可能是一些缓存。
选项:
- 对于简单的场景,您 可能 能够使用网关上的 API 端点以及网关具有的任何功能在网关本身上执行此操作。
- 对于其他情况,您可能需要实现更实质性的东西 - 例如处理编排的专用服务。
请记住,“API”是一个加载项,具体取决于上下文:
- 有时它仅表示网关上的端点(选项 1)。
- 有时它意味着网关上的端点加上任何服务实现“API”提供的逻辑(选项2)。
在你的情况下,我是说 BFF 可以通过任何一种方式实现。
您可能也对“体验 API”感兴趣,它与 BFF 的想法相似(如果不相同)。