API是否应该将所有工作委托给其他服务?



假设我们有一个带有多个端点的API服务器,用于服务用户请求。我一直想知道在API服务器中实现逻辑与将逻辑委托给其他微服务之间的权衡是什么。

例如,假设我们想在API调用时从数据库中获取数据。应该数据库查询:

  1. 由API本身执行?
  2. 委托给处理数据库查询的单独微服务?
  3. 委托给比微服务更简单的东西,比如云中的lambda函数?

谢谢你的帮助。

在微服务的情况下,服务本身是自己数据的所有者。这意味着两件事:

  1. 这个服务是唯一可以直接访问自己的数据的应用程序
  2. 如果ServiceB想要对这些数据执行任何操作,它必须通过ServiceA的API(而不是直接通过数据库)来完成

如果ServiceB需要频繁检索数据,并且数据是相当静态的,那么ServiceB可以通过复制实现本地缓存。但真相的来源仍在美国国防部。

微服务横向拆分问题,而您正在讨论的是纵向拆分问题。离岸金融中心。可以将这两种方法结合起来,并在不同的层中使用多个微服务或将其中的一些拆分为更小的服务。这既可以是一个架构决策,也可以是一个扩展决策,所以最好检查一下您期望的负载类型、您需要的响应时间以及您希望在这上面花费多少钱。所以最好不要去解决根本不存在的问题。但也许将来你会拥有它们,或者没有……

最新更新