我正在创建一个微服务,例如一个用于用户管理的微服务,即(角色、凭据、权限、菜单等)相关,一个用于银行帐户详细信息,现在我有一个从 db 获取用户角色详细信息和权限详细信息的场景,是根据要求在银行账户数据库中重复数据库用户管理数据库 即(角色,权限)列或在银行账户数据库 中重复数据是一种好习惯 吗?
或者不需要在银行账户数据库中复制数据并发送单独的调用以首先从用户管理数据库获取用户数据?
请提出一个最好的可能性
我正在创建一个微服务,例如一个用于用户管理的微服务,即(角色、凭据、权限、菜单等)相关,一个用于银行帐户详细信息,现在我有一个从 db 获取用户角色详细信息和权限详细信息的场景,是根据要求在银行账户数据库中重复数据库用户管理数据库 即(角色,权限)列或在银行账户数据库 中重复数据是一种好习惯 吗?
或者不需要在银行账户数据库中复制数据并发送单独的调用以首先从用户管理数据库获取用户数据?
请提出一个最好的可能性
瓦卡斯,
您处于微服务环境中。有一个著名的领域驱动设计 ( DDD ),它是Bounded Contexts的关键模式之一。这意味着您应该尽量避免混合上下文并在银行账户数据库中复制用户信息(这可能是不可避免的一段时间,但我认为不是您的情况)。
因此,您必须调用用户管理服务才能获得有关用户的所需信息。
我同意@Stepan Tsybulski。另外,我建议您尽可能减少对有界上下文依赖于另一个的需要。因此,数据复制是这里的最佳选择。但是,您不必在银行帐户上下文/数据库中拥有角色和权限。我只会在银行帐户上下文中放入该上下文中必要的内容:用户详细信息(例如姓名、生日等)+ 用户 ID。
您从会话中获得角色和权限。您只能在用户管理上下文中管理角色。它有利于安全性和一致性,而且这也是使用 Contexts 的原因。
有很多方法可以解决问题,但我就是这样做的。