微服务数据库架构

Fekair Abdelmadjid:

我对微服务架构有疑问

例如,如果我有两个微服务“ UserService”和“ TaskService”

我有两个表“ USER”和“ TASK”的数据库

我们知道微服务规则之一是每个微服务都有自己的数据库

所以我不知道如何为这两个微服务分配数据库?

  1. 为“ UserService”微服务的数据库设置两个表“ USER”和“ TASK”

并为“ TaskService”微服务的数据库设置两个表,即“ USER”和“ TASK”

要么

  1. 为“ UserService”微服务的数据库设置表“ USER”

并为“ TaskService”微服务的数据库设置表“ TASK”,但是这里的问题是如何链接两个表“ USER”和“ TASK”,因为每个表都在不同的数据库中

贾尔根特:

您必须问自己的第一个问题是,在这种情况下,您是否真的需要微服务架构。如果您说的话,该服务只有两个表,并且两个表密切相关(因此,两个表都可能属于同一个有界上下文)。最可能的答案是“否”。

因为这样,您将为系统增加更多的复杂性和延迟。

考虑到这一点,如果您真的需要这种架构,因为实际的应用程序更复杂,并且您已经确定这两个服务属于不同的有界上下文,那么我的意思是它们的功能并不紧密相关,解决这个问题的方法是每个微服务拥有自己的数据库和表。

因此,用户服务将具有其自己的表以及任务服务。用户服务中是否有需要任务服务信息的用例,反之亦然。您可以从原始服务向目标服务发出请求以检索此信息,或者如果您确实需要将两者分离和/或您对性能有要求,那么解决方案可以是将只读表与您所需要的其他服务信息一起使用需要并通过使用例如kafka或其他消息代理来订阅表所有者的更改来更新它

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章