在微服务架构中,我们可以:
单个API网关,为所有客户提供单一API。
单个API网关提供商,适用于各种客户端的API。
每个客户端API网关,为每个客户端提供API。这是BFF模式。
Netflix使用第二种格式Inside the Netflix API Redesign。我们可以肯定地说,他们已经在他们的架构中创建了一个智能中间件,承担着多重责任。 但是这个单一的API后端可以处理多少工作,似乎它很容易成为一个瓶颈。
所以我的问题是选择单个API来处理超过1000个客户端的请求而不是创建专门为一种类型的客户端设计的API网关有什么好处?他们在管理和维护这件复杂的作品时遇到了很多挑战吗?
答案 0 :(得分:1)
这完全取决于您的最终用户所处的位置(如果是Netflix),则它们具有不同类型的客户端,网络/移动设备/流媒体棒/蓝光播放器/什么没有,而网络(始终更新为最新),移动设备(最终更新为最新版本),例如带有预装应用的Bluray播放器可能永远不会更新。
您必须为每个平台相应地对api进行版本控制,并根据客户端更新周期维护它们,以实现向后兼容性。如果单个api中的变体太多,将很难维护,相反,为每种类型的客户端编写api会更容易。除非您真正需要#3并有足够的资源来为每种类型的客户端开发,否则我不会跳槽,因为您必须为同一目的维护多种api。
我将从#1开始。