首页 > 解决方案 > 微服务设计:一个调用还是两个单独的 API?

问题描述

我有一个执行以下逻辑的单片应用程序:

Get a list A (Customer) from database
Validate data in A using some criteria, if it's not validated, throw an error
Do some operations on A to get a list B (e.g. Regional customers)
Do sth with B

现在我正在使用微服务转换我的应用程序,但我在设计调用时遇到了麻烦。

由于 B 可以完全从 A 推导出来,我只想制作一个getCustomerA返回所有数据集 A 的微服务。这意味着需要单个数据库访问。这将是一个性能优势。

但问题是,在 A 上检索列表 B 的操作也是业务代码的一部分。所以把这些代码放在客户微服务端更合乎逻辑,如果我们遵循领域驱动设计,在微服务中Customer,也许getRegionalCustomer

所以我想知道,在这种情况下最好的做法是什么?我们应该优先考虑单个数据库调用(第一种情况)还是最好进行两次调用(但在这种情况下,是 2 个数据库调用)?

标签: javaapimicroservices

解决方案


由于这主要是基于意见,我只能给你:-)

根据我的经验,将应用程序拆分为微服务只是为了做到这一点,将技术教条置于技术简单性之上,并且经常引入许多不必要的开销。

关于数据库调用,我还可以根据经验告诉你,在执行两个简单的调用而不是执行一个过于复杂的调用时,你通常会赢得性能。特别是如果您开始在许多表上引入大连接或 - 哎哟 -on子句中的子选择。

看看最简单的解决方案是否有效并保持代码整洁。不断提高质量并在需要时进行优化。如果您有一段逻辑需要拆分为微服务(例如,因为您想使用不同的语言、框架或想要卸载一些计算),那么就去做吧。


推荐阅读