关于微服务:Backends For Frontends BFFs or API Gateway

Backends For Frontends BFFs or API Gateway

在微服务架构中我们可以:

  • 为所有客户端提供单一 API 的单一 API 网关。

  • 为每种客户端提供 API 的单个 API 网关。

  • 为每个客户端提供 API 的每客户端 API 网关。这是 BFF 模式。

  • Netflix 在 Netflix API 重新设计中使用了第二种风格。我们可以肯定地说,他们在其架构中创建了一个智能中间件,承担了多种职责。
    但是这个单一的 API 后端能处理多少工作,似乎很容易成为瓶颈。

    所以我的问题是,选择单个 API 来处理超过 1000 个客户端的请求,而不是创建专门为一种类型的客户端设计的 API 网关有什么好处?他们在管理和维护这个复杂的部分时是否面临许多挑战?


    这完全取决于您的最终用户在哪里,如果是 Netflix,他们有不同类型的客户端、网络/移动/流媒体棒/蓝光播放器/什么不是,而网络(一直更新到最新)、移动(最终更新到最新版本),例如预装应用程序的蓝光播放器可能永远不会更新。

    您必须为每个平台相应地对您的 api 进行版本控制,并根据客户端更新周期对其进行维护,以实现向后兼容性。如果您在单个 api 中有太多变化,则很难维护,相反,为每种类型的客户端编写一个 api 会更容易。除非您真正需要#3 并且有足够的资源来为每种类型的客户端进行开发,否则我不会跳入其中,因为您必须为同一目的维护许多 api 变体。

    我会从 #1 开始。