我需要在系统中注册用户。没有角色,用户就无法存在(如果没有登录名和密码,他肯定无法存在)。管理员应该能够通过选择角色、写入登录名/密码和一些用户信息来添加新用户。登录/密码/安全问题被实现为单独的应用程序/BC(身份验证上下文),角色和权限在授权上下文中,用户信息在单独的帐户管理上下文中。如果所有这些上下文理论上都可以部署在不同的机器上,我该如何实现用户注册过程?现在我正在使用应用程序接口,该接口使用基础设施服务实现以同步和原子方式将所有需要的命令发送到不同的 BC(目前它是同一个大应用程序)。
问问题
419 次
3 回答
2
可能是您的有界上下文的粒度太细了。通常,当您所指的概念在多个有界上下文中是完全相同的事物时,通常会表明这一点。
管理(注册/身份验证/授权)之类的事情User
通常由身份和访问控制有界上下文处理。
这User
将在您的下游有界上下文中具有不同的含义/概念:例如作者、主管等。
但是,如果您确定需要该级别的粒度,那么您将不得不为您的用户选择一个记录系统,并且该有界上下文将拥有该用户并负责流程管理器状态并查看注册到完成;不过,我通常喜欢将我的流程管理本身作为一个有界上下文,并且它可以在其他上下文中进行协调。
至于以原子方式这样做......我不知道这是否一定是明智的尝试:)
于 2017-03-13T10:42:51.317 回答
2
一个简单的架构答案:使用 a Saga
(或 a Process Manager
)来编排所有这些。
您的架构包含三个微服务。集成微服务有两个步骤:Orchestration 和 Choreography。ASaga
使用编排。
阅读更多关于它们之间差异的信息。
更新:
我认为Account management
应该是主BC。用户在这里诞生,最初没有身份验证的角色或意义。然后,它被赋予一个角色、一个目的,然后,在它被设置之后,一个用户名和一个密码。这应该是顺序。
于 2017-03-12T18:18:10.393 回答
0
为此,您需要一个分布式事务服务器。Java 有一个分布式事务(JTA)标准。
于 2017-03-12T16:44:58.380 回答