微服务数据库架构
Microservices database architecture
我有一个关于微服务架构的问题
例如,如果我有两个微服务 "UserService" 和 "TaskService"
我的系统有两个 table "USER" 和 "TASK"
的数据库
我们知道微服务规则之一就是每个微服务都有自己的数据库
所以我不知道如何为这两个微服务分配我的数据库?
- 为数据库设置 "UserService" 微服务两个 tables "USER" 和 "TASK"
并为 "TaskService" 微服务的数据库设置两个 table 也 "USER" 和 "TASK"
或
- 为数据库设置为"UserService"微服务table"USER"
并为 "TaskService" 微服务的数据库设置 table "TASK" 但这里的问题是如何 link 这两个 table "USER" 和 "TASK" 因为每个都在不同的数据库中
您必须问自己的第一个问题是,在这种情况下您是否真的需要微服务架构。如果如您所说,该服务只有两个 table,并且两者密切相关(因此两者可能属于同一个限界上下文)。最有可能的答案是否定的。
因为这样你会增加系统的复杂性和延迟。
考虑到这一点,如果你真的需要这个架构,因为真正的应用程序更复杂并且你已经确定这两个服务属于不同的限界上下文,我的意思是它们的功能没有密切相关,方式解决这个问题的方法是每个微服务都拥有自己的数据库 table.
因此用户服务将有自己的 table 以及任务服务。如果用户服务中有一个用例需要任务服务的信息,反之亦然。您可以从源服务向目标服务发出请求以检索此信息,或者如果您确实需要将两个 and/or 分离,您有性能要求,那么解决方案可能是只读 table您需要的其他服务信息,并通过订阅 table 所有者的更改来更新它,例如使用 kafka 或其他消息代理
我有一个关于微服务架构的问题
例如,如果我有两个微服务 "UserService" 和 "TaskService"
我的系统有两个 table "USER" 和 "TASK"
的数据库我们知道微服务规则之一就是每个微服务都有自己的数据库
所以我不知道如何为这两个微服务分配我的数据库?
- 为数据库设置 "UserService" 微服务两个 tables "USER" 和 "TASK"
并为 "TaskService" 微服务的数据库设置两个 table 也 "USER" 和 "TASK"
或
- 为数据库设置为"UserService"微服务table"USER"
并为 "TaskService" 微服务的数据库设置 table "TASK" 但这里的问题是如何 link 这两个 table "USER" 和 "TASK" 因为每个都在不同的数据库中
您必须问自己的第一个问题是,在这种情况下您是否真的需要微服务架构。如果如您所说,该服务只有两个 table,并且两者密切相关(因此两者可能属于同一个限界上下文)。最有可能的答案是否定的。
因为这样你会增加系统的复杂性和延迟。
考虑到这一点,如果你真的需要这个架构,因为真正的应用程序更复杂并且你已经确定这两个服务属于不同的限界上下文,我的意思是它们的功能没有密切相关,方式解决这个问题的方法是每个微服务都拥有自己的数据库 table.
因此用户服务将有自己的 table 以及任务服务。如果用户服务中有一个用例需要任务服务的信息,反之亦然。您可以从源服务向目标服务发出请求以检索此信息,或者如果您确实需要将两个 and/or 分离,您有性能要求,那么解决方案可能是只读 table您需要的其他服务信息,并通过订阅 table 所有者的更改来更新它,例如使用 kafka 或其他消息代理