目前我的项目中有一个用户微服务,它处理所有的身份验证逻辑并存储用户数据(电子邮件、姓名、生物等)
我的应用程序的功能之一是帖子。我希望帖子包含在一个单独的微服务中,该微服务将使用一个单独的数据库,仅存储用户ID。然而,这需要执行两个HTTP调用:
仅更新提要时开销很大。也许值得合并微服务,或者为帖子和用户使用一个数据库?
正如建筑领域的大多数答案一样——没有“正确”的方式,这一切都是关于权衡和你愿意付出什么。
例如,将帖子和用户从2个不同的服务中分开实际上会导致超文本传输协议调用开销,另一方面,如您所提到的,如果您有2个不同的服务,部署、测试和维护通常会容易得多——用户服务的微小变化对帖子应用程序没有影响。如果您将它们组合到一个服务中——您就无法享受这些优势。
根据经验(但同样,并非所有情况都是如此)——在微服务中,不同响应的模型通常指示不同的服务(同样——易于部署、测试和维护),所以我有必要将用户和帖子服务分开。然而,你可以组合的一件事是数据库——你可以将用户和帖子放在同一个数据库中,但当然是在不同的表中。这样你仍然可以分离模型,但享受将数据放在同一个存储库中的特权(连接表等)。
此外,如果您真的关心从帖子服务到用户服务的超文本传输协议调用,您可以考虑缓存,这将有助于减少调用开销。