用户和帖子微服务分离?

Separation of users and posts microservices?

目前我的项目中有一个用户微服务,它处理所有身份验证逻辑并存储用户数据(电子邮件、姓名、简历等)

我的应用程序的功能之一是 posts。我希望 posts 包含在一个单独的微服务中,它将使用一个单独的数据库,只存储用户 ID。但是,这需要进行两次 HTTP 调用:

仅更新​​提要时开销很大。也许值得结合微服务,或者为 posts 和用户使用一个数据库?

正如建筑领域的大多数答案一样 - 没有“正确”的方式,这完全取决于 trade-offs 以及您愿意支付的价格。

例如 - 将要使用的帖子和用户从 2 个不同的服务中分离实际上会导致 HTTP 调用开销,另一方面 - 如果你有 2 个,部署、测试和维护通常会容易得多不同的服务——用户服务的微小变化对帖子应用程序没有影响。如果将它们合并为一项服务 - 您将无法享受这些优势。

作为经验法则(但同样,对于 所有 情况并非如此) - 在微服务中,不同的响应模型通常指示不同的服务(同样 - 易于部署、测试和维护),所以我将用户和帖子服务分开是有意义的。但是,您可以组合的一件事是数据库——您可以将用户和帖子放在同一个数据库中,但当然放在不同的表中。通过这种方式,您仍然在分离模型,但享有在同一存储库中拥有数据的特权(连接表等)。

另外,如果你真的很在意posts服务到users服务的http调用,你可以考虑缓存,这有助于减少调用开销。